From 4a7468b5038e90d20d592b1b174f7900cf26416e Mon Sep 17 00:00:00 2001 From: andrewwhitecdw Date: Wed, 12 Aug 2026 18:50:38 -0500 Subject: [PATCH] fix: rmmod unloads nvidia before dependent nvidia-peermem Signed-off-by: andrewwhitecdw --- rhel8/nvidia-driver | 8 ++++---- rhel8/tests/test_unload_order.sh | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 rhel8/tests/test_unload_order.sh diff --git a/rhel8/nvidia-driver b/rhel8/nvidia-driver index 2724c5468..ed7357bfc 100755 --- a/rhel8/nvidia-driver +++ b/rhel8/nvidia-driver @@ -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 diff --git a/rhel8/tests/test_unload_order.sh b/rhel8/tests/test_unload_order.sh new file mode 100644 index 000000000..4cb927024 --- /dev/null +++ b/rhel8/tests/test_unload_order.sh @@ -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\"