Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions rhel8/nvidia-driver
Original file line number Diff line number Diff line change
Expand Up @@ -510,15 +510,15 @@ _unload_driver() {
rmmod_args+=("nvidia-uvm")
((++nvidia_deps))
fi
if [ -f /sys/module/nvidia/refcnt ]; then
nvidia_refs=$(< /sys/module/nvidia/refcnt)
rmmod_args+=("nvidia")
fi
if [ -f /sys/module/nvidia_peermem/refcnt ]; then
nvidia_peermem_refs=$(< /sys/module/nvidia_peermem/refcnt)
rmmod_args+=("nvidia-peermem")
((++nvidia_deps))
fi
if [ -f /sys/module/nvidia/refcnt ]; then
nvidia_refs=$(< /sys/module/nvidia/refcnt)
rmmod_args+=("nvidia")
fi
if [ ${nvidia_refs} -gt ${nvidia_deps} ] || [ ${nvidia_uvm_refs} -gt 0 ] || [ ${nvidia_modeset_refs} -gt 0 ] || [ ${nvidia_peermem_refs} -gt 0 ]; then
echo "Could not unload NVIDIA driver kernel modules, driver is in use" >&2
return 1
Expand Down
20 changes: 20 additions & 0 deletions rhel8/tests/test_unload_order.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash
set -eu

script_dir=$(dirname "$(readlink -f \"$0\")")
driver_file=\"$script_dir/../nvidia-driver\"

peermem_line=$(grep -n 'rmmod_args+=(\"nvidia-peermem\")' \"$driver_file\" | head -n1 | cut -d: -f1 || true)
nvidia_line=$(grep -n 'rmmod_args+=(\"nvidia\")' \"$driver_file\" | head -n1 | cut -d: -f1 || true)

if [[ -z \"$peermem_line\" ]] || [[ -z \"$nvidia_line\" ]]; then
echo \"FAIL: could not locate rmmod_args entries\"
exit 1
fi

if [[ \"$peermem_line\" -gt \"$nvidia_line\" ]]; then
echo \"FAIL: nvidia-peermem is added after nvidia in rmmod_args\"
exit 1
fi

echo \"PASS\"