Skip to content

Add globbing for mounting multiple GSP firmware files

Newer drivers have split the GSP firmware into multiple files so a simple match against gsp.bin in the firmware directory is no longer possible. This patch adds globbing capabilitis to match any GSP firmware files of the form gsp*.bin and mount them all into the container.

Tests performed:

++ cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module  525.85.12  Sat Jan 28 02:10:06 UTC 2023
GCC version:  gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)

++ sudo apt-get install -y --allow-downgrades libnvidia-container1=1.12.0-1
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libparmap-ocaml libpycaml-ocaml libpython2.7
Use 'sudo apt autoremove' to remove them.
The following packages will be DOWNGRADED:
  libnvidia-container1
0 upgraded, 0 newly installed, 1 downgraded, 0 to remove and 231 not upgraded.
Need to get 0 B/927 kB of archives.
After this operation, 1,024 B disk space will be freed.
dpkg: warning: downgrading libnvidia-container1:amd64 from 1.13.0~rc.1-1 to 1.12.0-1
(Reading database ... 141873 files and directories currently installed.)
Preparing to unpack .../libnvidia-container1_1.12.0-1_amd64.deb ...
Unpacking libnvidia-container1:amd64 (1.12.0-1) over (1.13.0~rc.1-1) ...
Setting up libnvidia-container1:amd64 (1.12.0-1) ...
Processing triggers for libc-bin (2.27-3ubuntu1.4) ...

++ sudo rm -rf /var/log/nvidia-container-toolkit.log

++ docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 bash -c '(set -x; find /lib/firmware/nvidia)'
+ find /lib/firmware/nvidia
find: '/lib/firmware/nvidia': No such file or directory

++ grep firmware /var/log/nvidia-container-toolkit.log
W0216 15:23:20.465919 2326334 nvc_info.c:350] missing firmware path /lib/firmware/nvidia/525.85.12/gsp.bin

++ sudo dpkg -i dist/ubuntu18.04/amd64/libnvidia-container1_1.13.0~rc.1-1_amd64.deb
(Reading database ... 141873 files and directories currently installed.)
Preparing to unpack .../libnvidia-container1_1.13.0~rc.1-1_amd64.deb ...
Unpacking libnvidia-container1:amd64 (1.13.0~rc.1-1) over (1.12.0-1) ...
Setting up libnvidia-container1:amd64 (1.13.0~rc.1-1) ...
Processing triggers for libc-bin (2.27-3ubuntu1.4) ...

++ sudo rm -rf /var/log/nvidia-container-toolkit.log

++ docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 bash -c '(set -x; find /lib/firmware/nvidia)'
+ find /lib/firmware/nvidia
/lib/firmware/nvidia
/lib/firmware/nvidia/525.85.12
/lib/firmware/nvidia/525.85.12/gsp_ad10x.bin
/lib/firmware/nvidia/525.85.12/gsp_tu10x.bin

++ grep firmware /var/log/nvidia-container-toolkit.log
I0216 15:23:21.550904 2327106 nvc_info.c:486] listing firmware path /lib/firmware/nvidia/525.85.12/gsp_ad10x.bin
I0216 15:23:21.550909 2327106 nvc_info.c:486] listing firmware path /lib/firmware/nvidia/525.85.12/gsp_tu10x.bin
I0216 15:23:21.622511 2327106 nvc_mount.c:85] mounting /lib/firmware/nvidia/525.85.12/gsp_ad10x.bin at /var/lib/docker/overlay2/31661de25249205f3b9282652cd071ae4951968e107fcc66d421a680b82b3722/merged/lib/firmware/nvidia/525.85.12/gsp_ad10x.bin with flags 0x7
I0216 15:23:21.622562 2327106 nvc_mount.c:85] mounting /lib/firmware/nvidia/525.85.12/gsp_tu10x.bin at /var/lib/docker/overlay2/31661de25249205f3b9282652cd071ae4951968e107fcc66d421a680b82b3722/merged/lib/firmware/nvidia/525.85.12/gsp_tu10x.bin with flags 0x7

++ sudo mv /lib/firmware/nvidia /lib/firmware/nvidia.temp

++ sudo rm -rf /var/log/nvidia-container-toolkit.log

++ docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 bash -c '(set -x; find /lib/firmware/nvidia)'
+ find /lib/firmware/nvidia
find: '/lib/firmware/nvidia': No such file or directory

++ grep firmware /var/log/nvidia-container-toolkit.log
W0216 15:23:22.370089 2327359 nvc_info.c:469] missing firmware path /lib/firmware/nvidia/525.85.12/gsp*.bin

++ sudo mv /lib/firmware/nvidia.temp /lib/firmware/nvidia
Edited by Kevin Klues

Merge request reports

Loading