diff --git a/packages/kmod-6.18-nvidia-r595/copy-gdrcopy-open-gpu-kernel-module.service.in b/packages/kmod-6.18-nvidia-r580/copy-gdrcopy-open-gpu-lts-kernel-module.service.in similarity index 72% rename from packages/kmod-6.18-nvidia-r595/copy-gdrcopy-open-gpu-kernel-module.service.in rename to packages/kmod-6.18-nvidia-r580/copy-gdrcopy-open-gpu-lts-kernel-module.service.in index 34d53abb0..4648db65b 100644 --- a/packages/kmod-6.18-nvidia-r595/copy-gdrcopy-open-gpu-kernel-module.service.in +++ b/packages/kmod-6.18-nvidia-r580/copy-gdrcopy-open-gpu-lts-kernel-module.service.in @@ -1,6 +1,8 @@ [Unit] Description=Copy GDRCopy kernel module (open-gpu) RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,7 +13,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-gdrcopy-open-gpu link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-gdrcopy-open-gpu link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/copy-grid-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r580/copy-grid-lts-kernel-modules.service.in similarity index 66% rename from packages/kmod-6.18-nvidia-r580/copy-grid-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r580/copy-grid-lts-kernel-modules.service.in index ee282f2a4..834c4565a 100644 --- a/packages/kmod-6.18-nvidia-r580/copy-grid-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r580/copy-grid-lts-kernel-modules.service.in @@ -1,6 +1,8 @@ [Unit] Description=Copy GRID kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,8 +13,8 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver grid -ExecStart=/usr/bin/driverdog --modules-set nvidia-grid link-modules -ExecStart=/usr/bin/driverdog --modules-set nvidia-grid-copy-only link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-grid link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-grid-copy-only link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/copy-open-gpu-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r580/copy-open-gpu-lts-kernel-modules.service.in similarity index 65% rename from packages/kmod-6.18-nvidia-r595/copy-open-gpu-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r580/copy-open-gpu-lts-kernel-modules.service.in index 041ff55dd..7582f886b 100644 --- a/packages/kmod-6.18-nvidia-r595/copy-open-gpu-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r580/copy-open-gpu-lts-kernel-modules.service.in @@ -1,6 +1,8 @@ [Unit] Description=Copy open GPU kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,8 +13,8 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-open-gpu link-modules -ExecStart=/usr/bin/driverdog --modules-set nvidia-open-gpu-copy-only link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-open-gpu link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-open-gpu-copy-only link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/grid-license-check.service b/packages/kmod-6.18-nvidia-r580/grid-license-check.service index 9f8c509e0..c96fc1bd0 100644 --- a/packages/kmod-6.18-nvidia-r580/grid-license-check.service +++ b/packages/kmod-6.18-nvidia-r580/grid-license-check.service @@ -2,6 +2,8 @@ Description=GRID License Check RefuseManualStart=true RefuseManualStop=true +# Order after the branch overlay so ghostdog/nvidia-smi see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service After=nvidia-gridd.service Requires=nvidia-gridd.service diff --git a/packages/kmod-6.18-nvidia-r580/kmod-6.18-nvidia-r580.spec b/packages/kmod-6.18-nvidia-r580/kmod-6.18-nvidia-r580.spec index 898756ac6..bdc5a99b1 100644 --- a/packages/kmod-6.18-nvidia-r580/kmod-6.18-nvidia-r580.spec +++ b/packages/kmod-6.18-nvidia-r580/kmod-6.18-nvidia-r580.spec @@ -4,6 +4,11 @@ %global tesla_ver %{tesla_major}.%{tesla_minor}.%{tesla_patch} %global grid_ver grid-19.6 %global gdrcopy_ver 2.6 +# Branch name for namespaced multi-driver paths +%global nvidia_branch lts +# Branch-namespaced storage root for files that are overlaid onto canonical paths +# at boot. Resolved to /usr/nvidia/lts +%global nvidia_root %{_cross_prefix}/nvidia/%{nvidia_branch} %if "%{?_cross_arch}" == "aarch64" %global nvidia_arch sbsa %else @@ -68,31 +73,37 @@ Source217: nvidia-imex-tmpfiles.conf Source218: nvidia-imex-default-channel.conf # NVIDIA tesla conf files from 300 to 399 -Source300: nvidia-tesla-tmpfiles.conf -Source301: nvidia-tesla-build-config.toml.in +Source300: nvidia-tesla-lts-tmpfiles.conf +Source301: nvidia-tesla-lts-build-config.toml.in # Driverdog config templates from 400 to 499 -Source400: nvidia-open-gpu-config.toml.in -Source401: nvidia-open-gpu-copy-only-config.toml.in -Source402: nvidia-grid-config.toml.in -Source403: nvidia-grid-copy-only-config.toml.in +Source400: nvidia-open-gpu-lts-config.toml.in +Source401: nvidia-open-gpu-copy-only-lts-config.toml.in +Source402: nvidia-grid-lts-config.toml.in +Source403: nvidia-grid-copy-only-lts-config.toml.in # Systemd service templates from 500 to 599 -Source500: link-tesla-kernel-modules.service.in -Source501: load-tesla-kernel-modules.service.in -Source502: copy-open-gpu-kernel-modules.service.in -Source503: load-open-gpu-kernel-modules.service.in -Source504: copy-grid-kernel-modules.service.in -Source505: load-grid-kernel-modules.service.in - -Source600: nvidia-gdrcopy-open-gpu-config.toml.in -Source601: copy-gdrcopy-open-gpu-kernel-module.service.in -Source602: load-gdrcopy-open-gpu-kernel-module.service.in -Source603: nvidia-gdrcopy-tmpfiles.conf +Source500: link-tesla-lts-kernel-modules.service.in +Source501: load-tesla-lts-kernel-modules.service.in +Source502: copy-open-gpu-lts-kernel-modules.service.in +Source503: load-open-gpu-lts-kernel-modules.service.in +Source504: copy-grid-lts-kernel-modules.service.in +Source505: load-grid-lts-kernel-modules.service.in + +Source600: nvidia-gdrcopy-open-gpu-lts-config.toml.in +Source601: copy-gdrcopy-open-gpu-lts-kernel-module.service.in +Source602: load-gdrcopy-open-gpu-lts-kernel-module.service.in +Source603: nvidia-gdrcopy-lts-tmpfiles.conf # GDRcopy Source700: https://github.com/NVIDIA/gdrcopy/archive/v%{gdrcopy_ver}/gdrcopy-%{gdrcopy_ver}.tar.gz +# Overlay activation units, split by concern: driver (lib/bin/modules) and config +# (/etc). Run unconditionally in a single-driver image; gated per-branch by +# kmod-nvidia-multi in a multi image. +Source800: nvidia-lts-overlay-driver.service +Source801: nvidia-lts-overlay-config.service + Patch001: 0001-makefile-allow-to-use-any-kernel-arch.patch BuildRequires: %{_cross_os}kernel-6.18-devel @@ -105,6 +116,12 @@ Requires: %{name}-grid %endif Requires: %{name}-mps +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch} + +# Refuse to co-install the lts and fb branches without the multi-driver +# meta-package, so a variant that pulls in both fails to resolve. +Conflicts: (%{_cross_os}kmod-6.18-nvidia-fb unless %{_cross_os}kmod-6.18-nvidia-multi) + %description %{summary}. @@ -113,6 +130,7 @@ Summary: NVIDIA fabricmanager config and service files Requires: %{name}-tesla(fabricmanager) Requires: %{_cross_os}nvlsm Requires: %{name}-imex +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-fabricmanager %description fabricmanager %{summary}. @@ -120,6 +138,7 @@ Requires: %{name}-imex %package imex Summary: NVIDIA IMEX config and service files Requires: %{name} +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-imex %description imex %{summary}. @@ -137,6 +156,7 @@ Version: %{tesla_ver} License: MIT AND GPL-2.0-only Requires: %{_cross_os}variant-platform(aws) Requires: %{name} +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-open-gpu %description open-gpu %{summary}. @@ -149,6 +169,7 @@ License: MIT AND GPL-2.0-only AND LicenceRef-NVIDIA-GRID-AWS-EULA Requires: %{_cross_os}variant-platform(aws) Requires: %{name} Requires: %{_cross_os}libstdc++ +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-grid %description grid %{summary}. @@ -162,6 +183,7 @@ Requires: %{_cross_os}variant-platform(aws) Requires: %{name} Requires: %{name}-fabricmanager Provides: %{name}-tesla(fabricmanager) +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-tesla %description tesla %{summary} @@ -169,6 +191,7 @@ Provides: %{name}-tesla(fabricmanager) %package mps Summary: NVIDIA CUDA Multi-Process Service Requires: %{name} +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-mps %description mps %{summary}. @@ -177,6 +200,7 @@ Requires: %{name} Summary: NVIDIA GDRCopy driver Version: %{gdrcopy_ver} License: MIT AND GPL-2.0-only +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-gdrcopy Requires: %{_cross_os}variant-platform(aws) Requires: %{name} @@ -312,12 +336,12 @@ mv gdrdrv.ko ../../gdrdrv-open-gpu.ko popd %install -install -d %{buildroot}%{_cross_libdir} -install -d %{buildroot}%{_cross_libdir}/nvidia/tesla +install -d %{buildroot}%{nvidia_root}/lib64 +install -d %{buildroot}%{nvidia_root}/lib64/tesla install -d %{buildroot}%{_cross_tmpfilesdir} install -d %{buildroot}%{_cross_unitdir} install -d %{buildroot}%{_cross_sysusersdir} -install -d %{buildroot}%{_cross_bindir} +install -d %{buildroot}%{nvidia_root}/bin sed \ -e "s|__KERNEL_VERSION__|%{kernel_major}|" \ @@ -330,143 +354,144 @@ install -p -m 0644 %{S:202} %{buildroot}%{_cross_libdir}/modules-load.d/nvidia-d # NVIDIA fabric manager service unit and config install -p -m 0644 %{S:203} %{buildroot}%{_cross_unitdir} -install -d %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia +install -d %{buildroot}%{nvidia_root}/etc-nvidia install -d %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -install -p -m 0644 %{S:204} %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.cfg -install -p -m 0644 %{S:207} %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.env +install -p -m 0644 %{S:204} %{buildroot}%{nvidia_root}/etc-nvidia/fabricmanager.cfg +install -p -m 0644 %{S:207} %{buildroot}%{nvidia_root}/etc-nvidia/fabricmanager.env # Begin NVIDIA tesla driver pushd NVIDIA-Linux-%{_cross_arch}-%{tesla_ver} # Proprietary driver -install -d %{buildroot}%{_cross_bindir} -install -d %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin -install -d %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install -d %{buildroot}%{_cross_factorydir}/nvidia/tesla -install -d %{buildroot}%{_cross_factorydir}/nvidia/open-gpu +install -d %{buildroot}%{nvidia_root}/bin +install -d %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin +install -d %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install -d %{buildroot}%{_cross_factorydir}/nvidia/%{nvidia_branch}/tesla +install -d %{buildroot}%{_cross_factorydir}/nvidia/%{nvidia_branch}/open-gpu %if "%{_cross_arch}" == "x86_64" -install -d %{buildroot}%{_cross_factorydir}/nvidia/grid +install -d %{buildroot}%{_cross_factorydir}/nvidia/%{nvidia_branch}/grid %endif -install -d %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers - -install -m 0644 %{S:300} %{buildroot}%{_cross_tmpfilesdir}/nvidia-tesla.conf -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/tesla/module-objects.d/|' %{S:301} > \ - nvidia-tesla.toml -install -m 0644 nvidia-tesla.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/open-gpu/drivers/|' %{S:400} > \ - nvidia-open-gpu.toml -install -m 0644 nvidia-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/open-gpu/drivers/|' %{S:401} > \ - nvidia-open-gpu-copy-only.toml -install -m 0644 nvidia-open-gpu-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +install -d %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers + +install -m 0644 %{S:300} %{buildroot}%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-tesla.conf + +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/tesla/module-objects.d/|' %{S:301} > \ + nvidia-%{nvidia_branch}-tesla.toml +install -m 0644 nvidia-%{nvidia_branch}-tesla.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/open-gpu/drivers/|' %{S:400} > \ + nvidia-%{nvidia_branch}-open-gpu.toml +install -m 0644 nvidia-%{nvidia_branch}-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/open-gpu/drivers/|' %{S:401} > \ + nvidia-%{nvidia_branch}-open-gpu-copy-only.toml +install -m 0644 nvidia-%{nvidia_branch}-open-gpu-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers %if "%{_cross_arch}" == "x86_64" -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/grid/drivers/|' %{S:402} > \ - nvidia-grid.toml -install -m 0644 nvidia-grid.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/grid/drivers/|' %{S:403} > \ - nvidia-grid-copy-only.toml -install -m 0644 nvidia-grid-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/grid/drivers/|' %{S:402} > \ + nvidia-%{nvidia_branch}-grid.toml +install -m 0644 nvidia-%{nvidia_branch}-grid.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/grid/drivers/|' %{S:403} > \ + nvidia-%{nvidia_branch}-grid-copy-only.toml +install -m 0644 nvidia-%{nvidia_branch}-grid-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers %endif # Services to link/copy/load modules -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:500} > link-tesla-kernel-modules.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:501} > load-tesla-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:500} > nvidia-%{nvidia_branch}-link-tesla-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:501} > nvidia-%{nvidia_branch}-load-tesla-kernel-modules.service install -p -m 0644 \ - link-tesla-kernel-modules.service \ - load-tesla-kernel-modules.service \ + nvidia-%{nvidia_branch}-link-tesla-kernel-modules.service \ + nvidia-%{nvidia_branch}-load-tesla-kernel-modules.service \ %{buildroot}%{_cross_unitdir} -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:502} > copy-open-gpu-kernel-modules.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:503} > load-open-gpu-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:502} > nvidia-%{nvidia_branch}-copy-open-gpu-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:503} > nvidia-%{nvidia_branch}-load-open-gpu-kernel-modules.service install -p -m 0644 \ - copy-open-gpu-kernel-modules.service \ - load-open-gpu-kernel-modules.service \ + nvidia-%{nvidia_branch}-copy-open-gpu-kernel-modules.service \ + nvidia-%{nvidia_branch}-load-open-gpu-kernel-modules.service \ %{buildroot}%{_cross_unitdir} %if "%{_cross_arch}" == "x86_64" -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:504} > copy-grid-kernel-modules.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:505} > load-grid-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:504} > nvidia-%{nvidia_branch}-copy-grid-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:505} > nvidia-%{nvidia_branch}-load-grid-kernel-modules.service install -p -m 0644 \ - copy-grid-kernel-modules.service \ - load-grid-kernel-modules.service \ + nvidia-%{nvidia_branch}-copy-grid-kernel-modules.service \ + nvidia-%{nvidia_branch}-load-grid-kernel-modules.service \ %{buildroot}%{_cross_unitdir} %endif # proprietary driver -install kernel/nvidia.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia/nv-interface.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia/nv-kernel.o_binary %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-kernel.o +install kernel/nvidia.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia/nv-interface.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia/nv-kernel.o_binary %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-kernel.o # module-common object -install kernel/.module-common.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d/.module-common.o +install kernel/.module-common.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d/.module-common.o # uvm -install kernel/nvidia-uvm.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-uvm.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-uvm.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-uvm.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d # modeset -install kernel/nvidia-modeset.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-modeset/nv-modeset-interface.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-modeset/nv-modeset-kernel.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-modeset.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-modeset/nv-modeset-interface.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-modeset/nv-modeset-kernel.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d # peermem -install kernel/nvidia-peermem.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-peermem/nvidia-peermem.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-peermem.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-peermem/nvidia-peermem.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d # drm -install kernel/nvidia-drm.mod.o %{buildroot}/%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-drm.o %{buildroot}/%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-drm.mod.o %{buildroot}/%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-drm.o %{buildroot}/%{nvidia_root}/share-nvidia/tesla/module-objects.d # open driver -install -d %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ -install kernel-open/nvidia.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ - -# add various vulkan icd/config -install -d %{buildroot}%{_cross_datadir}/vulkan/icd.d -install -d %{buildroot}%{_cross_datadir}/vulkan/implicit_layer.d -install -m 0644 nvidia_icd.json %{buildroot}%{_cross_datadir}/vulkan/icd.d/nvidia_icd.json -install -m 0644 nvidia_layers.json %{buildroot}%{_cross_datadir}/vulkan/icd.d/nvidia_layers.json -install -d %{buildroot}%{_cross_datadir}/glvnd/egl_vendor.d -install -m 0644 10_nvidia.json %{buildroot}%{_cross_datadir}/glvnd/egl_vendor.d/10_nvidia.json -install -d %{buildroot}%{_cross_datadir}/egl/egl_external_platform.d -install -m 0644 10_nvidia_wayland.json %{buildroot}%{_cross_datadir}/egl/egl_external_platform.d/10_nvidia_wayland.json -install -m 0644 15_nvidia_gbm.json %{buildroot}%{_cross_datadir}/egl/egl_external_platform.d/15_nvidia_gbm.json -ln -rs %{buildroot}%{_cross_datadir}/vulkan/icd.d/nvidia_layers.json %{buildroot}%{_cross_datadir}/vulkan/implicit_layer.d/nvidia_layers.json +install -d %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ +install kernel-open/nvidia.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ + +# add various vulkan icd/config under a branch-namespaced subdir +install -d %{buildroot}%{nvidia_root}/share-vulkan/icd.d +install -d %{buildroot}%{nvidia_root}/share-vulkan/implicit_layer.d +install -m 0644 nvidia_icd.json %{buildroot}%{nvidia_root}/share-vulkan/icd.d/nvidia_icd.json +install -m 0644 nvidia_layers.json %{buildroot}%{nvidia_root}/share-vulkan/icd.d/nvidia_layers.json +install -d %{buildroot}%{nvidia_root}/share-glvnd/egl_vendor.d +install -m 0644 10_nvidia.json %{buildroot}%{nvidia_root}/share-glvnd/egl_vendor.d/10_nvidia.json +install -d %{buildroot}%{nvidia_root}/share-egl/egl_external_platform.d +install -m 0644 10_nvidia_wayland.json %{buildroot}%{nvidia_root}/share-egl/egl_external_platform.d/10_nvidia_wayland.json +install -m 0644 15_nvidia_gbm.json %{buildroot}%{nvidia_root}/share-egl/egl_external_platform.d/15_nvidia_gbm.json +ln -rs %{buildroot}%{nvidia_root}/share-vulkan/icd.d/nvidia_layers.json %{buildroot}%{nvidia_root}/share-vulkan/implicit_layer.d/nvidia_layers.json # uvm -install kernel-open/nvidia-uvm.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-uvm.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # modeset -install kernel-open/nvidia-modeset.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-modeset.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # peermem -install kernel-open/nvidia-peermem.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-peermem.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # drm -install kernel-open/nvidia-drm.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-drm.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # end open driver %if "%{_cross_arch}" == "x86_64" # GRID driver pushd ../NVIDIA-Linux-x86_64-%{tesla_ver}-grid-aws -install -d %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ -install kernel-open/nvidia.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install -d %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ +install kernel-open/nvidia.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # uvm -install kernel-open/nvidia-uvm.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-uvm.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # modeset -install kernel-open/nvidia-modeset.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-modeset.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # peermem -install kernel-open/nvidia-peermem.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-peermem.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # drm -install kernel-open/nvidia-drm.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-drm.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # Install nvidia-gridd and related files -install -m 755 nvidia-gridd %{buildroot}%{_cross_bindir}/nvidia-gridd -install -m 644 %{S:208} %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/gridd.conf +install -m 755 nvidia-gridd %{buildroot}%{nvidia_root}/bin/nvidia-gridd +install -m 644 %{S:208} %{buildroot}%{nvidia_root}/etc-nvidia/gridd.conf install -p -m 0644 %{S:209} %{S:210} %{S:211} %{S:212} %{S:213} %{buildroot}%{_cross_unitdir} install -d %{buildroot}%{_cross_unitdir}/nvidia-k8s-device-plugin.service.d install -p -m 0644 %{S:214} %{buildroot}%{_cross_unitdir}/nvidia-k8s-device-plugin.service.d @@ -475,21 +500,21 @@ popd %endif # Binaries -install -m 755 nvidia-smi %{buildroot}%{_cross_bindir} -install -m 755 nvidia-debugdump %{buildroot}%{_cross_bindir} -install -m 755 nvidia-cuda-mps-control %{buildroot}%{_cross_bindir} -install -m 755 nvidia-cuda-mps-server %{buildroot}%{_cross_bindir} -install -m 755 nvidia-persistenced %{buildroot}%{_cross_bindir} -install -m 4755 nvidia-modprobe %{buildroot}%{_cross_bindir} -install -m 755 nvoptix.bin %{buildroot}%{_cross_datadir}/nvidia/ -ln -rs %{buildroot}%{_cross_bindir}/nvidia-smi %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-smi -ln -rs %{buildroot}%{_cross_bindir}/nvidia-debugdump %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-debugdump -ln -rs %{buildroot}%{_cross_bindir}/nvidia-cuda-mps-control %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-control -ln -rs %{buildroot}%{_cross_bindir}/nvidia-cuda-mps-server %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-server -ln -rs %{buildroot}%{_cross_bindir}/nvidia-persistenced %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-persistenced +install -m 755 nvidia-smi %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-debugdump %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-cuda-mps-control %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-cuda-mps-server %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-persistenced %{buildroot}%{nvidia_root}/bin +install -m 4755 nvidia-modprobe %{buildroot}%{nvidia_root}/bin +install -m 755 nvoptix.bin %{buildroot}%{nvidia_root}/share-nvidia/ +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-smi %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-smi +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-debugdump %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-debugdump +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-cuda-mps-control %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-control +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-cuda-mps-server %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-server +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-persistenced %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-persistenced %if "%{_cross_arch}" == "x86_64" -install -m 755 nvidia-ngx-updater %{buildroot}%{_cross_bindir} -ln -rs %{buildroot}%{_cross_bindir}/nvidia-ngx-updater %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-ngx-updater +install -m 755 nvidia-ngx-updater %{buildroot}%{nvidia_root}/bin +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-ngx-updater %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-ngx-updater %endif # Users @@ -500,7 +525,7 @@ install -m 0644 %{S:206} %{buildroot}%{_cross_unitdir} # We install all the libraries, and filter them out in the 'files' section, # so we can catch when new libraries are added -install -m 755 *.so* %{buildroot}/%{_cross_libdir}/ +install -m 755 *.so* %{buildroot}/%{nvidia_root}/lib64/ # This library has the same SONAME as libEGL.so.1.1.0, this will cause # collisions while the symlinks are created. For now, we only symlink @@ -510,11 +535,11 @@ EXCLUDED_LIBS="libEGL.so.%{tesla_ver}" for lib in $(find . -maxdepth 1 -type f -name 'lib*.so.*' -printf '%%P\n'); do [[ "${EXCLUDED_LIBS}" =~ "${lib}" ]] && continue # Create backwards-compatibility symlink in nvidia/tesla/ - ln -rs "%{buildroot}/%{_cross_libdir}/${lib}" "%{buildroot}/%{_cross_libdir}/nvidia/tesla/${lib}" + ln -rs "%{buildroot}/%{nvidia_root}/lib64/${lib}" "%{buildroot}/%{nvidia_root}/lib64/tesla/${lib}" soname="$(%{_cross_target}-readelf -d "${lib}" | awk '/SONAME/{print $5}' | tr -d '[]')" [ -n "${soname}" ] || continue [ "${lib}" == "${soname}" ] && continue - ln -s "${lib}" %{buildroot}/%{_cross_libdir}/"${soname}" + ln -s "${lib}" %{buildroot}/%{nvidia_root}/lib64/"${soname}" done # Include the firmware file for GSP support @@ -524,163 +549,194 @@ install -p -m 0644 firmware/gsp_tu10x.bin %{buildroot}%{_cross_libdir}/firmware/ # Include the open driver supported devices file for runtime matching of the # driver. This is consumed by ghostdog to match the driver to this list -install -p -m 0644 supported-gpus/open-gpu-supported-devices.json %{buildroot}%{_cross_datadir}/nvidia/open-gpu-supported-devices.json +install -p -m 0644 supported-gpus/open-gpu-supported-devices.json %{buildroot}%{nvidia_root}/share-nvidia/open-gpu-supported-devices.json popd # Begin NVIDIA fabric manager binaries and topologies pushd fabricmanager-linux-%{nvidia_arch}-%{tesla_ver}-archive -install -p -m 0755 usr/bin/nv-fabricmanager %{buildroot}%{_cross_bindir} -install -p -m 0755 usr/bin/nvswitch-audit %{buildroot}%{_cross_bindir} -ln -rs %{buildroot}%{_cross_bindir}/nv-fabricmanager %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nv-fabricmanager -ln -rs %{buildroot}%{_cross_bindir}/nvswitch-audit %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvswitch-audit +install -p -m 0755 usr/bin/nv-fabricmanager %{buildroot}%{nvidia_root}/bin +install -p -m 0755 usr/bin/nvswitch-audit %{buildroot}%{nvidia_root}/bin +ln -rs %{buildroot}%{nvidia_root}/bin/nv-fabricmanager %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nv-fabricmanager +ln -rs %{buildroot}%{nvidia_root}/bin/nvswitch-audit %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvswitch-audit -install -d %{buildroot}%{_cross_datadir}/nvidia/tesla/nvswitch +install -d %{buildroot}%{nvidia_root}/share-nvidia/tesla/nvswitch for t in usr/share/nvidia/nvswitch/*_topology ; do - install -p -m 0644 "${t}" %{buildroot}%{_cross_datadir}/nvidia/tesla/nvswitch + install -p -m 0644 "${t}" %{buildroot}%{nvidia_root}/share-nvidia/tesla/nvswitch done popd # Begin IMEX binaries and configuration files pushd imex-%{nvidia_arch}-%{tesla_ver}-archive -install -p -m 0755 usr/bin/nvidia-imex %{buildroot}%{_cross_bindir} -install -p -m 0755 usr/bin/nvidia-imex-ctl %{buildroot}%{_cross_bindir} +install -p -m 0755 usr/bin/nvidia-imex %{buildroot}%{nvidia_root}/bin +install -p -m 0755 usr/bin/nvidia-imex-ctl %{buildroot}%{nvidia_root}/bin popd # NVIDIA IMEX service, config, and tmpfiles install -p -m 0644 %{S:215} %{buildroot}%{_cross_unitdir} -install -d %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia-imex -install -p -m 0644 %{S:216} %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia-imex/config.cfg +install -d %{buildroot}%{nvidia_root}/etc-nvidia-imex +install -p -m 0644 %{S:216} %{buildroot}%{nvidia_root}/etc-nvidia-imex/config.cfg install -p -m 0644 %{S:217} %{buildroot}%{_cross_tmpfilesdir}/nvidia-imex.conf # NVIDIA IMEX modprobe config install -d %{buildroot}%{_cross_libdir}/modprobe.d install -p -m 0644 %{S:218} %{buildroot}%{_cross_libdir}/modprobe.d/10-nvidia-default-imex-channel.conf -install -d %{buildroot}%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers +install -d %{buildroot}%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers install -p -m 0644 gdrcopy-%{gdrcopy_ver}/gdrdrv-open-gpu.ko \ - %{buildroot}%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko + %{buildroot}%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko install -p -m 0644 gdrcopy-%{gdrcopy_ver}/LICENSE gdrcopy-LICENSE -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers/|' %{S:600} > \ - nvidia-gdrcopy-open-gpu.toml -install -m 0644 nvidia-gdrcopy-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers/|' %{S:600} > \ + nvidia-%{nvidia_branch}-gdrcopy-open-gpu.toml +install -m 0644 nvidia-%{nvidia_branch}-gdrcopy-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:601} > copy-gdrcopy-open-gpu-kernel-module.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:602} > load-gdrcopy-open-gpu-kernel-module.service +sed -e 's|PREFIX|%{_cross_prefix}|g' \ + %{S:601} > nvidia-%{nvidia_branch}-copy-gdrcopy-open-gpu-kernel-module.service +sed -e 's|PREFIX|%{_cross_prefix}|g' \ + %{S:602} > nvidia-%{nvidia_branch}-load-gdrcopy-open-gpu-kernel-module.service install -p -m 0644 \ - copy-gdrcopy-open-gpu-kernel-module.service \ - load-gdrcopy-open-gpu-kernel-module.service \ + nvidia-%{nvidia_branch}-copy-gdrcopy-open-gpu-kernel-module.service \ + nvidia-%{nvidia_branch}-load-gdrcopy-open-gpu-kernel-module.service \ %{buildroot}%{_cross_unitdir} -install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.conf +install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-gdrcopy.conf + +# Overlay activation services +install -p -m 0644 %{S:800} %{buildroot}%{_cross_unitdir}/nvidia-lts-overlay-driver.service +install -p -m 0644 %{S:801} %{buildroot}%{_cross_unitdir}/nvidia-lts-overlay-config.service + +# Canonical overlay mountpoints. The branch files now live under %{nvidia_root}; +# these empty directories are the targets the overlay service mounts onto, and +# must exist in the image or the mount fails. (/usr/lib64 and /usr/bin already +# exist in the base OS, so only the /usr/share/* targets are created here.) +install -d %{buildroot}%{_cross_datadir}/nvidia +install -d %{buildroot}%{_cross_datadir}/vulkan +install -d %{buildroot}%{_cross_datadir}/glvnd +install -d %{buildroot}%{_cross_datadir}/egl %files %{_cross_attribution_file} %dir %{_cross_libexecdir}/nvidia -%dir %{_cross_libdir}/nvidia -%dir %{_cross_libdir}/nvidia/tesla -%{_cross_libdir}/nvidia/tesla/* +# Branch-namespaced storage root (overlaid onto canonical paths at boot) +%dir %{_cross_prefix}/nvidia +%dir %{nvidia_root} +%dir %{nvidia_root}/lib64 +%dir %{nvidia_root}/lib64/tesla +%{nvidia_root}/lib64/tesla/* +# Canonical overlay mountpoint (empty; overlay service mounts the branch here) %dir %{_cross_datadir}/nvidia %dir %{_cross_libdir}/modules-load.d +# Flat, shared /etc/drivers factory dir (both branches ship branch-named tomls +# here; %dir is non-%%-exclusive so co-owning it across branches is fine). %dir %{_cross_factorydir}%{_cross_sysconfdir}/drivers -%dir %{_cross_factorydir}%{_cross_sysconfdir}/nvidia +# Base package owns the etc-nvidia storage dirs so the overlay service's lowerdirs +# always exist even when the fabricmanager/grid/imex subpackages are absent. +%dir %{nvidia_root}/etc-nvidia +%dir %{nvidia_root}/etc-nvidia-imex %{_cross_tmpfilesdir}/nvidia.conf %{_cross_libdir}/modules-load.d/nvidia-dependencies.conf +# Overlay activation services +%{_cross_unitdir}/nvidia-lts-overlay-driver.service +%{_cross_unitdir}/nvidia-lts-overlay-config.service + %files tesla %license NVidiaEULAforAWS.pdf %license fabricmanager-linux-%{nvidia_arch}-%{tesla_ver}-archive/usr/share/licenses/nvidia-fabricmanager/third-party-notices.txt %dir %{_cross_datadir}/egl -%dir %{_cross_datadir}/egl/egl_external_platform.d +%dir %{nvidia_root}/share-egl +%dir %{nvidia_root}/share-egl/egl_external_platform.d %dir %{_cross_datadir}/glvnd -%dir %{_cross_datadir}/glvnd/egl_vendor.d -%dir %{_cross_datadir}/nvidia/tesla -%dir %{_cross_datadir}/nvidia/tesla/module-objects.d +%dir %{nvidia_root}/share-glvnd +%dir %{nvidia_root}/share-glvnd/egl_vendor.d +%dir %{nvidia_root}/share-nvidia/tesla +%dir %{nvidia_root}/share-nvidia/tesla/module-objects.d %dir %{_cross_datadir}/vulkan -%dir %{_cross_datadir}/vulkan/icd.d -%dir %{_cross_datadir}/vulkan/implicit_layer.d -%dir %{_cross_factorydir}/nvidia/tesla +%dir %{nvidia_root}/share-vulkan +%dir %{nvidia_root}/share-vulkan/icd.d +%dir %{nvidia_root}/share-vulkan/implicit_layer.d +%dir %{_cross_factorydir}/nvidia/%{nvidia_branch}/tesla %dir %{_cross_libdir}/firmware/nvidia/%{tesla_ver} -%dir %{_cross_libexecdir}/nvidia/tesla/bin +%dir %{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin -# Service files for link/copy/loading drivers -%{_cross_unitdir}/link-tesla-kernel-modules.service -%{_cross_unitdir}/load-tesla-kernel-modules.service -%{_cross_unitdir}/copy-open-gpu-kernel-modules.service -%{_cross_unitdir}/load-open-gpu-kernel-modules.service +# Service files for link/copy/loading drivers (branch-namespaced filenames) +%{_cross_unitdir}/nvidia-%{nvidia_branch}-link-tesla-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-tesla-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-copy-open-gpu-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-open-gpu-kernel-modules.service %if "%{_cross_arch}" == "x86_64" -%{_cross_unitdir}/copy-grid-kernel-modules.service -%{_cross_unitdir}/load-grid-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-copy-grid-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-grid-kernel-modules.service %endif # Binaries -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-debugdump -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-smi -%{_cross_libexecdir}/nvidia/tesla/bin/nv-fabricmanager -%{_cross_libexecdir}/nvidia/tesla/bin/nvswitch-audit -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-persistenced -%{_cross_bindir}/nvidia-debugdump -%{_cross_bindir}/nvidia-smi -%{_cross_bindir}/nv-fabricmanager -%{_cross_bindir}/nvswitch-audit -%{_cross_bindir}/nvidia-persistenced -%{_cross_bindir}/nvidia-modprobe +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-debugdump +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-smi +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nv-fabricmanager +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvswitch-audit +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-persistenced +%{nvidia_root}/bin/nvidia-debugdump +%{nvidia_root}/bin/nvidia-smi +%{nvidia_root}/bin/nv-fabricmanager +%{nvidia_root}/bin/nvswitch-audit +%{nvidia_root}/bin/nvidia-persistenced +%{nvidia_root}/bin/nvidia-modprobe # nvswitch topologies -%dir %{_cross_datadir}/nvidia/tesla/nvswitch -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxa100_hgxa100_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgx2_hgx2_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxh100_hgxh100_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxh800_hgxh800_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxgh200_hgxgh200_16gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxgh200_hgxgh200_32gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxgh200_hgxgh200_8gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl36r1_c2g2_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl36r1_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl4r1_c2g2_etf_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl576r16_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl72r1_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl72r2_c2g2_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl72r2_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_nso_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb300_nvl72r1_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb300_nvl72r2_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gh200_nvlink_32gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/mgxh20_nvl16_topology +%dir %{nvidia_root}/share-nvidia/tesla/nvswitch +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxa100_hgxa100_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgx2_hgx2_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxh100_hgxh100_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxh800_hgxh800_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxgh200_hgxgh200_16gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxgh200_hgxgh200_32gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxgh200_hgxgh200_8gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl36r1_c2g2_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl36r1_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl4r1_c2g2_etf_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl576r16_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl72r1_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl72r2_c2g2_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl72r2_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_nso_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb300_nvl72r1_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb300_nvl72r2_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gh200_nvlink_32gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/mgxh20_nvl16_topology # Configuration files -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-tesla.toml -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-open-gpu.toml -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-open-gpu-copy-only.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-tesla.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-open-gpu.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-open-gpu-copy-only.toml %if "%{_cross_arch}" == "x86_64" -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-grid.toml -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-grid-copy-only.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-grid.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-grid-copy-only.toml %endif -%{_cross_datadir}/nvidia/open-gpu-supported-devices.json +%{nvidia_root}/share-nvidia/open-gpu-supported-devices.json # driver -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia.mod.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-interface.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-kernel.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/.module-common.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia.mod.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-interface.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-kernel.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/.module-common.o # uvm -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-uvm.mod.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-uvm.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-uvm.mod.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-uvm.o # modeset -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-modeset-interface.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-modeset-kernel.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-modeset.mod.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-modeset-interface.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-modeset-kernel.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-modeset.mod.o # tmpfiles -%{_cross_tmpfilesdir}/nvidia-tesla.conf +%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-tesla.conf # sysuser files %{_cross_sysusersdir}/nvidia.conf @@ -688,96 +744,97 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con # systemd units %{_cross_unitdir}/nvidia-persistenced.service -# ICD / vendor descriptors -%{_cross_datadir}/vulkan/icd.d/nvidia_icd.json -%{_cross_datadir}/vulkan/icd.d/nvidia_layers.json -%{_cross_datadir}/vulkan/implicit_layer.d/nvidia_layers.json -%{_cross_datadir}/glvnd/egl_vendor.d/10_nvidia.json -%{_cross_datadir}/egl/egl_external_platform.d/10_nvidia_wayland.json -%{_cross_datadir}/egl/egl_external_platform.d/15_nvidia_gbm.json +# ICD / vendor descriptors (branch-namespaced; overlaid onto the canonical path +# by nvidia-lts-overlay-driver.service) +%{nvidia_root}/share-vulkan/icd.d/nvidia_icd.json +%{nvidia_root}/share-vulkan/icd.d/nvidia_layers.json +%{nvidia_root}/share-vulkan/implicit_layer.d/nvidia_layers.json +%{nvidia_root}/share-glvnd/egl_vendor.d/10_nvidia.json +%{nvidia_root}/share-egl/egl_external_platform.d/10_nvidia_wayland.json +%{nvidia_root}/share-egl/egl_external_platform.d/15_nvidia_gbm.json # We only install the libraries required by all the DRIVER_CAPABILITIES, described here: # https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html#driver-capabilities # Utility libs -%{_cross_libdir}/libnvidia-api.so.1 -%{_cross_libdir}/libnvidia-ml.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-ml.so.1 -%{_cross_libdir}/libnvidia-cfg.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-cfg.so.1 -%{_cross_libdir}/libnvidia-nvvm.so.4 -%{_cross_libdir}/libnvidia-nvvm.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-nvvm70.so.4 +%{nvidia_root}/lib64/libnvidia-api.so.1 +%{nvidia_root}/lib64/libnvidia-ml.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-ml.so.1 +%{nvidia_root}/lib64/libnvidia-cfg.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-cfg.so.1 +%{nvidia_root}/lib64/libnvidia-nvvm.so.4 +%{nvidia_root}/lib64/libnvidia-nvvm.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-nvvm70.so.4 # Compute libs -%{_cross_libdir}/libcuda.so.%{tesla_ver} -%{_cross_libdir}/libcuda.so.1 -%{_cross_libdir}/libcudadebugger.so.%{tesla_ver} -%{_cross_libdir}/libcudadebugger.so.1 -%{_cross_libdir}/libnvidia-opencl.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-opencl.so.1 -%{_cross_libdir}/libnvidia-ptxjitcompiler.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-ptxjitcompiler.so.1 -%{_cross_libdir}/libnvidia-allocator.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-allocator.so.1 -%{_cross_libdir}/libOpenCL.so.1.0.0 -%{_cross_libdir}/libOpenCL.so.1 -%{_cross_libdir}/libnvidia-gpucomp.so.%{tesla_ver} +%{nvidia_root}/lib64/libcuda.so.%{tesla_ver} +%{nvidia_root}/lib64/libcuda.so.1 +%{nvidia_root}/lib64/libcudadebugger.so.%{tesla_ver} +%{nvidia_root}/lib64/libcudadebugger.so.1 +%{nvidia_root}/lib64/libnvidia-opencl.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-opencl.so.1 +%{nvidia_root}/lib64/libnvidia-ptxjitcompiler.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-ptxjitcompiler.so.1 +%{nvidia_root}/lib64/libnvidia-allocator.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-allocator.so.1 +%{nvidia_root}/lib64/libOpenCL.so.1.0.0 +%{nvidia_root}/lib64/libOpenCL.so.1 +%{nvidia_root}/lib64/libnvidia-gpucomp.so.%{tesla_ver} %if "%{_cross_arch}" == "x86_64" -%{_cross_libdir}/libnvidia-pkcs11.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-pkcs11-openssl3.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-pkcs11.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-pkcs11-openssl3.so.%{tesla_ver} %endif # Video libs -%{_cross_libdir}/libvdpau_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libvdpau_nvidia.so.1 -%{_cross_libdir}/libnvidia-encode.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-encode.so.1 -%{_cross_libdir}/libnvidia-opticalflow.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-opticalflow.so.1 -%{_cross_libdir}/libnvcuvid.so.%{tesla_ver} -%{_cross_libdir}/libnvcuvid.so.1 +%{nvidia_root}/lib64/libvdpau_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libvdpau_nvidia.so.1 +%{nvidia_root}/lib64/libnvidia-encode.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-encode.so.1 +%{nvidia_root}/lib64/libnvidia-opticalflow.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-opticalflow.so.1 +%{nvidia_root}/lib64/libnvcuvid.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvcuvid.so.1 # Graphics libs -%{_cross_libdir}/libnvidia-eglcore.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-glcore.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-tls.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-glsi.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-rtcore.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-fbc.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-fbc.so.1 -%{_cross_libdir}/libnvoptix.so.%{tesla_ver} -%{_cross_libdir}/libnvoptix.so.1 -%{_cross_datadir}/nvidia/nvoptix.bin +%{nvidia_root}/lib64/libnvidia-eglcore.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-glcore.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-tls.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-glsi.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-rtcore.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-fbc.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-fbc.so.1 +%{nvidia_root}/lib64/libnvoptix.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvoptix.so.1 +%{nvidia_root}/share-nvidia/nvoptix.bin # Graphics GLVND libs -%{_cross_libdir}/libnvidia-glvkspirv.so.%{tesla_ver} -%{_cross_libdir}/libGLX_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libGLX_nvidia.so.0 -%{_cross_libdir}/libEGL_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libEGL_nvidia.so.0 -%{_cross_libdir}/libGLESv2_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libGLESv2_nvidia.so.2 -%{_cross_libdir}/libGLESv1_CM_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libGLESv1_CM_nvidia.so.1 +%{nvidia_root}/lib64/libnvidia-glvkspirv.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLX_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLX_nvidia.so.0 +%{nvidia_root}/lib64/libEGL_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libEGL_nvidia.so.0 +%{nvidia_root}/lib64/libGLESv2_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLESv2_nvidia.so.2 +%{nvidia_root}/lib64/libGLESv1_CM_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLESv1_CM_nvidia.so.1 %if "%{_cross_arch}" == "x86_64" -%{_cross_libdir}/libnvidia-present.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-present.so.%{tesla_ver} %endif # Graphics compat -%{_cross_libdir}/libEGL.so.1.1.0 -%{_cross_libdir}/libEGL.so.1 -%{_cross_libdir}/libEGL.so.%{tesla_ver} -%{_cross_libdir}/libGL.so.1.7.0 -%{_cross_libdir}/libGL.so.1 -%{_cross_libdir}/libGLESv1_CM.so.1.2.0 -%{_cross_libdir}/libGLESv1_CM.so.1 -%{_cross_libdir}/libGLESv2.so.2.1.0 -%{_cross_libdir}/libGLESv2.so.2 +%{nvidia_root}/lib64/libEGL.so.1.1.0 +%{nvidia_root}/lib64/libEGL.so.1 +%{nvidia_root}/lib64/libEGL.so.%{tesla_ver} +%{nvidia_root}/lib64/libGL.so.1.7.0 +%{nvidia_root}/lib64/libGL.so.1 +%{nvidia_root}/lib64/libGLESv1_CM.so.1.2.0 +%{nvidia_root}/lib64/libGLESv1_CM.so.1 +%{nvidia_root}/lib64/libGLESv2.so.2.1.0 +%{nvidia_root}/lib64/libGLESv2.so.2 # NGX -%{_cross_libdir}/libnvidia-ngx.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-ngx.so.1 +%{nvidia_root}/lib64/libnvidia-ngx.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-ngx.so.1 # Firmware %{_cross_libdir}/firmware/nvidia/%{tesla_ver}/gsp_ga10x.bin @@ -785,50 +842,50 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con # Neither nvidia-peermem nor nvidia-drm are included in driver container images, we exclude them # for now, and we will add them if requested -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-peermem.mod.o -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-peermem.o -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-drm.mod.o -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-drm.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-peermem.mod.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-peermem.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-drm.mod.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-drm.o %if "%{_cross_arch}" == "x86_64" -%exclude %{_cross_libexecdir}/nvidia/tesla/bin/nvidia-ngx-updater -%exclude %{_cross_bindir}/nvidia-ngx-updater +%exclude %{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-ngx-updater +%exclude %{nvidia_root}/bin/nvidia-ngx-updater %endif # None of these libraries are required by libnvidia-container, so they # won't be used by a containerized workload -%exclude %{_cross_libdir}/libGLX.so.0 -%exclude %{_cross_libdir}/libGLdispatch.so.0 -%exclude %{_cross_libdir}/libOpenGL.so.0 -%exclude %{_cross_libdir}/libglxserver_nvidia.so.%{tesla_ver} -%exclude %{_cross_libdir}/libnvidia-gtk2.so.%{tesla_ver} -%exclude %{_cross_libdir}/libnvidia-gtk3.so.%{tesla_ver} -%exclude %{_cross_libdir}/nvidia_drv.so -%exclude %{_cross_libdir}/libnvidia-egl-wayland.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-gbm.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-gbm.so.1.1.3 -%exclude %{_cross_libdir}/libnvidia-egl-wayland.so.1.1.20 -%exclude %{_cross_libdir}/libnvidia-egl-xcb.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-xcb.so.1.0.5 -%exclude %{_cross_libdir}/libnvidia-egl-xlib.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-xlib.so.1.0.5 -%exclude %{_cross_libdir}/libnvidia-sandboxutils.so.1 -%exclude %{_cross_libdir}/libnvidia-sandboxutils.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libGLX.so.0 +%exclude %{nvidia_root}/lib64/libGLdispatch.so.0 +%exclude %{nvidia_root}/lib64/libOpenGL.so.0 +%exclude %{nvidia_root}/lib64/libglxserver_nvidia.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-gtk2.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-gtk3.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/nvidia_drv.so +%exclude %{nvidia_root}/lib64/libnvidia-egl-wayland.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-gbm.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-gbm.so.1.1.3 +%exclude %{nvidia_root}/lib64/libnvidia-egl-wayland.so.1.1.20 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xcb.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xcb.so.1.0.5 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xlib.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xlib.so.1.0.5 +%exclude %{nvidia_root}/lib64/libnvidia-sandboxutils.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-sandboxutils.so.%{tesla_ver} %if "%{_cross_arch}" == "x86_64" -%exclude %{_cross_libdir}/libnvidia-vksc-core.so.1 -%exclude %{_cross_libdir}/libnvidia-vksc-core.so.%{tesla_ver} -%exclude %{_cross_libdir}/libnvidia-wayland-client.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-vksc-core.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-vksc-core.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-wayland-client.so.%{tesla_ver} %endif %files open-gpu %license COPYING -%dir %{_cross_datadir}/nvidia/open-gpu/drivers -%dir %{_cross_factorydir}/nvidia/open-gpu +%dir %{nvidia_root}/share-nvidia/open-gpu/drivers +%dir %{_cross_factorydir}/nvidia/%{nvidia_branch}/open-gpu -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-uvm.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-modeset.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-drm.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-peermem.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-uvm.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-modeset.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-drm.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-peermem.ko # GRID driver files %if "%{_cross_arch}" == "x86_64" @@ -836,10 +893,10 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con %license COPYING %license NvidiaGridAWSUserLicenseAgreement.DOCX %license NVIDIA-Linux-x86_64-%{tesla_ver}-grid-aws/grid-third-party-licenses.txt -%dir %{_cross_datadir}/nvidia/grid/drivers -%dir %{_cross_factorydir}/nvidia/grid -%{_cross_bindir}/nvidia-gridd -%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/gridd.conf +%dir %{nvidia_root}/share-nvidia/grid/drivers +%dir %{_cross_factorydir}/nvidia/%{nvidia_branch}/grid +%{nvidia_root}/bin/nvidia-gridd +%{nvidia_root}/etc-nvidia/gridd.conf %{_cross_unitdir}/nvidia-gridd.service %{_cross_unitdir}/grid-license-check.service %{_cross_unitdir}/grid-license-check.timer @@ -847,41 +904,41 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con %{_cross_unitdir}/tesla-license-fallback.service %{_cross_unitdir}/nvidia-k8s-device-plugin.service.d/grid-license-file-check.conf -%{_cross_datadir}/nvidia/grid/drivers/nvidia.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-uvm.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-modeset.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-drm.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-peermem.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-uvm.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-modeset.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-drm.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-peermem.ko %endif %files fabricmanager -%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.cfg -%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.env +%{nvidia_root}/etc-nvidia/fabricmanager.cfg +%{nvidia_root}/etc-nvidia/fabricmanager.env %{_cross_unitdir}/nvidia-fabricmanager.service %files imex -%{_cross_bindir}/nvidia-imex -%{_cross_bindir}/nvidia-imex-ctl +%{nvidia_root}/bin/nvidia-imex +%{nvidia_root}/bin/nvidia-imex-ctl %{_cross_unitdir}/nvidia-imex.service -%{_cross_factorydir}/etc/nvidia-imex/config.cfg +%{nvidia_root}/etc-nvidia-imex/config.cfg %{_cross_tmpfilesdir}/nvidia-imex.conf %files imex-config %{_cross_libdir}/modprobe.d/10-nvidia-default-imex-channel.conf %files mps -%{_cross_bindir}/nvidia-cuda-mps-control -%{_cross_bindir}/nvidia-cuda-mps-server -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-control -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-server +%{nvidia_root}/bin/nvidia-cuda-mps-control +%{nvidia_root}/bin/nvidia-cuda-mps-server +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-control +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-server %files gdrcopy %license gdrcopy-LICENSE -%dir %{_cross_datadir}/nvidia/gdrcopy -%dir %{_cross_datadir}/nvidia/gdrcopy/open-gpu -%dir %{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers -%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-gdrcopy-open-gpu.toml -%{_cross_tmpfilesdir}/nvidia-gdrcopy.conf -%{_cross_unitdir}/copy-gdrcopy-open-gpu-kernel-module.service -%{_cross_unitdir}/load-gdrcopy-open-gpu-kernel-module.service +%dir %{nvidia_root}/share-nvidia/gdrcopy +%dir %{nvidia_root}/share-nvidia/gdrcopy/open-gpu +%dir %{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers +%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-gdrcopy-open-gpu.toml +%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-gdrcopy.conf +%{_cross_unitdir}/nvidia-%{nvidia_branch}-copy-gdrcopy-open-gpu-kernel-module.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-gdrcopy-open-gpu-kernel-module.service diff --git a/packages/kmod-6.18-nvidia-r580/link-tesla-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r580/link-tesla-lts-kernel-modules.service.in similarity index 72% rename from packages/kmod-6.18-nvidia-r580/link-tesla-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r580/link-tesla-lts-kernel-modules.service.in index 996b9f983..ac56434ce 100644 --- a/packages/kmod-6.18-nvidia-r580/link-tesla-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r580/link-tesla-lts-kernel-modules.service.in @@ -1,6 +1,8 @@ [Unit] Description=Link Tesla kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,7 +13,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver tesla -ExecStart=/usr/bin/driverdog --modules-set nvidia-tesla link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-tesla link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/load-gdrcopy-open-gpu-kernel-module.service.in b/packages/kmod-6.18-nvidia-r580/load-gdrcopy-open-gpu-lts-kernel-module.service.in similarity index 62% rename from packages/kmod-6.18-nvidia-r595/load-gdrcopy-open-gpu-kernel-module.service.in rename to packages/kmod-6.18-nvidia-r580/load-gdrcopy-open-gpu-lts-kernel-module.service.in index 9d4f65047..22ae26685 100644 --- a/packages/kmod-6.18-nvidia-r595/load-gdrcopy-open-gpu-kernel-module.service.in +++ b/packages/kmod-6.18-nvidia-r580/load-gdrcopy-open-gpu-lts-kernel-module.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load GDRCopy kernel module (open-gpu) RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=copy-gdrcopy-open-gpu-kernel-module.service load-open-gpu-kernel-modules.service -Requires=copy-gdrcopy-open-gpu-kernel-module.service load-open-gpu-kernel-modules.service +After=nvidia-lts-copy-gdrcopy-open-gpu-kernel-module.service nvidia-lts-load-open-gpu-kernel-modules.service +Requires=nvidia-lts-copy-gdrcopy-open-gpu-kernel-module.service nvidia-lts-load-open-gpu-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-gdrcopy-open-gpu load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-gdrcopy-open-gpu load-modules ExecStart=/usr/bin/ghostdog create-device gdrdrv 0 --path /dev/gdrdrv RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/load-grid-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r580/load-grid-lts-kernel-modules.service.in similarity index 70% rename from packages/kmod-6.18-nvidia-r595/load-grid-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r580/load-grid-lts-kernel-modules.service.in index c6ca702fe..03a760727 100644 --- a/packages/kmod-6.18-nvidia-r595/load-grid-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r580/load-grid-lts-kernel-modules.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load GRID kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=copy-grid-kernel-modules.service -Requires=copy-grid-kernel-modules.service +After=nvidia-lts-copy-grid-kernel-modules.service +Requires=nvidia-lts-copy-grid-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver grid -ExecStart=/usr/bin/driverdog --modules-set nvidia-grid load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-grid load-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/load-open-gpu-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r580/load-open-gpu-lts-kernel-modules.service.in similarity index 69% rename from packages/kmod-6.18-nvidia-r580/load-open-gpu-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r580/load-open-gpu-lts-kernel-modules.service.in index fa67fc427..f0245bd2e 100644 --- a/packages/kmod-6.18-nvidia-r580/load-open-gpu-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r580/load-open-gpu-lts-kernel-modules.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load open GPU kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=copy-open-gpu-kernel-modules.service -Requires=copy-open-gpu-kernel-modules.service +After=nvidia-lts-copy-open-gpu-kernel-modules.service +Requires=nvidia-lts-copy-open-gpu-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-open-gpu load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-open-gpu load-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/load-tesla-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r580/load-tesla-lts-kernel-modules.service.in similarity index 70% rename from packages/kmod-6.18-nvidia-r580/load-tesla-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r580/load-tesla-lts-kernel-modules.service.in index b4dbf0783..30d52d6a2 100644 --- a/packages/kmod-6.18-nvidia-r580/load-tesla-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r580/load-tesla-lts-kernel-modules.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load Tesla kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=link-tesla-kernel-modules.service -Requires=link-tesla-kernel-modules.service +After=nvidia-lts-link-tesla-kernel-modules.service +Requires=nvidia-lts-link-tesla-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver tesla -ExecStart=/usr/bin/driverdog --modules-set nvidia-tesla load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-lts-tesla load-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-fabricmanager.service b/packages/kmod-6.18-nvidia-r580/nvidia-fabricmanager.service index 620b49ae4..642017163 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-fabricmanager.service +++ b/packages/kmod-6.18-nvidia-r580/nvidia-fabricmanager.service @@ -3,6 +3,10 @@ Description=NVIDIA fabric manager service Wants=modprobe@ib_umad.service After=modprobe@ib_umad.service nvlsm-online.service Requires=nvlsm-online.service +# nv-fabricmanager and its /etc/nvidia config come from the branch overlays; +# order after both branches' overlays (absent branch is a no-op). +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service +After=nvidia-lts-overlay-config.service nvidia-fb-overlay-config.service [Service] EnvironmentFile=/etc/nvidia/fabricmanager.env diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-lts-tmpfiles.conf b/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-lts-tmpfiles.conf new file mode 100644 index 000000000..f9af57b37 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-lts-tmpfiles.conf @@ -0,0 +1 @@ +C /etc/drivers/nvidia-lts-gdrcopy-open-gpu.toml diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-open-gpu-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-open-gpu-lts-config.toml.in similarity index 55% rename from packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-open-gpu-config.toml.in rename to packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-open-gpu-lts-config.toml.in index 6d73cb07e..6930ca0d8 100644 --- a/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-open-gpu-config.toml.in +++ b/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-open-gpu-lts-config.toml.in @@ -1,5 +1,5 @@ -[nvidia-gdrcopy-open-gpu] +[nvidia-lts-gdrcopy-open-gpu] lib-modules-path = "kernel/drivers/extra/video/nvidia/gdrcopy/open-gpu" -[nvidia-gdrcopy-open-gpu.kernel-modules."gdrdrv.ko"] +[nvidia-lts-gdrcopy-open-gpu.kernel-modules."gdrdrv.ko"] copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-tmpfiles.conf b/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-tmpfiles.conf deleted file mode 100644 index 92ee7102f..000000000 --- a/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-tmpfiles.conf +++ /dev/null @@ -1 +0,0 @@ -C /etc/drivers/nvidia-gdrcopy-open-gpu.toml diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-grid-copy-only-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-grid-copy-only-config.toml.in deleted file mode 100644 index c8f250b76..000000000 --- a/packages/kmod-6.18-nvidia-r580/nvidia-grid-copy-only-config.toml.in +++ /dev/null @@ -1,8 +0,0 @@ -[nvidia-grid-copy-only] -lib-modules-path = "kernel/drivers/extra/video/nvidia/grid" - -[nvidia-grid-copy-only.kernel-modules."nvidia-drm.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-grid-copy-only.kernel-modules."nvidia-peermem.ko"] -copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-grid-copy-only-lts-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-grid-copy-only-lts-config.toml.in new file mode 100644 index 000000000..54b8038a4 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r580/nvidia-grid-copy-only-lts-config.toml.in @@ -0,0 +1,8 @@ +[nvidia-lts-grid-copy-only] +lib-modules-path = "kernel/drivers/extra/video/nvidia/grid" + +[nvidia-lts-grid-copy-only.kernel-modules."nvidia-drm.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-lts-grid-copy-only.kernel-modules."nvidia-peermem.ko"] +copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-grid-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-grid-lts-config.toml.in similarity index 50% rename from packages/kmod-6.18-nvidia-r595/nvidia-grid-config.toml.in rename to packages/kmod-6.18-nvidia-r580/nvidia-grid-lts-config.toml.in index aa80e7629..40449a699 100644 --- a/packages/kmod-6.18-nvidia-r595/nvidia-grid-config.toml.in +++ b/packages/kmod-6.18-nvidia-r580/nvidia-grid-lts-config.toml.in @@ -1,11 +1,11 @@ -[nvidia-grid] +[nvidia-lts-grid] lib-modules-path = "kernel/drivers/extra/video/nvidia/grid" -[nvidia-grid.kernel-modules."nvidia.ko"] +[nvidia-lts-grid.kernel-modules."nvidia.ko"] copy-source = "__NVIDIA_MODULES__" -[nvidia-grid.kernel-modules."nvidia-modeset.ko"] +[nvidia-lts-grid.kernel-modules."nvidia-modeset.ko"] copy-source = "__NVIDIA_MODULES__" -[nvidia-grid.kernel-modules."nvidia-uvm.ko"] +[nvidia-lts-grid.kernel-modules."nvidia-uvm.ko"] copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-gridd.service b/packages/kmod-6.18-nvidia-r580/nvidia-gridd.service index 902aeb605..4a551eee8 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-gridd.service +++ b/packages/kmod-6.18-nvidia-r580/nvidia-gridd.service @@ -2,6 +2,10 @@ Description=NVIDIA Grid Daemon Wants=systemd-resolved.service network-online.target nvidia-persistenced.service After=systemd-resolved.service network-online.target nvidia-persistenced.service +# Order after the branch overlays: needs libs/binary (driver overlay) and +# /etc/nvidia/gridd.conf (config overlay) at their canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service +After=nvidia-lts-overlay-config.service nvidia-fb-overlay-config.service [Service] Type=forking diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-imex-tmpfiles.conf b/packages/kmod-6.18-nvidia-r580/nvidia-imex-tmpfiles.conf index 3f88dfc05..c27558cbc 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-imex-tmpfiles.conf +++ b/packages/kmod-6.18-nvidia-r580/nvidia-imex-tmpfiles.conf @@ -1,2 +1 @@ d /etc/nvidia-imex 0755 root root - -C /etc/nvidia-imex/config.cfg 0644 root root - diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-lts-overlay-config.service b/packages/kmod-6.18-nvidia-r580/nvidia-lts-overlay-config.service new file mode 100644 index 000000000..3972e3699 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r580/nvidia-lts-overlay-config.service @@ -0,0 +1,24 @@ +[Unit] +Description=NVIDIA lts branch /etc config overlays +DefaultDependencies=no +Before=drivers.target +# Upper/workdir live on the /etc tmpfs +RequiresMountsFor=/etc + +[Service] +Type=oneshot +RemainAfterExit=true +StandardError=journal+console +# Project the branch's /etc/nvidia config onto the canonical path. Used by +# nvidia-fabricmanager, nvidia-gridd and nvlsm +ExecStart=/usr/bin/mkdir -p \ + /etc/nvidia \ + /etc/nvidia-imex \ + /etc/.nvidia-config-overlay/upper \ + /etc/.nvidia-config-overlay/work +ExecStart=/usr/bin/mount -t overlay nvidia-etc --options rw,nosuid,nodev,noexec,noatime,context=system_u:object_r:etc_t:s0,lowerdir=/usr/nvidia/lts/etc-nvidia:/etc/nvidia,upperdir=/etc/.nvidia-config-overlay/upper,workdir=/etc/.nvidia-config-overlay/work /etc/nvidia + +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/lts/etc-nvidia-imex:/etc/nvidia-imex /etc/nvidia-imex + +[Install] +RequiredBy=drivers.target diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-lts-overlay-driver.service b/packages/kmod-6.18-nvidia-r580/nvidia-lts-overlay-driver.service new file mode 100644 index 000000000..472b62ae8 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r580/nvidia-lts-overlay-driver.service @@ -0,0 +1,36 @@ +[Unit] +Description=NVIDIA lts branch driver library/binary and kernel-module overlays +DefaultDependencies=no +Before=drivers.target +# The modules re-layer's upper/work live under /var/lib/kernel-modules, which +# prepare-var.service creates +Wants=prepare-var.service +After=prepare-var.service +RequiresMountsFor=/var /usr/lib/modules + +[Service] +Type=oneshot +RemainAfterExit=true +StandardError=journal+console + +# The /usr/lib64 overlay shadows the /usr/lib/modules mount. +# To preserve /usr/lib/modules, we bind the lib-modules +# overlay to a second path and then re-layer it as a lowerdir +ExecStart=/usr/bin/mkdir -p \ + /run/nvidia/base-modules \ + /var/lib/kernel-modules/.nvidia/upper \ + /var/lib/kernel-modules/.nvidia/work +ExecStart=/usr/bin/mount --bind /usr/lib/modules /run/nvidia/base-modules +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nodev,noatime,lowerdir=/usr/nvidia/lts/lib64:/usr/lib64 /usr/lib64 +# Remount /run/nvidia/base-modules on /usr/lib/modules bringing back the original +# /lib/modules as the lowerdir with new upperdir and workdir for write access +ExecStart=/usr/bin/mount -t overlay nvidia-modules --options rw,nosuid,nodev,noexec,noatime,context=system_u:object_r:state_t:s0,lowerdir=/run/nvidia/base-modules,upperdir=/var/lib/kernel-modules/.nvidia/upper,workdir=/var/lib/kernel-modules/.nvidia/work /usr/lib/modules + +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/lts/share-nvidia:/usr/share/nvidia /usr/share/nvidia +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nodev,noatime,lowerdir=/usr/nvidia/lts/bin:/usr/bin /usr/bin +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/lts/share-vulkan:/usr/share/vulkan /usr/share/vulkan +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/lts/share-glvnd:/usr/share/glvnd /usr/share/glvnd +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/lts/share-egl:/usr/share/egl /usr/share/egl + +[Install] +RequiredBy=drivers.target diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-config.toml.in deleted file mode 100644 index 5ae81b716..000000000 --- a/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-config.toml.in +++ /dev/null @@ -1,11 +0,0 @@ -[nvidia-open-gpu] -lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" - -[nvidia-open-gpu.kernel-modules."nvidia.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-open-gpu.kernel-modules."nvidia-modeset.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-open-gpu.kernel-modules."nvidia-uvm.ko"] -copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-copy-only-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-copy-only-config.toml.in deleted file mode 100644 index 774867d42..000000000 --- a/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-copy-only-config.toml.in +++ /dev/null @@ -1,8 +0,0 @@ -[nvidia-open-gpu-copy-only] -lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" - -[nvidia-open-gpu-copy-only.kernel-modules."nvidia-drm.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-open-gpu-copy-only.kernel-modules."nvidia-peermem.ko"] -copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-copy-only-lts-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-copy-only-lts-config.toml.in new file mode 100644 index 000000000..edc632240 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-copy-only-lts-config.toml.in @@ -0,0 +1,8 @@ +[nvidia-lts-open-gpu-copy-only] +lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" + +[nvidia-lts-open-gpu-copy-only.kernel-modules."nvidia-drm.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-lts-open-gpu-copy-only.kernel-modules."nvidia-peermem.ko"] +copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-lts-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-lts-config.toml.in new file mode 100644 index 000000000..80e002cbd --- /dev/null +++ b/packages/kmod-6.18-nvidia-r580/nvidia-open-gpu-lts-config.toml.in @@ -0,0 +1,11 @@ +[nvidia-lts-open-gpu] +lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" + +[nvidia-lts-open-gpu.kernel-modules."nvidia.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-lts-open-gpu.kernel-modules."nvidia-modeset.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-lts-open-gpu.kernel-modules."nvidia-uvm.ko"] +copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-persistenced.service b/packages/kmod-6.18-nvidia-r580/nvidia-persistenced.service index bf09163d3..4bd8bed52 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-persistenced.service +++ b/packages/kmod-6.18-nvidia-r580/nvidia-persistenced.service @@ -1,6 +1,8 @@ [Unit] Description=NVIDIA Persistence Daemon -After=load-tesla-kernel-modules.service load-open-gpu-kernel-modules.service load-grid-kernel-modules.service +# Ensure persistenced starts after /dev/nvidia* exists +After=nvidia-lts-load-tesla-kernel-modules.service nvidia-lts-load-open-gpu-kernel-modules.service nvidia-lts-load-grid-kernel-modules.service +After=nvidia-fb-load-tesla-kernel-modules.service nvidia-fb-load-open-gpu-kernel-modules.service nvidia-fb-load-grid-kernel-modules.service [Service] Type=forking diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-tesla-build-config.toml.in b/packages/kmod-6.18-nvidia-r580/nvidia-tesla-lts-build-config.toml.in similarity index 62% rename from packages/kmod-6.18-nvidia-r595/nvidia-tesla-build-config.toml.in rename to packages/kmod-6.18-nvidia-r580/nvidia-tesla-lts-build-config.toml.in index 0b5082f8c..1c0a29e32 100644 --- a/packages/kmod-6.18-nvidia-r595/nvidia-tesla-build-config.toml.in +++ b/packages/kmod-6.18-nvidia-r580/nvidia-tesla-lts-build-config.toml.in @@ -1,18 +1,18 @@ -[nvidia-tesla] +[nvidia-lts-tesla] lib-modules-path = "kernel/drivers/extra/video/nvidia/tesla" objects-source = "__NVIDIA_MODULES__" -[nvidia-tesla.object-files."nvidia.o"] +[nvidia-lts-tesla.object-files."nvidia.o"] link-objects = ["nv-interface.o", "nv-kernel.o"] -[nvidia-tesla.kernel-modules."nvidia.ko"] +[nvidia-lts-tesla.kernel-modules."nvidia.ko"] link-objects = ["nvidia.o", "nvidia.mod.o", ".module-common.o"] -[nvidia-tesla.object-files."nvidia-modeset.o"] +[nvidia-lts-tesla.object-files."nvidia-modeset.o"] link-objects = ["nv-modeset-interface.o", "nv-modeset-kernel.o"] -[nvidia-tesla.kernel-modules."nvidia-modeset.ko"] +[nvidia-lts-tesla.kernel-modules."nvidia-modeset.ko"] link-objects = ["nvidia-modeset.o", "nvidia-modeset.mod.o", ".module-common.o"] -[nvidia-tesla.kernel-modules."nvidia-uvm.ko"] +[nvidia-lts-tesla.kernel-modules."nvidia-uvm.ko"] link-objects = ["nvidia-uvm.o", "nvidia-uvm.mod.o", ".module-common.o"] diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-tesla-lts-tmpfiles.conf b/packages/kmod-6.18-nvidia-r580/nvidia-tesla-lts-tmpfiles.conf new file mode 100644 index 000000000..b1161aa45 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r580/nvidia-tesla-lts-tmpfiles.conf @@ -0,0 +1,5 @@ +C /etc/drivers/nvidia-lts-tesla.toml +C /etc/drivers/nvidia-lts-open-gpu.toml +C /etc/drivers/nvidia-lts-open-gpu-copy-only.toml +C /etc/drivers/nvidia-lts-grid.toml +C /etc/drivers/nvidia-lts-grid-copy-only.toml diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-tesla-tmpfiles.conf b/packages/kmod-6.18-nvidia-r580/nvidia-tesla-tmpfiles.conf deleted file mode 100644 index b7ed04f8e..000000000 --- a/packages/kmod-6.18-nvidia-r580/nvidia-tesla-tmpfiles.conf +++ /dev/null @@ -1,6 +0,0 @@ -C /etc/drivers/nvidia-tesla.toml -C /etc/drivers/nvidia-open-gpu.toml -C /etc/drivers/nvidia-open-gpu-copy-only.toml -C /etc/drivers/nvidia-grid.toml -C /etc/drivers/nvidia-grid-copy-only.toml -C /etc/ld.so.conf.d/nvidia-tesla.conf diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-tmpfiles.conf.in b/packages/kmod-6.18-nvidia-r580/nvidia-tmpfiles.conf.in index 021ab70ba..fcbc17f01 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-tmpfiles.conf.in +++ b/packages/kmod-6.18-nvidia-r580/nvidia-tmpfiles.conf.in @@ -8,8 +8,8 @@ R __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gd d __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gdrcopy 0755 root root - - d __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gdrcopy/open-gpu 0755 root root - - d __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gdrcopy/tesla 0755 root root - - -C /etc/nvidia/fabricmanager.cfg - - - - -C /etc/nvidia/fabricmanager.env - - - - -C /etc/nvidia/gridd.conf - - - - +# fabricmanager.cfg/.env and gridd.conf are added via an overlay mount; this +# creates the mountpoint that overlay needs. +d /etc/nvidia 0755 root root - d /run/nvidia 0755 root root - D /var/run/nvidia-persistenced 0755 nvidia nvidia - - diff --git a/packages/kmod-6.18-nvidia-r580/open-gpu-license-fallback.service b/packages/kmod-6.18-nvidia-r580/open-gpu-license-fallback.service index 8d3508af1..8f07acf27 100644 --- a/packages/kmod-6.18-nvidia-r580/open-gpu-license-fallback.service +++ b/packages/kmod-6.18-nvidia-r580/open-gpu-license-fallback.service @@ -1,5 +1,7 @@ [Unit] Description=Open GPU GRID License Check Fallback +# Order after the branch overlay so ghostdog reads the supported-devices json at its canonical path. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service RefuseManualStart=true RefuseManualStop=true diff --git a/packages/kmod-6.18-nvidia-r580/tesla-license-fallback.service b/packages/kmod-6.18-nvidia-r580/tesla-license-fallback.service index c0c1949f5..64d99bf14 100644 --- a/packages/kmod-6.18-nvidia-r580/tesla-license-fallback.service +++ b/packages/kmod-6.18-nvidia-r580/tesla-license-fallback.service @@ -1,5 +1,7 @@ [Unit] Description=Tesla GRID License Check Fallback +# Order after the branch overlay so ghostdog reads the supported-devices json at its canonical path. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service RefuseManualStart=true RefuseManualStop=true diff --git a/packages/kmod-6.18-nvidia-r580/copy-gdrcopy-open-gpu-kernel-module.service.in b/packages/kmod-6.18-nvidia-r595/copy-gdrcopy-open-gpu-fb-kernel-module.service.in similarity index 72% rename from packages/kmod-6.18-nvidia-r580/copy-gdrcopy-open-gpu-kernel-module.service.in rename to packages/kmod-6.18-nvidia-r595/copy-gdrcopy-open-gpu-fb-kernel-module.service.in index 34d53abb0..be2d70d1b 100644 --- a/packages/kmod-6.18-nvidia-r580/copy-gdrcopy-open-gpu-kernel-module.service.in +++ b/packages/kmod-6.18-nvidia-r595/copy-gdrcopy-open-gpu-fb-kernel-module.service.in @@ -1,6 +1,8 @@ [Unit] Description=Copy GDRCopy kernel module (open-gpu) RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,7 +13,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-gdrcopy-open-gpu link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-gdrcopy-open-gpu link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/copy-grid-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r595/copy-grid-fb-kernel-modules.service.in similarity index 66% rename from packages/kmod-6.18-nvidia-r595/copy-grid-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r595/copy-grid-fb-kernel-modules.service.in index ee282f2a4..3417673ec 100644 --- a/packages/kmod-6.18-nvidia-r595/copy-grid-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r595/copy-grid-fb-kernel-modules.service.in @@ -1,6 +1,8 @@ [Unit] Description=Copy GRID kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,8 +13,8 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver grid -ExecStart=/usr/bin/driverdog --modules-set nvidia-grid link-modules -ExecStart=/usr/bin/driverdog --modules-set nvidia-grid-copy-only link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-grid link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-grid-copy-only link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/copy-open-gpu-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r595/copy-open-gpu-fb-kernel-modules.service.in similarity index 66% rename from packages/kmod-6.18-nvidia-r580/copy-open-gpu-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r595/copy-open-gpu-fb-kernel-modules.service.in index 041ff55dd..2329b227f 100644 --- a/packages/kmod-6.18-nvidia-r580/copy-open-gpu-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r595/copy-open-gpu-fb-kernel-modules.service.in @@ -1,6 +1,8 @@ [Unit] Description=Copy open GPU kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,8 +13,8 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-open-gpu link-modules -ExecStart=/usr/bin/driverdog --modules-set nvidia-open-gpu-copy-only link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-open-gpu link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-open-gpu-copy-only link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/grid-license-check.service b/packages/kmod-6.18-nvidia-r595/grid-license-check.service index 9f8c509e0..c96fc1bd0 100644 --- a/packages/kmod-6.18-nvidia-r595/grid-license-check.service +++ b/packages/kmod-6.18-nvidia-r595/grid-license-check.service @@ -2,6 +2,8 @@ Description=GRID License Check RefuseManualStart=true RefuseManualStop=true +# Order after the branch overlay so ghostdog/nvidia-smi see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service After=nvidia-gridd.service Requires=nvidia-gridd.service diff --git a/packages/kmod-6.18-nvidia-r595/kmod-6.18-nvidia-r595.spec b/packages/kmod-6.18-nvidia-r595/kmod-6.18-nvidia-r595.spec index aeb3b3ede..5385b1801 100644 --- a/packages/kmod-6.18-nvidia-r595/kmod-6.18-nvidia-r595.spec +++ b/packages/kmod-6.18-nvidia-r595/kmod-6.18-nvidia-r595.spec @@ -4,6 +4,11 @@ %global tesla_ver %{tesla_major}.%{tesla_minor}.%{tesla_patch} %global grid_ver grid-20.2 %global gdrcopy_ver 2.6 +# Branch name for namespaced multi-driver paths +%global nvidia_branch fb +# Branch-namespaced storage root for files that are overlaid onto canonical paths +# at boot. Resolved to /usr/nvidia/fb +%global nvidia_root %{_cross_prefix}/nvidia/%{nvidia_branch} %if "%{?_cross_arch}" == "aarch64" %global nvidia_arch sbsa %else @@ -62,33 +67,43 @@ Source211: grid-license-check.timer Source212: open-gpu-license-fallback.service Source213: tesla-license-fallback.service Source214: grid-license-file-check.conf +Source215: nvidia-imex.service +Source216: nvidia-imex.cfg +Source217: nvidia-imex-tmpfiles.conf +Source218: nvidia-imex-default-channel.conf # NVIDIA tesla conf files from 300 to 399 -Source300: nvidia-tesla-tmpfiles.conf -Source301: nvidia-tesla-build-config.toml.in +Source300: nvidia-tesla-fb-tmpfiles.conf +Source301: nvidia-tesla-fb-build-config.toml.in # Driverdog config templates from 400 to 499 -Source400: nvidia-open-gpu-config.toml.in -Source401: nvidia-open-gpu-copy-only-config.toml.in -Source402: nvidia-grid-config.toml.in -Source403: nvidia-grid-copy-only-config.toml.in +Source400: nvidia-open-gpu-fb-config.toml.in +Source401: nvidia-open-gpu-copy-only-fb-config.toml.in +Source402: nvidia-grid-fb-config.toml.in +Source403: nvidia-grid-copy-only-fb-config.toml.in # Systemd service templates from 500 to 599 -Source500: link-tesla-kernel-modules.service.in -Source501: load-tesla-kernel-modules.service.in -Source502: copy-open-gpu-kernel-modules.service.in -Source503: load-open-gpu-kernel-modules.service.in -Source504: copy-grid-kernel-modules.service.in -Source505: load-grid-kernel-modules.service.in - -Source600: nvidia-gdrcopy-open-gpu-config.toml.in -Source601: copy-gdrcopy-open-gpu-kernel-module.service.in -Source602: load-gdrcopy-open-gpu-kernel-module.service.in -Source603: nvidia-gdrcopy-tmpfiles.conf +Source500: link-tesla-fb-kernel-modules.service.in +Source501: load-tesla-fb-kernel-modules.service.in +Source502: copy-open-gpu-fb-kernel-modules.service.in +Source503: load-open-gpu-fb-kernel-modules.service.in +Source504: copy-grid-fb-kernel-modules.service.in +Source505: load-grid-fb-kernel-modules.service.in + +Source600: nvidia-gdrcopy-open-gpu-fb-config.toml.in +Source601: copy-gdrcopy-open-gpu-fb-kernel-module.service.in +Source602: load-gdrcopy-open-gpu-fb-kernel-module.service.in +Source603: nvidia-gdrcopy-fb-tmpfiles.conf # GDRcopy Source700: https://github.com/NVIDIA/gdrcopy/archive/v%{gdrcopy_ver}/gdrcopy-%{gdrcopy_ver}.tar.gz +# Overlay activation units, split by concern: driver (lib/bin/modules) and config +# (/etc). Run unconditionally in a single-driver image; gated per-branch by +# kmod-nvidia-multi in a multi image. +Source800: nvidia-fb-overlay-driver.service +Source801: nvidia-fb-overlay-config.service + Patch001: 0001-makefile-allow-to-use-any-kernel-arch.patch BuildRequires: %{_cross_os}kernel-6.18-devel @@ -101,6 +116,12 @@ Requires: %{name}-grid %endif Requires: %{name}-mps +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch} + +# Refuse to co-install the lts and fb branches without the multi-driver +# meta-package, so a variant that pulls in both fails to resolve. +Conflicts: (%{_cross_os}kmod-6.18-nvidia-lts unless %{_cross_os}kmod-6.18-nvidia-multi) + %description %{summary}. @@ -109,6 +130,7 @@ Summary: NVIDIA fabricmanager config and service files Requires: %{name}-tesla(fabricmanager) Requires: %{_cross_os}nvlsm Requires: %{name}-imex +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-fabricmanager %description fabricmanager %{summary}. @@ -116,16 +138,25 @@ Requires: %{name}-imex %package imex Summary: NVIDIA IMEX config and service files Requires: %{name} +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-imex %description imex %{summary}. +%package imex-config +Summary: NVIDIA IMEX modprobe configuration +Requires: %{name}-imex + +%description imex-config +%{summary}. + %package open-gpu Summary: NVIDIA %{tesla_major} Open GPU driver Version: %{tesla_ver} License: MIT AND GPL-2.0-only Requires: %{_cross_os}variant-platform(aws) Requires: %{name} +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-open-gpu %description open-gpu %{summary}. @@ -138,6 +169,7 @@ License: MIT AND GPL-2.0-only AND LicenceRef-NVIDIA-GRID-AWS-EULA Requires: %{_cross_os}variant-platform(aws) Requires: %{name} Requires: %{_cross_os}libstdc++ +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-grid %description grid %{summary}. @@ -151,6 +183,7 @@ Requires: %{_cross_os}variant-platform(aws) Requires: %{name} Requires: %{name}-fabricmanager Provides: %{name}-tesla(fabricmanager) +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-tesla %description tesla %{summary} @@ -158,6 +191,7 @@ Provides: %{name}-tesla(fabricmanager) %package mps Summary: NVIDIA CUDA Multi-Process Service Requires: %{name} +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-mps %description mps %{summary}. @@ -166,6 +200,7 @@ Requires: %{name} Summary: NVIDIA GDRCopy driver Version: %{gdrcopy_ver} License: MIT AND GPL-2.0-only +Provides: %{_cross_os}kmod-6.18-nvidia-%{nvidia_branch}-gdrcopy Requires: %{_cross_os}variant-platform(aws) Requires: %{name} @@ -301,12 +336,12 @@ mv gdrdrv.ko ../../gdrdrv-open-gpu.ko popd %install -install -d %{buildroot}%{_cross_libdir} -install -d %{buildroot}%{_cross_libdir}/nvidia/tesla +install -d %{buildroot}%{nvidia_root}/lib64 +install -d %{buildroot}%{nvidia_root}/lib64/tesla install -d %{buildroot}%{_cross_tmpfilesdir} install -d %{buildroot}%{_cross_unitdir} install -d %{buildroot}%{_cross_sysusersdir} -install -d %{buildroot}%{_cross_bindir} +install -d %{buildroot}%{nvidia_root}/bin sed \ -e "s|__KERNEL_VERSION__|%{kernel_major}|" \ @@ -319,142 +354,143 @@ install -p -m 0644 %{S:202} %{buildroot}%{_cross_libdir}/modules-load.d/nvidia-d # NVIDIA fabric manager service unit and config install -p -m 0644 %{S:203} %{buildroot}%{_cross_unitdir} -install -d %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia +install -d %{buildroot}%{nvidia_root}/etc-nvidia install -d %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -install -p -m 0644 %{S:204} %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.cfg -install -p -m 0644 %{S:207} %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.env +install -p -m 0644 %{S:204} %{buildroot}%{nvidia_root}/etc-nvidia/fabricmanager.cfg +install -p -m 0644 %{S:207} %{buildroot}%{nvidia_root}/etc-nvidia/fabricmanager.env # Begin NVIDIA tesla driver pushd NVIDIA-Linux-%{_cross_arch}-%{tesla_ver} # Proprietary driver -install -d %{buildroot}%{_cross_bindir} -install -d %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin -install -d %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install -d %{buildroot}%{_cross_factorydir}/nvidia/tesla -install -d %{buildroot}%{_cross_factorydir}/nvidia/open-gpu +install -d %{buildroot}%{nvidia_root}/bin +install -d %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin +install -d %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install -d %{buildroot}%{_cross_factorydir}/nvidia/%{nvidia_branch}/tesla +install -d %{buildroot}%{_cross_factorydir}/nvidia/%{nvidia_branch}/open-gpu %if "%{_cross_arch}" == "x86_64" -install -d %{buildroot}%{_cross_factorydir}/nvidia/grid +install -d %{buildroot}%{_cross_factorydir}/nvidia/%{nvidia_branch}/grid %endif -install -d %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers - -install -m 0644 %{S:300} %{buildroot}%{_cross_tmpfilesdir}/nvidia-tesla.conf -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/tesla/module-objects.d/|' %{S:301} > \ - nvidia-tesla.toml -install -m 0644 nvidia-tesla.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/open-gpu/drivers/|' %{S:400} > \ - nvidia-open-gpu.toml -install -m 0644 nvidia-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/open-gpu/drivers/|' %{S:401} > \ - nvidia-open-gpu-copy-only.toml -install -m 0644 nvidia-open-gpu-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +install -d %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers + +install -m 0644 %{S:300} %{buildroot}%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-tesla.conf + +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/tesla/module-objects.d/|' %{S:301} > \ + nvidia-%{nvidia_branch}-tesla.toml +install -m 0644 nvidia-%{nvidia_branch}-tesla.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/open-gpu/drivers/|' %{S:400} > \ + nvidia-%{nvidia_branch}-open-gpu.toml +install -m 0644 nvidia-%{nvidia_branch}-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/open-gpu/drivers/|' %{S:401} > \ + nvidia-%{nvidia_branch}-open-gpu-copy-only.toml +install -m 0644 nvidia-%{nvidia_branch}-open-gpu-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers %if "%{_cross_arch}" == "x86_64" -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/grid/drivers/|' %{S:402} > \ - nvidia-grid.toml -install -m 0644 nvidia-grid.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/grid/drivers/|' %{S:403} > \ - nvidia-grid-copy-only.toml -install -m 0644 nvidia-grid-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/grid/drivers/|' %{S:402} > \ + nvidia-%{nvidia_branch}-grid.toml +install -m 0644 nvidia-%{nvidia_branch}-grid.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/grid/drivers/|' %{S:403} > \ + nvidia-%{nvidia_branch}-grid-copy-only.toml +install -m 0644 nvidia-%{nvidia_branch}-grid-copy-only.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers %endif -# Services to link/copy/load modules -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:500} > link-tesla-kernel-modules.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:501} > load-tesla-kernel-modules.service + +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:500} > nvidia-%{nvidia_branch}-link-tesla-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:501} > nvidia-%{nvidia_branch}-load-tesla-kernel-modules.service install -p -m 0644 \ - link-tesla-kernel-modules.service \ - load-tesla-kernel-modules.service \ + nvidia-%{nvidia_branch}-link-tesla-kernel-modules.service \ + nvidia-%{nvidia_branch}-load-tesla-kernel-modules.service \ %{buildroot}%{_cross_unitdir} -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:502} > copy-open-gpu-kernel-modules.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:503} > load-open-gpu-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:502} > nvidia-%{nvidia_branch}-copy-open-gpu-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:503} > nvidia-%{nvidia_branch}-load-open-gpu-kernel-modules.service install -p -m 0644 \ - copy-open-gpu-kernel-modules.service \ - load-open-gpu-kernel-modules.service \ + nvidia-%{nvidia_branch}-copy-open-gpu-kernel-modules.service \ + nvidia-%{nvidia_branch}-load-open-gpu-kernel-modules.service \ %{buildroot}%{_cross_unitdir} %if "%{_cross_arch}" == "x86_64" -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:504} > copy-grid-kernel-modules.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:505} > load-grid-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:504} > nvidia-%{nvidia_branch}-copy-grid-kernel-modules.service +sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:505} > nvidia-%{nvidia_branch}-load-grid-kernel-modules.service install -p -m 0644 \ - copy-grid-kernel-modules.service \ - load-grid-kernel-modules.service \ + nvidia-%{nvidia_branch}-copy-grid-kernel-modules.service \ + nvidia-%{nvidia_branch}-load-grid-kernel-modules.service \ %{buildroot}%{_cross_unitdir} %endif # proprietary driver -install kernel/nvidia.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia/nv-interface.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia/nv-kernel.o_binary %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-kernel.o +install kernel/nvidia.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia/nv-interface.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia/nv-kernel.o_binary %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-kernel.o # module-common object -install kernel/.module-common.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d/.module-common.o +install kernel/.module-common.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d/.module-common.o # uvm -install kernel/nvidia-uvm.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-uvm.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-uvm.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-uvm.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d # modeset -install kernel/nvidia-modeset.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-modeset/nv-modeset-interface.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-modeset/nv-modeset-kernel.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-modeset.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-modeset/nv-modeset-interface.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-modeset/nv-modeset-kernel.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d # peermem -install kernel/nvidia-peermem.mod.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-peermem/nvidia-peermem.o %{buildroot}%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-peermem.mod.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-peermem/nvidia-peermem.o %{buildroot}%{nvidia_root}/share-nvidia/tesla/module-objects.d # drm -install kernel/nvidia-drm.mod.o %{buildroot}/%{_cross_datadir}/nvidia/tesla/module-objects.d -install kernel/nvidia-drm.o %{buildroot}/%{_cross_datadir}/nvidia/tesla/module-objects.d +install kernel/nvidia-drm.mod.o %{buildroot}/%{nvidia_root}/share-nvidia/tesla/module-objects.d +install kernel/nvidia-drm.o %{buildroot}/%{nvidia_root}/share-nvidia/tesla/module-objects.d # open driver -install -d %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ -install kernel-open/nvidia.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ - -# add various vulkan icd/config -install -d %{buildroot}%{_cross_datadir}/vulkan/icd.d -install -d %{buildroot}%{_cross_datadir}/vulkan/implicit_layer.d -install -m 0644 nvidia_icd.json %{buildroot}%{_cross_datadir}/vulkan/icd.d/nvidia_icd.json -install -m 0644 nvidia_layers.json %{buildroot}%{_cross_datadir}/vulkan/icd.d/nvidia_layers.json -install -d %{buildroot}%{_cross_datadir}/glvnd/egl_vendor.d -install -m 0644 10_nvidia.json %{buildroot}%{_cross_datadir}/glvnd/egl_vendor.d/10_nvidia.json -install -d %{buildroot}%{_cross_datadir}/egl/egl_external_platform.d -install -m 0644 10_nvidia_wayland.json %{buildroot}%{_cross_datadir}/egl/egl_external_platform.d/10_nvidia_wayland.json -install -m 0644 15_nvidia_gbm.json %{buildroot}%{_cross_datadir}/egl/egl_external_platform.d/15_nvidia_gbm.json -ln -rs %{buildroot}%{_cross_datadir}/vulkan/icd.d/nvidia_layers.json %{buildroot}%{_cross_datadir}/vulkan/implicit_layer.d/nvidia_layers.json +install -d %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ +install kernel-open/nvidia.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ + +# add various vulkan icd/config under a branch-namespaced subdir +install -d %{buildroot}%{nvidia_root}/share-vulkan/icd.d +install -d %{buildroot}%{nvidia_root}/share-vulkan/implicit_layer.d +install -m 0644 nvidia_icd.json %{buildroot}%{nvidia_root}/share-vulkan/icd.d/nvidia_icd.json +install -m 0644 nvidia_layers.json %{buildroot}%{nvidia_root}/share-vulkan/icd.d/nvidia_layers.json +install -d %{buildroot}%{nvidia_root}/share-glvnd/egl_vendor.d +install -m 0644 10_nvidia.json %{buildroot}%{nvidia_root}/share-glvnd/egl_vendor.d/10_nvidia.json +install -d %{buildroot}%{nvidia_root}/share-egl/egl_external_platform.d +install -m 0644 10_nvidia_wayland.json %{buildroot}%{nvidia_root}/share-egl/egl_external_platform.d/10_nvidia_wayland.json +install -m 0644 15_nvidia_gbm.json %{buildroot}%{nvidia_root}/share-egl/egl_external_platform.d/15_nvidia_gbm.json +ln -rs %{buildroot}%{nvidia_root}/share-vulkan/icd.d/nvidia_layers.json %{buildroot}%{nvidia_root}/share-vulkan/implicit_layer.d/nvidia_layers.json # uvm -install kernel-open/nvidia-uvm.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-uvm.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # modeset -install kernel-open/nvidia-modeset.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-modeset.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # peermem -install kernel-open/nvidia-peermem.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-peermem.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # drm -install kernel-open/nvidia-drm.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/drivers/ +install kernel-open/nvidia-drm.ko %{buildroot}%{nvidia_root}/share-nvidia/open-gpu/drivers/ # end open driver %if "%{_cross_arch}" == "x86_64" # GRID driver pushd ../NVIDIA-Linux-x86_64-%{tesla_ver}-grid-aws -install -d %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ -install kernel-open/nvidia.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install -d %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ +install kernel-open/nvidia.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # uvm -install kernel-open/nvidia-uvm.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-uvm.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # modeset -install kernel-open/nvidia-modeset.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-modeset.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # peermem -install kernel-open/nvidia-peermem.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-peermem.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # drm -install kernel-open/nvidia-drm.ko %{buildroot}%{_cross_datadir}/nvidia/grid/drivers/ +install kernel-open/nvidia-drm.ko %{buildroot}%{nvidia_root}/share-nvidia/grid/drivers/ # Install nvidia-gridd and related files -install -m 755 nvidia-gridd %{buildroot}%{_cross_bindir}/nvidia-gridd -install -m 644 %{S:208} %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/gridd.conf +install -m 755 nvidia-gridd %{buildroot}%{nvidia_root}/bin/nvidia-gridd +install -m 644 %{S:208} %{buildroot}%{nvidia_root}/etc-nvidia/gridd.conf install -p -m 0644 %{S:209} %{S:210} %{S:211} %{S:212} %{S:213} %{buildroot}%{_cross_unitdir} install -d %{buildroot}%{_cross_unitdir}/nvidia-k8s-device-plugin.service.d install -p -m 0644 %{S:214} %{buildroot}%{_cross_unitdir}/nvidia-k8s-device-plugin.service.d @@ -463,21 +499,21 @@ popd %endif # Binaries -install -m 755 nvidia-smi %{buildroot}%{_cross_bindir} -install -m 755 nvidia-debugdump %{buildroot}%{_cross_bindir} -install -m 755 nvidia-cuda-mps-control %{buildroot}%{_cross_bindir} -install -m 755 nvidia-cuda-mps-server %{buildroot}%{_cross_bindir} -install -m 755 nvidia-persistenced %{buildroot}%{_cross_bindir} -install -m 4755 nvidia-modprobe %{buildroot}%{_cross_bindir} -install -m 755 nvoptix.bin %{buildroot}%{_cross_datadir}/nvidia/ -ln -rs %{buildroot}%{_cross_bindir}/nvidia-smi %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-smi -ln -rs %{buildroot}%{_cross_bindir}/nvidia-debugdump %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-debugdump -ln -rs %{buildroot}%{_cross_bindir}/nvidia-cuda-mps-control %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-control -ln -rs %{buildroot}%{_cross_bindir}/nvidia-cuda-mps-server %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-server -ln -rs %{buildroot}%{_cross_bindir}/nvidia-persistenced %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-persistenced +install -m 755 nvidia-smi %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-debugdump %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-cuda-mps-control %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-cuda-mps-server %{buildroot}%{nvidia_root}/bin +install -m 755 nvidia-persistenced %{buildroot}%{nvidia_root}/bin +install -m 4755 nvidia-modprobe %{buildroot}%{nvidia_root}/bin +install -m 755 nvoptix.bin %{buildroot}%{nvidia_root}/share-nvidia/ +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-smi %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-smi +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-debugdump %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-debugdump +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-cuda-mps-control %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-control +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-cuda-mps-server %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-server +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-persistenced %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-persistenced %if "%{_cross_arch}" == "x86_64" -install -m 755 nvidia-ngx-updater %{buildroot}%{_cross_bindir} -ln -rs %{buildroot}%{_cross_bindir}/nvidia-ngx-updater %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-ngx-updater +install -m 755 nvidia-ngx-updater %{buildroot}%{nvidia_root}/bin +ln -rs %{buildroot}%{nvidia_root}/bin/nvidia-ngx-updater %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-ngx-updater %endif # Users @@ -488,7 +524,7 @@ install -m 0644 %{S:206} %{buildroot}%{_cross_unitdir} # We install all the libraries, and filter them out in the 'files' section, # so we can catch when new libraries are added -install -m 755 *.so* %{buildroot}/%{_cross_libdir}/ +install -m 755 *.so* %{buildroot}/%{nvidia_root}/lib64/ # This library has the same SONAME as libEGL.so.1.1.0, this will cause # collisions while the symlinks are created. For now, we only symlink @@ -498,11 +534,11 @@ EXCLUDED_LIBS="libEGL.so.%{tesla_ver}" for lib in $(find . -maxdepth 1 -type f -name 'lib*.so.*' -printf '%%P\n'); do [[ "${EXCLUDED_LIBS}" =~ "${lib}" ]] && continue # Create backwards-compatibility symlink in nvidia/tesla/ - ln -rs "%{buildroot}/%{_cross_libdir}/${lib}" "%{buildroot}/%{_cross_libdir}/nvidia/tesla/${lib}" + ln -rs "%{buildroot}/%{nvidia_root}/lib64/${lib}" "%{buildroot}/%{nvidia_root}/lib64/tesla/${lib}" soname="$(%{_cross_target}-readelf -d "${lib}" | awk '/SONAME/{print $5}' | tr -d '[]')" [ -n "${soname}" ] || continue [ "${lib}" == "${soname}" ] && continue - ln -s "${lib}" %{buildroot}/%{_cross_libdir}/"${soname}" + ln -s "${lib}" %{buildroot}/%{nvidia_root}/lib64/"${soname}" done # Include the firmware file for GSP support @@ -512,157 +548,198 @@ install -p -m 0644 firmware/gsp_tu10x.bin %{buildroot}%{_cross_libdir}/firmware/ # Include the open driver supported devices file for runtime matching of the # driver. This is consumed by ghostdog to match the driver to this list -install -p -m 0644 supported-gpus/open-gpu-supported-devices.json %{buildroot}%{_cross_datadir}/nvidia/open-gpu-supported-devices.json +install -p -m 0644 supported-gpus/open-gpu-supported-devices.json %{buildroot}%{nvidia_root}/share-nvidia/open-gpu-supported-devices.json popd # Begin NVIDIA fabric manager binaries and topologies pushd fabricmanager-linux-%{nvidia_arch}-%{tesla_ver}-archive -install -p -m 0755 usr/bin/nv-fabricmanager %{buildroot}%{_cross_bindir} -install -p -m 0755 usr/bin/nvswitch-audit %{buildroot}%{_cross_bindir} -ln -rs %{buildroot}%{_cross_bindir}/nv-fabricmanager %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nv-fabricmanager -ln -rs %{buildroot}%{_cross_bindir}/nvswitch-audit %{buildroot}%{_cross_libexecdir}/nvidia/tesla/bin/nvswitch-audit +install -p -m 0755 usr/bin/nv-fabricmanager %{buildroot}%{nvidia_root}/bin +install -p -m 0755 usr/bin/nvswitch-audit %{buildroot}%{nvidia_root}/bin +ln -rs %{buildroot}%{nvidia_root}/bin/nv-fabricmanager %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nv-fabricmanager +ln -rs %{buildroot}%{nvidia_root}/bin/nvswitch-audit %{buildroot}%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvswitch-audit -install -d %{buildroot}%{_cross_datadir}/nvidia/tesla/nvswitch +install -d %{buildroot}%{nvidia_root}/share-nvidia/tesla/nvswitch for t in usr/share/nvidia/nvswitch/*_topology ; do - install -p -m 0644 "${t}" %{buildroot}%{_cross_datadir}/nvidia/tesla/nvswitch + install -p -m 0644 "${t}" %{buildroot}%{nvidia_root}/share-nvidia/tesla/nvswitch done popd # Begin IMEX binaries and configuration files pushd imex-%{nvidia_arch}-%{tesla_ver}-archive -install -p -m 0755 usr/bin/nvidia-imex %{buildroot}%{_cross_bindir} -install -p -m 0755 usr/bin/nvidia-imex-ctl %{buildroot}%{_cross_bindir} +install -p -m 0755 usr/bin/nvidia-imex %{buildroot}%{nvidia_root}/bin +install -p -m 0755 usr/bin/nvidia-imex-ctl %{buildroot}%{nvidia_root}/bin popd -install -d %{buildroot}%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers +# NVIDIA IMEX service, config, and tmpfiles +install -p -m 0644 %{S:215} %{buildroot}%{_cross_unitdir} +install -d %{buildroot}%{nvidia_root}/etc-nvidia-imex +install -p -m 0644 %{S:216} %{buildroot}%{nvidia_root}/etc-nvidia-imex/config.cfg +install -p -m 0644 %{S:217} %{buildroot}%{_cross_tmpfilesdir}/nvidia-imex.conf + +# NVIDIA IMEX modprobe config +install -d %{buildroot}%{_cross_libdir}/modprobe.d +install -p -m 0644 %{S:218} %{buildroot}%{_cross_libdir}/modprobe.d/10-nvidia-default-imex-channel.conf + +install -d %{buildroot}%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers install -p -m 0644 gdrcopy-%{gdrcopy_ver}/gdrdrv-open-gpu.ko \ - %{buildroot}%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko + %{buildroot}%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko install -p -m 0644 gdrcopy-%{gdrcopy_ver}/LICENSE gdrcopy-LICENSE -sed -e 's|__NVIDIA_MODULES__|%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers/|' %{S:600} > \ - nvidia-gdrcopy-open-gpu.toml -install -m 0644 nvidia-gdrcopy-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers +sed -e 's|__NVIDIA_MODULES__|%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers/|' %{S:600} > \ + nvidia-%{nvidia_branch}-gdrcopy-open-gpu.toml +install -m 0644 nvidia-%{nvidia_branch}-gdrcopy-open-gpu.toml %{buildroot}%{_cross_factorydir}%{_cross_sysconfdir}/drivers -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:601} > copy-gdrcopy-open-gpu-kernel-module.service -sed -e 's|PREFIX|%{_cross_prefix}|g' %{S:602} > load-gdrcopy-open-gpu-kernel-module.service +sed -e 's|PREFIX|%{_cross_prefix}|g' \ + %{S:601} > nvidia-%{nvidia_branch}-copy-gdrcopy-open-gpu-kernel-module.service +sed -e 's|PREFIX|%{_cross_prefix}|g' \ + %{S:602} > nvidia-%{nvidia_branch}-load-gdrcopy-open-gpu-kernel-module.service install -p -m 0644 \ - copy-gdrcopy-open-gpu-kernel-module.service \ - load-gdrcopy-open-gpu-kernel-module.service \ + nvidia-%{nvidia_branch}-copy-gdrcopy-open-gpu-kernel-module.service \ + nvidia-%{nvidia_branch}-load-gdrcopy-open-gpu-kernel-module.service \ %{buildroot}%{_cross_unitdir} -install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.conf +install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-gdrcopy.conf + +# Overlay activation services +install -p -m 0644 %{S:800} %{buildroot}%{_cross_unitdir}/nvidia-fb-overlay-driver.service +install -p -m 0644 %{S:801} %{buildroot}%{_cross_unitdir}/nvidia-fb-overlay-config.service + +# Canonical overlay mountpoints. The branch files now live under %{nvidia_root}; +# these empty directories are the targets the overlay service mounts onto, and +# must exist in the image or the mount fails. (/usr/lib64 and /usr/bin already +# exist in the base OS, so only the /usr/share/* targets are created here.) +install -d %{buildroot}%{_cross_datadir}/nvidia +install -d %{buildroot}%{_cross_datadir}/vulkan +install -d %{buildroot}%{_cross_datadir}/glvnd +install -d %{buildroot}%{_cross_datadir}/egl %files %{_cross_attribution_file} %dir %{_cross_libexecdir}/nvidia -%dir %{_cross_libdir}/nvidia +# Branch-namespaced storage root (overlaid onto canonical paths at boot) +%dir %{_cross_prefix}/nvidia +%dir %{nvidia_root} +%dir %{nvidia_root}/lib64 +%dir %{nvidia_root}/lib64/tesla +%{nvidia_root}/lib64/tesla/* +# Canonical overlay mountpoint (empty; overlay service mounts the branch here) %dir %{_cross_datadir}/nvidia %dir %{_cross_libdir}/modules-load.d +# Flat, shared /etc/drivers factory dir (both branches ship branch-named tomls +# here; %dir is non-%%-exclusive so co-owning it across branches is fine). %dir %{_cross_factorydir}%{_cross_sysconfdir}/drivers -%dir %{_cross_factorydir}%{_cross_sysconfdir}/nvidia +# Base package owns the etc-nvidia storage dirs so the overlay service's lowerdirs +# always exist even when the fabricmanager/grid/imex subpackages are absent. +%dir %{nvidia_root}/etc-nvidia +%dir %{nvidia_root}/etc-nvidia-imex %{_cross_tmpfilesdir}/nvidia.conf %{_cross_libdir}/modules-load.d/nvidia-dependencies.conf +# Overlay activation services +%{_cross_unitdir}/nvidia-fb-overlay-driver.service +%{_cross_unitdir}/nvidia-fb-overlay-config.service + %files tesla %license NVidiaEULAforAWS.pdf %license fabricmanager-linux-%{nvidia_arch}-%{tesla_ver}-archive/usr/share/licenses/nvidia-fabricmanager/third-party-notices.txt %dir %{_cross_datadir}/egl -%dir %{_cross_datadir}/egl/egl_external_platform.d +%dir %{nvidia_root}/share-egl +%dir %{nvidia_root}/share-egl/egl_external_platform.d %dir %{_cross_datadir}/glvnd -%dir %{_cross_datadir}/glvnd/egl_vendor.d -%dir %{_cross_datadir}/nvidia/tesla -%dir %{_cross_datadir}/nvidia/tesla/module-objects.d +%dir %{nvidia_root}/share-glvnd +%dir %{nvidia_root}/share-glvnd/egl_vendor.d +%dir %{nvidia_root}/share-nvidia/tesla +%dir %{nvidia_root}/share-nvidia/tesla/module-objects.d %dir %{_cross_datadir}/vulkan -%dir %{_cross_datadir}/vulkan/icd.d -%dir %{_cross_datadir}/vulkan/implicit_layer.d -%dir %{_cross_factorydir}/nvidia/tesla +%dir %{nvidia_root}/share-vulkan +%dir %{nvidia_root}/share-vulkan/icd.d +%dir %{nvidia_root}/share-vulkan/implicit_layer.d +%dir %{_cross_factorydir}/nvidia/%{nvidia_branch}/tesla %dir %{_cross_libdir}/firmware/nvidia/%{tesla_ver} -%dir %{_cross_libdir}/nvidia/tesla -%{_cross_libdir}/nvidia/tesla/* -%dir %{_cross_libexecdir}/nvidia/tesla/bin - -# Service files for link/copy/loading drivers -%{_cross_unitdir}/link-tesla-kernel-modules.service -%{_cross_unitdir}/load-tesla-kernel-modules.service -%{_cross_unitdir}/copy-open-gpu-kernel-modules.service -%{_cross_unitdir}/load-open-gpu-kernel-modules.service +%dir %{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin + +# Service files for link/copy/loading drivers (branch-namespaced filenames) +%{_cross_unitdir}/nvidia-%{nvidia_branch}-link-tesla-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-tesla-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-copy-open-gpu-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-open-gpu-kernel-modules.service %if "%{_cross_arch}" == "x86_64" -%{_cross_unitdir}/copy-grid-kernel-modules.service -%{_cross_unitdir}/load-grid-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-copy-grid-kernel-modules.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-grid-kernel-modules.service %endif # Binaries -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-debugdump -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-smi -%{_cross_libexecdir}/nvidia/tesla/bin/nv-fabricmanager -%{_cross_libexecdir}/nvidia/tesla/bin/nvswitch-audit -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-persistenced -%{_cross_bindir}/nvidia-debugdump -%{_cross_bindir}/nvidia-smi -%{_cross_bindir}/nv-fabricmanager -%{_cross_bindir}/nvswitch-audit -%{_cross_bindir}/nvidia-persistenced -%{_cross_bindir}/nvidia-modprobe +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-debugdump +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-smi +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nv-fabricmanager +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvswitch-audit +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-persistenced +%{nvidia_root}/bin/nvidia-debugdump +%{nvidia_root}/bin/nvidia-smi +%{nvidia_root}/bin/nv-fabricmanager +%{nvidia_root}/bin/nvswitch-audit +%{nvidia_root}/bin/nvidia-persistenced +%{nvidia_root}/bin/nvidia-modprobe # nvswitch topologies -%dir %{_cross_datadir}/nvidia/tesla/nvswitch -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxa100_hgxa100_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgx2_hgx2_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxh100_hgxh100_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxh800_hgxh800_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxgh200_hgxgh200_16gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxgh200_hgxgh200_32gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/dgxgh200_hgxgh200_8gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl36r1_c2g2_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl36r1_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl4r1_c2g2_etf_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl576r16_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl576r4_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl72r1_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl72r2_c2g2_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl72r2_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_nso_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb300_nvl72r1_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb300_nvl72r1_c2g4_kyber_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gb300_nvl72r2_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/gh200_nvlink_32gpus_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/mgxh20_nvl16_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/vr_nvl144r1_c2g4_topology -%{_cross_datadir}/nvidia/tesla/nvswitch/vr_nvl16r1_c2g4_rtf_topology +%dir %{nvidia_root}/share-nvidia/tesla/nvswitch +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxa100_hgxa100_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgx2_hgx2_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxh100_hgxh100_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxh800_hgxh800_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxgh200_hgxgh200_16gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxgh200_hgxgh200_32gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/dgxgh200_hgxgh200_8gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl36r1_c2g2_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl36r1_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl4r1_c2g2_etf_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl576r16_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl576r4_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl72r1_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl72r2_c2g2_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl72r2_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb200_nvl8r1_c2g4_etf_nso_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb300_nvl72r1_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb300_nvl72r1_c2g4_kyber_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gb300_nvl72r2_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/gh200_nvlink_32gpus_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/mgxh20_nvl16_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/vr_nvl144r1_c2g4_topology +%{nvidia_root}/share-nvidia/tesla/nvswitch/vr_nvl16r1_c2g4_rtf_topology # Configuration files -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-tesla.toml -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-open-gpu.toml -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-open-gpu-copy-only.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-tesla.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-open-gpu.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-open-gpu-copy-only.toml %if "%{_cross_arch}" == "x86_64" -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-grid.toml -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-grid-copy-only.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-grid.toml +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-grid-copy-only.toml %endif -%{_cross_datadir}/nvidia/open-gpu-supported-devices.json +%{nvidia_root}/share-nvidia/open-gpu-supported-devices.json # driver -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia.mod.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-interface.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-kernel.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/.module-common.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia.mod.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-interface.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-kernel.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/.module-common.o # uvm -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-uvm.mod.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-uvm.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-uvm.mod.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-uvm.o # modeset -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-modeset-interface.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nv-modeset-kernel.o -%{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-modeset.mod.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-modeset-interface.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nv-modeset-kernel.o +%{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-modeset.mod.o # tmpfiles -%{_cross_tmpfilesdir}/nvidia-tesla.conf +%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-tesla.conf # sysuser files %{_cross_sysusersdir}/nvidia.conf @@ -670,95 +747,96 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con # systemd units %{_cross_unitdir}/nvidia-persistenced.service -# ICD / vendor descriptors -%{_cross_datadir}/vulkan/icd.d/nvidia_icd.json -%{_cross_datadir}/vulkan/icd.d/nvidia_layers.json -%{_cross_datadir}/vulkan/implicit_layer.d/nvidia_layers.json -%{_cross_datadir}/glvnd/egl_vendor.d/10_nvidia.json -%{_cross_datadir}/egl/egl_external_platform.d/10_nvidia_wayland.json -%{_cross_datadir}/egl/egl_external_platform.d/15_nvidia_gbm.json +# ICD / vendor descriptors (branch-namespaced; overlaid onto the canonical path +# by nvidia-fb-overlay-driver.service) +%{nvidia_root}/share-vulkan/icd.d/nvidia_icd.json +%{nvidia_root}/share-vulkan/icd.d/nvidia_layers.json +%{nvidia_root}/share-vulkan/implicit_layer.d/nvidia_layers.json +%{nvidia_root}/share-glvnd/egl_vendor.d/10_nvidia.json +%{nvidia_root}/share-egl/egl_external_platform.d/10_nvidia_wayland.json +%{nvidia_root}/share-egl/egl_external_platform.d/15_nvidia_gbm.json # We only install the libraries required by all the DRIVER_CAPABILITIES, described here: # https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html#driver-capabilities # Utility libs -%{_cross_libdir}/libnvidia-api.so.1 -%{_cross_libdir}/libnvidia-ml.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-ml.so.1 -%{_cross_libdir}/libnvidia-cfg.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-cfg.so.1 -%{_cross_libdir}/libnvidia-nvvm.so.4 -%{_cross_libdir}/libnvidia-nvvm.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-nvvm70.so.4 +%{nvidia_root}/lib64/libnvidia-api.so.1 +%{nvidia_root}/lib64/libnvidia-ml.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-ml.so.1 +%{nvidia_root}/lib64/libnvidia-cfg.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-cfg.so.1 +%{nvidia_root}/lib64/libnvidia-nvvm.so.4 +%{nvidia_root}/lib64/libnvidia-nvvm.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-nvvm70.so.4 # Compute libs -%{_cross_libdir}/libcuda.so.%{tesla_ver} -%{_cross_libdir}/libcuda.so.1 -%{_cross_libdir}/libcudadebugger.so.%{tesla_ver} -%{_cross_libdir}/libcudadebugger.so.1 -%{_cross_libdir}/libnvidia-opencl.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-opencl.so.1 -%{_cross_libdir}/libnvidia-ptxjitcompiler.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-ptxjitcompiler.so.1 -%{_cross_libdir}/libnvidia-allocator.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-allocator.so.1 -%{_cross_libdir}/libOpenCL.so.1.0.0 -%{_cross_libdir}/libOpenCL.so.1 -%{_cross_libdir}/libnvidia-gpucomp.so.%{tesla_ver} +%{nvidia_root}/lib64/libcuda.so.%{tesla_ver} +%{nvidia_root}/lib64/libcuda.so.1 +%{nvidia_root}/lib64/libcudadebugger.so.%{tesla_ver} +%{nvidia_root}/lib64/libcudadebugger.so.1 +%{nvidia_root}/lib64/libnvidia-opencl.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-opencl.so.1 +%{nvidia_root}/lib64/libnvidia-ptxjitcompiler.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-ptxjitcompiler.so.1 +%{nvidia_root}/lib64/libnvidia-allocator.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-allocator.so.1 +%{nvidia_root}/lib64/libOpenCL.so.1.0.0 +%{nvidia_root}/lib64/libOpenCL.so.1 +%{nvidia_root}/lib64/libnvidia-gpucomp.so.%{tesla_ver} %if "%{_cross_arch}" == "x86_64" -%{_cross_libdir}/libnvidia-pkcs11.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-pkcs11-openssl3.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-pkcs11.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-pkcs11-openssl3.so.%{tesla_ver} %endif # Video libs -%{_cross_libdir}/libvdpau_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libvdpau_nvidia.so.1 -%{_cross_libdir}/libnvidia-encode.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-encode.so.1 -%{_cross_libdir}/libnvidia-opticalflow.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-opticalflow.so.1 -%{_cross_libdir}/libnvcuvid.so.%{tesla_ver} -%{_cross_libdir}/libnvcuvid.so.1 +%{nvidia_root}/lib64/libvdpau_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libvdpau_nvidia.so.1 +%{nvidia_root}/lib64/libnvidia-encode.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-encode.so.1 +%{nvidia_root}/lib64/libnvidia-opticalflow.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-opticalflow.so.1 +%{nvidia_root}/lib64/libnvcuvid.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvcuvid.so.1 # Graphics libs -%{_cross_libdir}/libnvidia-eglcore.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-glcore.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-tls.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-tileiras.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-glsi.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-rtcore.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-fbc.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-fbc.so.1 -%{_cross_libdir}/libnvoptix.so.%{tesla_ver} -%{_cross_libdir}/libnvoptix.so.1 -%{_cross_datadir}/nvidia/nvoptix.bin +%{nvidia_root}/lib64/libnvidia-eglcore.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-glcore.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-tls.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-tileiras.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-glsi.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-rtcore.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-fbc.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-fbc.so.1 +%{nvidia_root}/lib64/libnvoptix.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvoptix.so.1 +%{nvidia_root}/share-nvidia/nvoptix.bin # Graphics GLVND libs -%{_cross_libdir}/libnvidia-glvkspirv.so.%{tesla_ver} -%{_cross_libdir}/libGLX_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libGLX_nvidia.so.0 -%{_cross_libdir}/libEGL_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libEGL_nvidia.so.0 -%{_cross_libdir}/libGLESv2_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libGLESv2_nvidia.so.2 -%{_cross_libdir}/libGLESv1_CM_nvidia.so.%{tesla_ver} -%{_cross_libdir}/libGLESv1_CM_nvidia.so.1 -%{_cross_libdir}/libnvidia-present.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-glvkspirv.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLX_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLX_nvidia.so.0 +%{nvidia_root}/lib64/libEGL_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libEGL_nvidia.so.0 +%{nvidia_root}/lib64/libGLESv2_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLESv2_nvidia.so.2 +%{nvidia_root}/lib64/libGLESv1_CM_nvidia.so.%{tesla_ver} +%{nvidia_root}/lib64/libGLESv1_CM_nvidia.so.1 +%{nvidia_root}/lib64/libnvidia-present.so.%{tesla_ver} # Graphics compat -%{_cross_libdir}/libEGL.so.1.1.0 -%{_cross_libdir}/libEGL.so.1 -%{_cross_libdir}/libEGL.so.%{tesla_ver} -%{_cross_libdir}/libGL.so.1.7.0 -%{_cross_libdir}/libGL.so.1 -%{_cross_libdir}/libGLESv1_CM.so.1.2.0 -%{_cross_libdir}/libGLESv1_CM.so.1 -%{_cross_libdir}/libGLESv2.so.2.1.0 -%{_cross_libdir}/libGLESv2.so.2 +%{nvidia_root}/lib64/libEGL.so.1.1.0 +%{nvidia_root}/lib64/libEGL.so.1 +%{nvidia_root}/lib64/libEGL.so.%{tesla_ver} +%{nvidia_root}/lib64/libGL.so.1.7.0 +%{nvidia_root}/lib64/libGL.so.1 +%{nvidia_root}/lib64/libGLESv1_CM.so.1.2.0 +%{nvidia_root}/lib64/libGLESv1_CM.so.1 +%{nvidia_root}/lib64/libGLESv2.so.2.1.0 +%{nvidia_root}/lib64/libGLESv2.so.2 # NGX -%{_cross_libdir}/libnvidia-ngx.so.%{tesla_ver} -%{_cross_libdir}/libnvidia-ngx.so.1 +%{nvidia_root}/lib64/libnvidia-ngx.so.%{tesla_ver} +%{nvidia_root}/lib64/libnvidia-ngx.so.1 # Firmware %{_cross_libdir}/firmware/nvidia/%{tesla_ver}/gsp_ga10x.bin @@ -766,52 +844,52 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con # Neither nvidia-peermem nor nvidia-drm are included in driver container images, we exclude them # for now, and we will add them if requested -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-peermem.mod.o -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-peermem.o -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-drm.mod.o -%exclude %{_cross_datadir}/nvidia/tesla/module-objects.d/nvidia-drm.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-peermem.mod.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-peermem.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-drm.mod.o +%exclude %{nvidia_root}/share-nvidia/tesla/module-objects.d/nvidia-drm.o %if "%{_cross_arch}" == "x86_64" -%exclude %{_cross_libexecdir}/nvidia/tesla/bin/nvidia-ngx-updater -%exclude %{_cross_bindir}/nvidia-ngx-updater +%exclude %{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-ngx-updater +%exclude %{nvidia_root}/bin/nvidia-ngx-updater %endif # None of these libraries are required by libnvidia-container, so they # won't be used by a containerized workload -%exclude %{_cross_libdir}/libGLX.so.0 -%exclude %{_cross_libdir}/libGLdispatch.so.0 -%exclude %{_cross_libdir}/libOpenGL.so.0 -%exclude %{_cross_libdir}/libglxserver_nvidia.so.%{tesla_ver} -%exclude %{_cross_libdir}/libnvidia-gtk2.so.%{tesla_ver} -%exclude %{_cross_libdir}/libnvidia-gtk3.so.%{tesla_ver} -%exclude %{_cross_libdir}/nvidia_drv.so -%exclude %{_cross_libdir}/libnvidia-egl-wayland.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-gbm.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-gbm.so.1.1.3 -%exclude %{_cross_libdir}/libnvidia-egl-wayland.so.1.1.20 -%exclude %{_cross_libdir}/libnvidia-egl-wayland2.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-wayland2.so.1.0.1 -%exclude %{_cross_libdir}/libnvidia-egl-xcb.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-xcb.so.1.0.5 -%exclude %{_cross_libdir}/libnvidia-egl-xlib.so.1 -%exclude %{_cross_libdir}/libnvidia-egl-xlib.so.1.0.5 -%exclude %{_cross_libdir}/libnvidia-sandboxutils.so.1 -%exclude %{_cross_libdir}/libnvidia-sandboxutils.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libGLX.so.0 +%exclude %{nvidia_root}/lib64/libGLdispatch.so.0 +%exclude %{nvidia_root}/lib64/libOpenGL.so.0 +%exclude %{nvidia_root}/lib64/libglxserver_nvidia.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-gtk2.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-gtk3.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/nvidia_drv.so +%exclude %{nvidia_root}/lib64/libnvidia-egl-wayland.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-gbm.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-gbm.so.1.1.3 +%exclude %{nvidia_root}/lib64/libnvidia-egl-wayland.so.1.1.20 +%exclude %{nvidia_root}/lib64/libnvidia-egl-wayland2.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-wayland2.so.1.0.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xcb.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xcb.so.1.0.5 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xlib.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-egl-xlib.so.1.0.5 +%exclude %{nvidia_root}/lib64/libnvidia-sandboxutils.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-sandboxutils.so.%{tesla_ver} %if "%{_cross_arch}" == "x86_64" -%exclude %{_cross_libdir}/libnvidia-vksc-core.so.1 -%exclude %{_cross_libdir}/libnvidia-vksc-core.so.%{tesla_ver} -%exclude %{_cross_libdir}/libnvidia-wayland-client.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-vksc-core.so.1 +%exclude %{nvidia_root}/lib64/libnvidia-vksc-core.so.%{tesla_ver} +%exclude %{nvidia_root}/lib64/libnvidia-wayland-client.so.%{tesla_ver} %endif %files open-gpu %license COPYING -%dir %{_cross_datadir}/nvidia/open-gpu/drivers -%dir %{_cross_factorydir}/nvidia/open-gpu +%dir %{nvidia_root}/share-nvidia/open-gpu/drivers +%dir %{_cross_factorydir}/nvidia/%{nvidia_branch}/open-gpu -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-uvm.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-modeset.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-drm.ko -%{_cross_datadir}/nvidia/open-gpu/drivers/nvidia-peermem.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-uvm.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-modeset.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-drm.ko +%{nvidia_root}/share-nvidia/open-gpu/drivers/nvidia-peermem.ko # GRID driver files %if "%{_cross_arch}" == "x86_64" @@ -819,10 +897,10 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con %license COPYING %license NvidiaGridAWSUserLicenseAgreement.DOCX %license NVIDIA-Linux-x86_64-%{tesla_ver}-grid-aws/grid-third-party-licenses.txt -%dir %{_cross_datadir}/nvidia/grid/drivers -%dir %{_cross_factorydir}/nvidia/grid -%{_cross_bindir}/nvidia-gridd -%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/gridd.conf +%dir %{nvidia_root}/share-nvidia/grid/drivers +%dir %{_cross_factorydir}/nvidia/%{nvidia_branch}/grid +%{nvidia_root}/bin/nvidia-gridd +%{nvidia_root}/etc-nvidia/gridd.conf %{_cross_unitdir}/nvidia-gridd.service %{_cross_unitdir}/grid-license-check.service %{_cross_unitdir}/grid-license-check.timer @@ -830,36 +908,41 @@ install -p -m 0644 %{S:603} %{buildroot}%{_cross_tmpfilesdir}/nvidia-gdrcopy.con %{_cross_unitdir}/tesla-license-fallback.service %{_cross_unitdir}/nvidia-k8s-device-plugin.service.d/grid-license-file-check.conf -%{_cross_datadir}/nvidia/grid/drivers/nvidia.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-uvm.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-modeset.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-drm.ko -%{_cross_datadir}/nvidia/grid/drivers/nvidia-peermem.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-uvm.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-modeset.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-drm.ko +%{nvidia_root}/share-nvidia/grid/drivers/nvidia-peermem.ko %endif %files fabricmanager -%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.cfg -%{_cross_factorydir}%{_cross_sysconfdir}/nvidia/fabricmanager.env +%{nvidia_root}/etc-nvidia/fabricmanager.cfg +%{nvidia_root}/etc-nvidia/fabricmanager.env %{_cross_unitdir}/nvidia-fabricmanager.service %files imex -%{_cross_bindir}/nvidia-imex -%{_cross_bindir}/nvidia-imex-ctl +%{nvidia_root}/bin/nvidia-imex +%{nvidia_root}/bin/nvidia-imex-ctl +%{_cross_unitdir}/nvidia-imex.service +%{nvidia_root}/etc-nvidia-imex/config.cfg +%{_cross_tmpfilesdir}/nvidia-imex.conf -%files mps -%{_cross_bindir}/nvidia-cuda-mps-control -%{_cross_bindir}/nvidia-cuda-mps-server -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-control -%{_cross_libexecdir}/nvidia/tesla/bin/nvidia-cuda-mps-server +%files imex-config +%{_cross_libdir}/modprobe.d/10-nvidia-default-imex-channel.conf +%files mps +%{nvidia_root}/bin/nvidia-cuda-mps-control +%{nvidia_root}/bin/nvidia-cuda-mps-server +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-control +%{_cross_libexecdir}/nvidia/%{nvidia_branch}/tesla/bin/nvidia-cuda-mps-server %files gdrcopy %license gdrcopy-LICENSE -%dir %{_cross_datadir}/nvidia/gdrcopy -%dir %{_cross_datadir}/nvidia/gdrcopy/open-gpu -%dir %{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers -%{_cross_datadir}/nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko -%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-gdrcopy-open-gpu.toml -%{_cross_tmpfilesdir}/nvidia-gdrcopy.conf -%{_cross_unitdir}/copy-gdrcopy-open-gpu-kernel-module.service -%{_cross_unitdir}/load-gdrcopy-open-gpu-kernel-module.service +%dir %{nvidia_root}/share-nvidia/gdrcopy +%dir %{nvidia_root}/share-nvidia/gdrcopy/open-gpu +%dir %{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers +%{nvidia_root}/share-nvidia/gdrcopy/open-gpu/drivers/gdrdrv.ko +%{_cross_factorydir}%{_cross_sysconfdir}/drivers/nvidia-%{nvidia_branch}-gdrcopy-open-gpu.toml +%{_cross_tmpfilesdir}/nvidia-%{nvidia_branch}-gdrcopy.conf +%{_cross_unitdir}/nvidia-%{nvidia_branch}-copy-gdrcopy-open-gpu-kernel-module.service +%{_cross_unitdir}/nvidia-%{nvidia_branch}-load-gdrcopy-open-gpu-kernel-module.service diff --git a/packages/kmod-6.18-nvidia-r595/link-tesla-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r595/link-tesla-fb-kernel-modules.service.in similarity index 72% rename from packages/kmod-6.18-nvidia-r595/link-tesla-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r595/link-tesla-fb-kernel-modules.service.in index 996b9f983..af1c1c097 100644 --- a/packages/kmod-6.18-nvidia-r595/link-tesla-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r595/link-tesla-fb-kernel-modules.service.in @@ -1,6 +1,8 @@ [Unit] Description=Link Tesla kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels +# Order after the branch overlay so ghostdog/driverdog see files at canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service # Rerunning this service after the system is fully loaded will override # the already linked kernel modules. This doesn't affect the running system, # since kernel modules are linked early in the boot sequence, but we still @@ -11,7 +13,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver tesla -ExecStart=/usr/bin/driverdog --modules-set nvidia-tesla link-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-tesla link-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/load-gdrcopy-open-gpu-kernel-module.service.in b/packages/kmod-6.18-nvidia-r595/load-gdrcopy-open-gpu-fb-kernel-module.service.in similarity index 62% rename from packages/kmod-6.18-nvidia-r580/load-gdrcopy-open-gpu-kernel-module.service.in rename to packages/kmod-6.18-nvidia-r595/load-gdrcopy-open-gpu-fb-kernel-module.service.in index 9d4f65047..97e2bb342 100644 --- a/packages/kmod-6.18-nvidia-r580/load-gdrcopy-open-gpu-kernel-module.service.in +++ b/packages/kmod-6.18-nvidia-r595/load-gdrcopy-open-gpu-fb-kernel-module.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load GDRCopy kernel module (open-gpu) RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=copy-gdrcopy-open-gpu-kernel-module.service load-open-gpu-kernel-modules.service -Requires=copy-gdrcopy-open-gpu-kernel-module.service load-open-gpu-kernel-modules.service +After=nvidia-fb-copy-gdrcopy-open-gpu-kernel-module.service nvidia-fb-load-open-gpu-kernel-modules.service +Requires=nvidia-fb-copy-gdrcopy-open-gpu-kernel-module.service nvidia-fb-load-open-gpu-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-gdrcopy-open-gpu load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-gdrcopy-open-gpu load-modules ExecStart=/usr/bin/ghostdog create-device gdrdrv 0 --path /dev/gdrdrv RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r580/load-grid-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r595/load-grid-fb-kernel-modules.service.in similarity index 70% rename from packages/kmod-6.18-nvidia-r580/load-grid-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r595/load-grid-fb-kernel-modules.service.in index c6ca702fe..66d665690 100644 --- a/packages/kmod-6.18-nvidia-r580/load-grid-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r595/load-grid-fb-kernel-modules.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load GRID kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=copy-grid-kernel-modules.service -Requires=copy-grid-kernel-modules.service +After=nvidia-fb-copy-grid-kernel-modules.service +Requires=nvidia-fb-copy-grid-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver grid -ExecStart=/usr/bin/driverdog --modules-set nvidia-grid load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-grid load-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/load-open-gpu-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r595/load-open-gpu-fb-kernel-modules.service.in similarity index 69% rename from packages/kmod-6.18-nvidia-r595/load-open-gpu-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r595/load-open-gpu-fb-kernel-modules.service.in index fa67fc427..79e595ec4 100644 --- a/packages/kmod-6.18-nvidia-r595/load-open-gpu-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r595/load-open-gpu-fb-kernel-modules.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load open GPU kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=copy-open-gpu-kernel-modules.service -Requires=copy-open-gpu-kernel-modules.service +After=nvidia-fb-copy-open-gpu-kernel-modules.service +Requires=nvidia-fb-copy-open-gpu-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver open-gpu -ExecStart=/usr/bin/driverdog --modules-set nvidia-open-gpu load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-open-gpu load-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/load-tesla-kernel-modules.service.in b/packages/kmod-6.18-nvidia-r595/load-tesla-fb-kernel-modules.service.in similarity index 70% rename from packages/kmod-6.18-nvidia-r595/load-tesla-kernel-modules.service.in rename to packages/kmod-6.18-nvidia-r595/load-tesla-fb-kernel-modules.service.in index b4dbf0783..8b2f73123 100644 --- a/packages/kmod-6.18-nvidia-r595/load-tesla-kernel-modules.service.in +++ b/packages/kmod-6.18-nvidia-r595/load-tesla-fb-kernel-modules.service.in @@ -1,8 +1,8 @@ [Unit] Description=Load Tesla kernel modules RequiresMountsFor=PREFIX/lib/modules PREFIX/src/kernels -After=link-tesla-kernel-modules.service -Requires=link-tesla-kernel-modules.service +After=nvidia-fb-link-tesla-kernel-modules.service +Requires=nvidia-fb-link-tesla-kernel-modules.service # Disable manual restarts to prevent loading kernel modules # that weren't linked by the running system RefuseManualStart=true @@ -11,7 +11,7 @@ RefuseManualStop=true [Service] Type=oneshot ExecCondition=/usr/bin/ghostdog match-nvidia-driver tesla -ExecStart=/usr/bin/driverdog --modules-set nvidia-tesla load-modules +ExecStart=/usr/bin/driverdog --modules-set nvidia-fb-tesla load-modules RemainAfterExit=true StandardError=journal+console diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-fabricmanager.service b/packages/kmod-6.18-nvidia-r595/nvidia-fabricmanager.service index 620b49ae4..642017163 100644 --- a/packages/kmod-6.18-nvidia-r595/nvidia-fabricmanager.service +++ b/packages/kmod-6.18-nvidia-r595/nvidia-fabricmanager.service @@ -3,6 +3,10 @@ Description=NVIDIA fabric manager service Wants=modprobe@ib_umad.service After=modprobe@ib_umad.service nvlsm-online.service Requires=nvlsm-online.service +# nv-fabricmanager and its /etc/nvidia config come from the branch overlays; +# order after both branches' overlays (absent branch is a no-op). +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service +After=nvidia-lts-overlay-config.service nvidia-fb-overlay-config.service [Service] EnvironmentFile=/etc/nvidia/fabricmanager.env diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-fb-overlay-config.service b/packages/kmod-6.18-nvidia-r595/nvidia-fb-overlay-config.service new file mode 100644 index 000000000..fc5595ca9 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-fb-overlay-config.service @@ -0,0 +1,24 @@ +[Unit] +Description=NVIDIA fb branch /etc config overlays +DefaultDependencies=no +Before=drivers.target +# Upper/workdir live on the /etc tmpfs +RequiresMountsFor=/etc + +[Service] +Type=oneshot +RemainAfterExit=true +StandardError=journal+console +# Project the branch's /etc/nvidia config onto the canonical path. Used by +# nvidia-fabricmanager, nvidia-gridd and nvlsm +ExecStart=/usr/bin/mkdir -p \ + /etc/nvidia \ + /etc/nvidia-imex \ + /etc/.nvidia-config-overlay/upper \ + /etc/.nvidia-config-overlay/work +ExecStart=/usr/bin/mount -t overlay nvidia-etc --options rw,nosuid,nodev,noexec,noatime,context=system_u:object_r:etc_t:s0,lowerdir=/usr/nvidia/fb/etc-nvidia:/etc/nvidia,upperdir=/etc/.nvidia-config-overlay/upper,workdir=/etc/.nvidia-config-overlay/work /etc/nvidia + +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/fb/etc-nvidia-imex:/etc/nvidia-imex /etc/nvidia-imex + +[Install] +RequiredBy=drivers.target diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-fb-overlay-driver.service b/packages/kmod-6.18-nvidia-r595/nvidia-fb-overlay-driver.service new file mode 100644 index 000000000..da8f5e6fb --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-fb-overlay-driver.service @@ -0,0 +1,36 @@ +[Unit] +Description=NVIDIA fb branch driver library/binary and kernel-module overlays +DefaultDependencies=no +Before=drivers.target +# The modules re-layer's upper/work live under /var/lib/kernel-modules, which +# prepare-var.service creates +Wants=prepare-var.service +After=prepare-var.service +RequiresMountsFor=/var /usr/lib/modules + +[Service] +Type=oneshot +RemainAfterExit=true +StandardError=journal+console + +# The /usr/lib64 overlay shadows the /usr/lib/modules mount. +# To preserve /usr/lib/modules, we bind the lib-modules +# overlay to a second path and then re-layer it as a lowerdir +ExecStart=/usr/bin/mkdir -p \ + /run/nvidia/base-modules \ + /var/lib/kernel-modules/.nvidia/upper \ + /var/lib/kernel-modules/.nvidia/work +ExecStart=/usr/bin/mount --bind /usr/lib/modules /run/nvidia/base-modules +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nodev,noatime,lowerdir=/usr/nvidia/fb/lib64:/usr/lib64 /usr/lib64 +# Remount /run/nvidia/base-modules on /usr/lib/modules bringing back the original +# /lib/modules as the lowerdir with new upperdir and workdir for write access +ExecStart=/usr/bin/mount -t overlay nvidia-modules --options rw,nosuid,nodev,noexec,noatime,context=system_u:object_r:state_t:s0,lowerdir=/run/nvidia/base-modules,upperdir=/var/lib/kernel-modules/.nvidia/upper,workdir=/var/lib/kernel-modules/.nvidia/work /usr/lib/modules + +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/fb/share-nvidia:/usr/share/nvidia /usr/share/nvidia +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nodev,noatime,lowerdir=/usr/nvidia/fb/bin:/usr/bin /usr/bin +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/fb/share-vulkan:/usr/share/vulkan /usr/share/vulkan +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/fb/share-glvnd:/usr/share/glvnd /usr/share/glvnd +ExecStart=/usr/bin/mount -t overlay overlay --options ro,nosuid,nodev,noexec,noatime,lowerdir=/usr/nvidia/fb/share-egl:/usr/share/egl /usr/share/egl + +[Install] +RequiredBy=drivers.target diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-fb-tmpfiles.conf b/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-fb-tmpfiles.conf new file mode 100644 index 000000000..1302f59b8 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-fb-tmpfiles.conf @@ -0,0 +1 @@ +C /etc/drivers/nvidia-fb-gdrcopy-open-gpu.toml diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-open-gpu-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-open-gpu-fb-config.toml.in similarity index 55% rename from packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-open-gpu-config.toml.in rename to packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-open-gpu-fb-config.toml.in index 6d73cb07e..4f61a803a 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-gdrcopy-open-gpu-config.toml.in +++ b/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-open-gpu-fb-config.toml.in @@ -1,5 +1,5 @@ -[nvidia-gdrcopy-open-gpu] +[nvidia-fb-gdrcopy-open-gpu] lib-modules-path = "kernel/drivers/extra/video/nvidia/gdrcopy/open-gpu" -[nvidia-gdrcopy-open-gpu.kernel-modules."gdrdrv.ko"] +[nvidia-fb-gdrcopy-open-gpu.kernel-modules."gdrdrv.ko"] copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-tmpfiles.conf b/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-tmpfiles.conf deleted file mode 100644 index 92ee7102f..000000000 --- a/packages/kmod-6.18-nvidia-r595/nvidia-gdrcopy-tmpfiles.conf +++ /dev/null @@ -1 +0,0 @@ -C /etc/drivers/nvidia-gdrcopy-open-gpu.toml diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-grid-copy-only-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-grid-copy-only-config.toml.in deleted file mode 100644 index c8f250b76..000000000 --- a/packages/kmod-6.18-nvidia-r595/nvidia-grid-copy-only-config.toml.in +++ /dev/null @@ -1,8 +0,0 @@ -[nvidia-grid-copy-only] -lib-modules-path = "kernel/drivers/extra/video/nvidia/grid" - -[nvidia-grid-copy-only.kernel-modules."nvidia-drm.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-grid-copy-only.kernel-modules."nvidia-peermem.ko"] -copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-grid-copy-only-fb-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-grid-copy-only-fb-config.toml.in new file mode 100644 index 000000000..faf2cc322 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-grid-copy-only-fb-config.toml.in @@ -0,0 +1,8 @@ +[nvidia-fb-grid-copy-only] +lib-modules-path = "kernel/drivers/extra/video/nvidia/grid" + +[nvidia-fb-grid-copy-only.kernel-modules."nvidia-drm.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-fb-grid-copy-only.kernel-modules."nvidia-peermem.ko"] +copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-grid-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-grid-fb-config.toml.in similarity index 51% rename from packages/kmod-6.18-nvidia-r580/nvidia-grid-config.toml.in rename to packages/kmod-6.18-nvidia-r595/nvidia-grid-fb-config.toml.in index aa80e7629..450331a67 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-grid-config.toml.in +++ b/packages/kmod-6.18-nvidia-r595/nvidia-grid-fb-config.toml.in @@ -1,11 +1,11 @@ -[nvidia-grid] +[nvidia-fb-grid] lib-modules-path = "kernel/drivers/extra/video/nvidia/grid" -[nvidia-grid.kernel-modules."nvidia.ko"] +[nvidia-fb-grid.kernel-modules."nvidia.ko"] copy-source = "__NVIDIA_MODULES__" -[nvidia-grid.kernel-modules."nvidia-modeset.ko"] +[nvidia-fb-grid.kernel-modules."nvidia-modeset.ko"] copy-source = "__NVIDIA_MODULES__" -[nvidia-grid.kernel-modules."nvidia-uvm.ko"] +[nvidia-fb-grid.kernel-modules."nvidia-uvm.ko"] copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-gridd.service b/packages/kmod-6.18-nvidia-r595/nvidia-gridd.service index 902aeb605..4a551eee8 100644 --- a/packages/kmod-6.18-nvidia-r595/nvidia-gridd.service +++ b/packages/kmod-6.18-nvidia-r595/nvidia-gridd.service @@ -2,6 +2,10 @@ Description=NVIDIA Grid Daemon Wants=systemd-resolved.service network-online.target nvidia-persistenced.service After=systemd-resolved.service network-online.target nvidia-persistenced.service +# Order after the branch overlays: needs libs/binary (driver overlay) and +# /etc/nvidia/gridd.conf (config overlay) at their canonical paths. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service +After=nvidia-lts-overlay-config.service nvidia-fb-overlay-config.service [Service] Type=forking diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-imex-default-channel.conf b/packages/kmod-6.18-nvidia-r595/nvidia-imex-default-channel.conf new file mode 100644 index 000000000..50e5a6704 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-imex-default-channel.conf @@ -0,0 +1 @@ +options nvidia NVreg_CreateImexChannel0=1 diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-imex-tmpfiles.conf b/packages/kmod-6.18-nvidia-r595/nvidia-imex-tmpfiles.conf new file mode 100644 index 000000000..c27558cbc --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-imex-tmpfiles.conf @@ -0,0 +1 @@ +d /etc/nvidia-imex 0755 root root - diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-imex.cfg b/packages/kmod-6.18-nvidia-r595/nvidia-imex.cfg new file mode 100644 index 000000000..5560efd3d --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-imex.cfg @@ -0,0 +1,140 @@ +# NVIDIA IMEX configuration file. +# Note: This configuration file is read during IMEX startup. So, IMEX +# service restart is required for new settings to take effect. + +# Description: IMEX logging levels +# Possible Values: +# 0 - All the logging is disabled +# 1 - Set log level to CRITICAL and above +# 2 - Set log level to ERROR and above +# 3 - Set log level to WARNING and above +# 4 - Set log level to INFO and above +# Default Value: 4 +LOG_LEVEL=3 + +# Description: Filename for IMEX logs +# Possible Values: +# Full path/filename string (max length of 256). Logs will be redirected +# to console(stderr). If the specified log file can't be opened or the +# path is empty. +# Default Value: /var/log/nvidia-imex.log +LOG_FILE_NAME= + +# Description: Filename for IMEX stats logging +# Possible Values: +# Full path/filename string (max length of 256). Stats will be redirected +# to console(stderr), if the specified stats file can't be opened or the +# path is empty. +# Default Value: /var/log/nvidia-imex-stats.log +# Note: If STATS_FILE_NAME is configured same as LOG_FILE_NAME, then stats will +# be redirected to the path/filename specified by LOG_FILE_NAME. +STATS_FILE_NAME= + +# Description: Append to an existing log file or overwrite the logs +# Possible Values: +# 0 - No (Log file will be overwritten) +# 1 - Yes (Append to existing log) +# Default Value: 1 +LOG_APPEND_TO_LOG=1 + +# Description: Max size of log file (in MB) +# Possible Values: +# Any Integer values +# Default Value: 1024 +LOG_FILE_MAX_SIZE=1024 + +# Description: Number of times the IMEX log is rotated once it reaches LOG_FILE_MAX_SIZE +# Possible Values: +# 0 - Log is not rotated. Logging is stopped once the IMEX log file reaches +# the size specified in LOG_FILE_MAX_SIZE +# Non-zero Integer - Log is rotated upto the number of times specified in LOG_MAX_ROTATE_COUNT, +# after the size of the log file reaches the size specified in LOG_FILE_MAX_SIZE. +# Combined IMEX log size is LOG_FILE_MAX_SIZE multipled by LOG_MAX_ROTATE_COUNT+1 +# Once this threshold is reached, the oldest log file is purged and reused. +LOG_MAX_ROTATE_COUNT=3 + +# Description: Redirect all the logs to syslog instead of logging to file +# Possible Values: +# 0 - No +# 1 - Yes +# Default Value: 0 +LOG_USE_SYSLOG=1 + +# Description: daemonize IMEX on start-up +# Possible Values: +# 0 - No (Do not daemonize and run IMEX as a normal process) +# 1 - Yes (Run IMEX process as Unix daemon +# Default Value: 1 +DAEMONIZE=0 + +# Description: Network interface to listen for IMEX peer communication. +# OPTIONAL - empty value will determine the bind IP from the node config file. +# Possible Values: +# A valid IPv4 address +# A valid IPv6 address +# No value - Determine bind IP from the node configuration file. +# Default Value: +BIND_INTERFACE_IP= + +# Description: Starting TCP port number for IMEX peer communication +# Possible Values: +# Any value between 0 and 65535 +# Default Value: 50000 +SERVER_PORT=50000 + +# Description: Name of file containing IP addresses of nodes +# Possible Values: +# Full path/filename string (max length of 256). +# Default Value: /etc/nvidia-imex/nodes_config.cfg +IMEX_NODE_CONFIG_FILE=/etc/nvidia-imex/nodes_config.cfg + +# Description: Name of the network interface used for communication. +# OPTIONAL - If empty, network interface will be determined by matching bind IP to +# node configuration file. Only necessary to configure if the bind IP +# is IPv6 link-local and on multiple network interfaces. +# Possible Values: +# A valid interface name. e.g. eth0, ens32 .. etc +# Default Value: +NETWORK_INTERFACE= + +# Description: Name of the network interface used for outgoing connections. +# OPTIONAL - If empty, outgoing network interface will be determined automatically. +# Only necessary if user desires to force all +# outgoing connections to use a particular interface. +# Possible Values: +# A valid interface name. e.g. eth0, ens32 .. etc +# Default Value: +OUTGOING_NETWORK_INTERFACE= + +# Description: Controls whether IMEX should complete initialization without establishing quorum +# Possible values: +# NONE: Do not wait for any quorum with other nodes. +# RECOVERY: In case of unsafe IMEX termination, wait until all nodes that had previously imported +# have connected, allowing them time to safely clean up any potentially hanging references +# Default value: RECOVERY +IMEX_WAIT_FOR_QUORUM=RECOVERY + +# Description: Enabled the command/control service to allow for querying information from the IMEX daemon. +# Must be used with IMEX_CMD_PORT (optionally IMEX_CMD_BIND_INTERFACE_IP) and/or +# IMEX_CMD_UNIX_DOMAIN_PATH +IMEX_CMD_ENABLED=1 + +# Description: Unix domain socket path to attach to for the command/control service. Ignored if IMEX_CMD_ENABLED=0 +IMEX_CMD_UNIX_DOMAIN_PATH=/run/nvidia/nvidia-imex-cmd.sock + +# Description: Determines how long to wait after detecting that the IMEX daemon has lost connection to another +# node before triggering clean up imports and exports from that node. If a connection is reestablished +# before the grace period expires, and IMEX is able to identify that it is the same instance previously +# connected, then no clean up is required. If a connection is established and IMEX detects that it is +# a new instance (i.e. someone restarted the IMEX daemon), then clean up will be immediately triggered +# regardless of grace period. +# -1: Default - Wait indefinitely +# 0: Immediately trigger clean up +# >0: Number of seconds to wait before triggering clean up +IMEX_NODE_DISCONNECTED_GRACE_TIME=-1 + +# Description: Optionally configure the DSCP value for both the listening server socket and the outgoing client +# connections. +# 0: Default +# 1-63: Custom DSCP setting +IMEX_GRPC_DSCP_OVERRIDE=0 diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-imex.service b/packages/kmod-6.18-nvidia-r595/nvidia-imex.service new file mode 100644 index 000000000..7095ed0ea --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-imex.service @@ -0,0 +1,11 @@ +[Unit] +Description=NVIDIA IMEX service +After=network-online.target +Requires=network-online.target + +[Service] +Type=simple +ExecStart=/usr/bin/nvidia-imex -c /etc/nvidia-imex/config.cfg +StandardOutput=journal +StandardError=journal +LimitCORE=infinity diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-config.toml.in deleted file mode 100644 index 5ae81b716..000000000 --- a/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-config.toml.in +++ /dev/null @@ -1,11 +0,0 @@ -[nvidia-open-gpu] -lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" - -[nvidia-open-gpu.kernel-modules."nvidia.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-open-gpu.kernel-modules."nvidia-modeset.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-open-gpu.kernel-modules."nvidia-uvm.ko"] -copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-copy-only-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-copy-only-config.toml.in deleted file mode 100644 index 774867d42..000000000 --- a/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-copy-only-config.toml.in +++ /dev/null @@ -1,8 +0,0 @@ -[nvidia-open-gpu-copy-only] -lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" - -[nvidia-open-gpu-copy-only.kernel-modules."nvidia-drm.ko"] -copy-source = "__NVIDIA_MODULES__" - -[nvidia-open-gpu-copy-only.kernel-modules."nvidia-peermem.ko"] -copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-copy-only-fb-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-copy-only-fb-config.toml.in new file mode 100644 index 000000000..04a4dd11d --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-copy-only-fb-config.toml.in @@ -0,0 +1,8 @@ +[nvidia-fb-open-gpu-copy-only] +lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" + +[nvidia-fb-open-gpu-copy-only.kernel-modules."nvidia-drm.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-fb-open-gpu-copy-only.kernel-modules."nvidia-peermem.ko"] +copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-fb-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-fb-config.toml.in new file mode 100644 index 000000000..cf420c5cd --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-open-gpu-fb-config.toml.in @@ -0,0 +1,11 @@ +[nvidia-fb-open-gpu] +lib-modules-path = "kernel/drivers/extra/video/nvidia/open-gpu" + +[nvidia-fb-open-gpu.kernel-modules."nvidia.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-fb-open-gpu.kernel-modules."nvidia-modeset.ko"] +copy-source = "__NVIDIA_MODULES__" + +[nvidia-fb-open-gpu.kernel-modules."nvidia-uvm.ko"] +copy-source = "__NVIDIA_MODULES__" diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-persistenced.service b/packages/kmod-6.18-nvidia-r595/nvidia-persistenced.service index bf09163d3..4bd8bed52 100644 --- a/packages/kmod-6.18-nvidia-r595/nvidia-persistenced.service +++ b/packages/kmod-6.18-nvidia-r595/nvidia-persistenced.service @@ -1,6 +1,8 @@ [Unit] Description=NVIDIA Persistence Daemon -After=load-tesla-kernel-modules.service load-open-gpu-kernel-modules.service load-grid-kernel-modules.service +# Ensure persistenced starts after /dev/nvidia* exists +After=nvidia-lts-load-tesla-kernel-modules.service nvidia-lts-load-open-gpu-kernel-modules.service nvidia-lts-load-grid-kernel-modules.service +After=nvidia-fb-load-tesla-kernel-modules.service nvidia-fb-load-open-gpu-kernel-modules.service nvidia-fb-load-grid-kernel-modules.service [Service] Type=forking diff --git a/packages/kmod-6.18-nvidia-r580/nvidia-tesla-build-config.toml.in b/packages/kmod-6.18-nvidia-r595/nvidia-tesla-fb-build-config.toml.in similarity index 62% rename from packages/kmod-6.18-nvidia-r580/nvidia-tesla-build-config.toml.in rename to packages/kmod-6.18-nvidia-r595/nvidia-tesla-fb-build-config.toml.in index 0b5082f8c..be521ed68 100644 --- a/packages/kmod-6.18-nvidia-r580/nvidia-tesla-build-config.toml.in +++ b/packages/kmod-6.18-nvidia-r595/nvidia-tesla-fb-build-config.toml.in @@ -1,18 +1,18 @@ -[nvidia-tesla] +[nvidia-fb-tesla] lib-modules-path = "kernel/drivers/extra/video/nvidia/tesla" objects-source = "__NVIDIA_MODULES__" -[nvidia-tesla.object-files."nvidia.o"] +[nvidia-fb-tesla.object-files."nvidia.o"] link-objects = ["nv-interface.o", "nv-kernel.o"] -[nvidia-tesla.kernel-modules."nvidia.ko"] +[nvidia-fb-tesla.kernel-modules."nvidia.ko"] link-objects = ["nvidia.o", "nvidia.mod.o", ".module-common.o"] -[nvidia-tesla.object-files."nvidia-modeset.o"] +[nvidia-fb-tesla.object-files."nvidia-modeset.o"] link-objects = ["nv-modeset-interface.o", "nv-modeset-kernel.o"] -[nvidia-tesla.kernel-modules."nvidia-modeset.ko"] +[nvidia-fb-tesla.kernel-modules."nvidia-modeset.ko"] link-objects = ["nvidia-modeset.o", "nvidia-modeset.mod.o", ".module-common.o"] -[nvidia-tesla.kernel-modules."nvidia-uvm.ko"] +[nvidia-fb-tesla.kernel-modules."nvidia-uvm.ko"] link-objects = ["nvidia-uvm.o", "nvidia-uvm.mod.o", ".module-common.o"] diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-tesla-fb-tmpfiles.conf b/packages/kmod-6.18-nvidia-r595/nvidia-tesla-fb-tmpfiles.conf new file mode 100644 index 000000000..72d265d20 --- /dev/null +++ b/packages/kmod-6.18-nvidia-r595/nvidia-tesla-fb-tmpfiles.conf @@ -0,0 +1,5 @@ +C /etc/drivers/nvidia-fb-tesla.toml +C /etc/drivers/nvidia-fb-open-gpu.toml +C /etc/drivers/nvidia-fb-open-gpu-copy-only.toml +C /etc/drivers/nvidia-fb-grid.toml +C /etc/drivers/nvidia-fb-grid-copy-only.toml diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-tesla-tmpfiles.conf b/packages/kmod-6.18-nvidia-r595/nvidia-tesla-tmpfiles.conf deleted file mode 100644 index b7ed04f8e..000000000 --- a/packages/kmod-6.18-nvidia-r595/nvidia-tesla-tmpfiles.conf +++ /dev/null @@ -1,6 +0,0 @@ -C /etc/drivers/nvidia-tesla.toml -C /etc/drivers/nvidia-open-gpu.toml -C /etc/drivers/nvidia-open-gpu-copy-only.toml -C /etc/drivers/nvidia-grid.toml -C /etc/drivers/nvidia-grid-copy-only.toml -C /etc/ld.so.conf.d/nvidia-tesla.conf diff --git a/packages/kmod-6.18-nvidia-r595/nvidia-tmpfiles.conf.in b/packages/kmod-6.18-nvidia-r595/nvidia-tmpfiles.conf.in index 021ab70ba..fcbc17f01 100644 --- a/packages/kmod-6.18-nvidia-r595/nvidia-tmpfiles.conf.in +++ b/packages/kmod-6.18-nvidia-r595/nvidia-tmpfiles.conf.in @@ -8,8 +8,8 @@ R __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gd d __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gdrcopy 0755 root root - - d __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gdrcopy/open-gpu 0755 root root - - d __PREFIX__/lib/modules/__KERNEL_VERSION__/kernel/drivers/extra/video/nvidia/gdrcopy/tesla 0755 root root - - -C /etc/nvidia/fabricmanager.cfg - - - - -C /etc/nvidia/fabricmanager.env - - - - -C /etc/nvidia/gridd.conf - - - - +# fabricmanager.cfg/.env and gridd.conf are added via an overlay mount; this +# creates the mountpoint that overlay needs. +d /etc/nvidia 0755 root root - d /run/nvidia 0755 root root - D /var/run/nvidia-persistenced 0755 nvidia nvidia - - diff --git a/packages/kmod-6.18-nvidia-r595/open-gpu-license-fallback.service b/packages/kmod-6.18-nvidia-r595/open-gpu-license-fallback.service index 8d3508af1..8f07acf27 100644 --- a/packages/kmod-6.18-nvidia-r595/open-gpu-license-fallback.service +++ b/packages/kmod-6.18-nvidia-r595/open-gpu-license-fallback.service @@ -1,5 +1,7 @@ [Unit] Description=Open GPU GRID License Check Fallback +# Order after the branch overlay so ghostdog reads the supported-devices json at its canonical path. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service RefuseManualStart=true RefuseManualStop=true diff --git a/packages/kmod-6.18-nvidia-r595/tesla-license-fallback.service b/packages/kmod-6.18-nvidia-r595/tesla-license-fallback.service index c0c1949f5..64d99bf14 100644 --- a/packages/kmod-6.18-nvidia-r595/tesla-license-fallback.service +++ b/packages/kmod-6.18-nvidia-r595/tesla-license-fallback.service @@ -1,5 +1,7 @@ [Unit] Description=Tesla GRID License Check Fallback +# Order after the branch overlay so ghostdog reads the supported-devices json at its canonical path. +After=nvidia-lts-overlay-driver.service nvidia-fb-overlay-driver.service RefuseManualStart=true RefuseManualStop=true