summaryrefslogtreecommitdiffstats
path: root/tools/module_ops/unload_all.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tools/module_ops/unload_all.sh')
-rwxr-xr-xtools/module_ops/unload_all.sh42
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/module_ops/unload_all.sh b/tools/module_ops/unload_all.sh
new file mode 100755
index 0000000..4c73a0b
--- /dev/null
+++ b/tools/module_ops/unload_all.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+# Unload all vGPU modules cleanly
+# Usage: sudo ./unload_all.sh
+
+set -euo pipefail
+
+echo "=== Unloading Open-IOV vGPU Stack ==="
+
+# Unload in reverse order of loading
+modules=(
+ "nvidia-vgpu-vfio"
+ "nvidia-drm"
+ "nvidia-modeset"
+ "nvidia-uvm"
+ "nvidia-peermem"
+ "nvidia"
+ "mdev"
+)
+
+for module in "${modules[@]}"; do
+ if lsmod | grep -q "^$module "; then
+ echo "Unloading $module..."
+ if sudo rmmod "$module" 2>/dev/null; then
+ echo " ✓ $module unloaded"
+ else
+ echo " ⚠ $module could not be unloaded (may be in use)"
+ # Check refcnt
+ if [[ -f /sys/module/$module/refcnt ]]; then
+ echo " refcnt: $(cat /sys/module/$module/refcnt)"
+ fi
+ if [[ -f /sys/module/$module/initstate ]]; then
+ echo " initstate: $(cat /sys/module/$module/initstate)"
+ fi
+ fi
+ else
+ echo " - $module not loaded"
+ fi
+done
+
+echo ""
+echo "=== Unload Complete ==="
+lsmod | grep -E 'nvidia|mdev' || echo "No NVIDIA/mdev modules loaded" \ No newline at end of file