22%global tesla_minor 195
33%global tesla_patch 03
44%global tesla_ver %{tesla_major }.%{tesla_minor }.%{tesla_patch }
5+ %global grid_ver grid-18.5
56%if "%{?_cross_arch }" == "aarch64 "
67%global nvidia_arch sbsa
78%else
@@ -32,8 +33,10 @@ URL: http://www.nvidia.com/
3233# NVIDIA .run scripts for kernel and userspace drivers
3334Source0: https://us.download.nvidia.com/tesla/%{tesla_ver }/NVIDIA-Linux-x86_64 -%{tesla_ver }.run
3435Source1: https://us.download.nvidia.com/tesla/%{tesla_ver }/NVIDIA-Linux-aarch64 -%{tesla_ver }.run
35- Source2: NVidiaEULAforAWS.pdf
36- Source3: COPYING
36+ Source2: https://s3.amazonaws.com/ec2-linux-nvidia-drivers/%{grid_ver }/NVIDIA-Linux-x86_64 -%{tesla_ver }-grid-aws.run
37+ Source3: NVidiaEULAforAWS.pdf
38+ Source4: COPYING
39+ Source5: NvidiaGridAWSUserLicenseAgreement.DOCX
3740
3841# fabricmanager for NVSwitch
3942Source10: https://developer.download.nvidia.com/compute/cuda/repos/amzn2023/x86_64 /nvidia-fabric-manager-%{tesla_ver }-1.x86_64 .rpm
@@ -51,6 +54,8 @@ Source204: nvidia-fabricmanager.cfg
5154Source205: nvidia-sysusers.conf
5255Source206: nvidia-persistenced.service
5356Source207: fabricmanager.env
57+ Source208: gridd.conf
58+ Source209: nvidia-gridd.service
5459
5560# NVIDIA tesla conf files from 300 to 399
5661Source300: nvidia-tesla-tmpfiles.conf
@@ -115,9 +120,10 @@ Requires: %{name}
115120%package grid
116121Summary: NVIDIA %{tesla_major } GRID driver
117122Version: %{tesla_ver }
118- License: MIT AND GPL-2.0 -only
123+ License: MIT AND GPL-2.0 -only AND LicenseRef-NVIDIA-AWS-GRID-EULA
119124Requires: %{_cross_os }variant-platform(aws)
120125Requires: %{name }
126+ Requires: %{_cross_os }libstdc++
121127
122128%description grid
123129%{summary }.
@@ -142,16 +148,23 @@ sh %{_sourcedir}/NVIDIA-Linux-%{_cross_arch}-%{tesla_ver}.run -x
142148# Move to the sources directory and apply patch
143149pushd NVIDIA-Linux-%{_cross_arch }-%{tesla_ver }
144150%patch 1 -p1
145- cp -r kernel-open grid
146151popd
147152
153+ # Extract GRID drivers just like Tesla
154+ %if "%{_cross_arch }" == "x86_64 "
155+ sh %{_sourcedir }/NVIDIA-Linux-x86_64 -%{tesla_ver }-grid-aws.run -x
156+ pushd NVIDIA-Linux-x86_64 -%{tesla_ver }-grid-aws
157+ %patch 1 -p1
158+ popd
159+ %endif
160+
148161# Extract fabricmanager from the rpm via cpio rather than `%%setup` since the
149162# correct source is architecture-dependent.
150163mkdir fabricmanager-linux-%{nvidia_arch }-%{tesla_ver }-archive
151164rpm2cpio %{_sourcedir }/nvidia-fabric-manager-%{tesla_ver }-1.%{_cross_arch }.rpm | cpio -idmV -D fabricmanager-linux-%{nvidia_arch }-%{tesla_ver }-archive
152165
153166# Add the license.
154- install -p -m 0644 %{S:2 } %{S:3 } .
167+ install -p -m 0644 %{S:3 } %{S:4 } %{ S:5 } .
155168
156169# Extract imex from the rpm via cpio rather than `%%setup` since the
157170# correct source is architecture-dependent.
@@ -202,11 +215,11 @@ popd
202215
203216%if "%{_cross_arch }" == "x86_64 "
204217# Begin GRID build
205- pushd NVIDIA-Linux-%{_cross_arch }-%{tesla_ver }/ grid
218+ pushd NVIDIA-Linux-%{_cross_arch }-%{tesla_ver }- grid-aws/kernel-open
206219
207220# We set IGNORE_CC_MISMATCH even though we are using the same compiler used to
208221# compile the kernel, if we don't set this flag the compilation fails
209- make %{?_smp_mflags } ARCH= %{_cross_karch } IGNORE_CC_MISMATCH= 1 GRID_BUILD = 1 GRID_BUILD_CSP = 1 SYSSRC= %{kernel_sources } CC= %{_cross_target }-gcc LD= %{_cross_target }-ld
222+ make %{?_smp_mflags } ARCH= %{_cross_karch } IGNORE_CC_MISMATCH= 1 SYSSRC= %{kernel_sources } CC= %{_cross_target }-gcc LD= %{_cross_target }-ld
210223
211224# Strip symbols out of the .ko files
212225for module in *.ko; do
@@ -378,21 +391,27 @@ install kernel-open/nvidia-drm.ko %{buildroot}%{_cross_datadir}/nvidia/open-gpu/
378391
379392%if "%{_cross_arch }" == "x86_64 "
380393# GRID driver
394+ pushd ../NVIDIA-Linux-x86_64 -%{tesla_ver }-grid-aws
381395install -d %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
382- install grid /nvidia.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
396+ install kernel-open /nvidia.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
383397
384398# uvm
385- install grid /nvidia-uvm.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
399+ install kernel-open /nvidia-uvm.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
386400
387401# modeset
388- install grid /nvidia-modeset.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
402+ install kernel-open /nvidia-modeset.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
389403
390404# peermem
391- install grid /nvidia-peermem.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
405+ install kernel-open /nvidia-peermem.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
392406
393407# drm
394- install grid /nvidia-drm.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
408+ install kernel-open /nvidia-drm.ko %{buildroot }%{_cross_datadir }/nvidia/grid/drivers/
395409
410+ # Install nvidia-gridd and related files
411+ install -m 755 nvidia-gridd %{buildroot }%{_cross_bindir }/nvidia-gridd
412+ install -m 644 %{S:208 } %{buildroot }%{_cross_factorydir }%{_cross_sysconfdir }/nvidia/gridd.conf
413+ install -p -m 0644 %{S:209 } %{buildroot }%{_cross_unitdir }
414+ popd
396415# End GRID driver
397416%endif
398417
@@ -722,8 +741,13 @@ popd
722741%if "%{_cross_arch }" == "x86_64 "
723742%files grid
724743%license COPYING
744+ %license NvidiaGridAWSUserLicenseAgreement.DOCX
745+ %license NVIDIA-Linux-x86_64-%{tesla_ver }-grid-aws/grid-third-party-licenses.txt
725746%dir %{_cross_datadir }/nvidia/grid/drivers
726747%dir %{_cross_factorydir }/nvidia/grid
748+ %{_cross_bindir }/nvidia-gridd
749+ %{_cross_factorydir }%{_cross_sysconfdir }/nvidia/gridd.conf
750+ %{_cross_unitdir }/nvidia-gridd.service
727751
728752%{_cross_datadir }/nvidia/grid/drivers/nvidia.ko
729753%{_cross_datadir }/nvidia/grid/drivers/nvidia-uvm.ko
0 commit comments