#!/bin/bash # SPDX-License-Identifier: BSD-3-Clause # Copyright (c) 2026 Open-IOV contributors # 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"