#!/bin/bash # load_vgpu_stack.sh - Load complete vGPU driver stack # Usage: ./load_vgpu_stack.sh [firmware_name] set -euo pipefail FIRMWARE_NAME="${1:-gsp-570.144.fwimage.bin}" BASE_DIR="$OPEN_IOV_ROOT" NVIDIA_KO="$BASE_DIR/nvidia-open-gpu-kernel-modules/kernel-open/nvidia.ko" VFIO_KO="$BASE_DIR/kernel/open-iov-vfio.ko" GSP_VGPU_KO="$BASE_DIR/driver/gsp-vgpu.ko" FIRMWARE_PATH="$BASE_DIR/firmware/570-GSP/$FIRMWARE_NAME" echo "==========================================" echo "Loading vGPU Driver Stack" echo "==========================================" echo "Firmware: $FIRMWARE_NAME" echo "" # Check files exist for f in "$NVIDIA_KO" "$VFIO_KO" "$GSP_VGPU_KO" "$FIRMWARE_PATH"; do if [[ ! -f "$f" ]]; then echo "ERROR: Missing file: $f" exit 1 fi done # Check if already loaded if lsmod | grep -q "^nvidia "; then echo "nvidia.ko already loaded" else echo "Loading nvidia.ko (OpenRM)..." sudo insmod "$NVIDIA_KO" echo " OK" fi if lsmod | grep -q "^open_iov_vfio "; then echo "open-iov-vfio.ko already loaded" else echo "Loading open-iov-vfio.ko..." sudo insmod "$VFIO_KO" echo " OK" fi if lsmod | grep -q "^gsp_vgpu "; then echo "gsp-vgpu.ko already loaded" else echo "Loading gsp-vgpu.ko with firmware=$FIRMWARE_NAME..." sudo insmod "$GSP_VGPU_KO" firmware_name="$FIRMWARE_NAME" echo " OK" fi echo "" echo "==========================================" echo "Driver Stack Loaded Successfully" echo "==========================================" lsmod | grep -E "nvidia|open_iov|gsp_vgpu" echo "" echo "Device nodes:" ls -la /dev/gsp-vgpu* /dev/nvidia* 2>/dev/null || echo " (none yet - create mdev first)" echo "" echo "Next steps:" echo " 1. Create mdev: $BASE_DIR/scripts/create_mdev.sh" echo " 2. Launch QEMU: $BASE_DIR/scripts/launch_qemu_vgpu.sh"