From 9a7263fce4e3156349a526631805fce66b87fb1b Mon Sep 17 00:00:00 2001 From: Arthur Hanson Rasmusson Date: Sun, 13 Sep 2026 22:17:09 -0400 Subject: Phase 5: Fix MDEV creation blocker - mdev parent registration & ioctl-based vGPU type registration - Implemented nv_vgpu_mdev_register_parent() using mdev_register_parent() API with nv_vgpu_mdev_types array for proper mdev parent registration - Added ioctl NV_VGPU_IOCTL_REGISTER_VGPU_TYPE for userspace vGPU type registration - Created separate header nv-vgpu-vfio-interface-nvidia.h for nvidia.ko with only extern declarations to avoid duplicate symbol exports - Used KBUILD_EXTRA_SYMBOLS to provide only needed symbols (nvidia_vgpu_vfio_*) - Updated create_mdev.sh to use correct mdev type names (pci-nvidia-vgpu-*) - Updated load_vgpu_stack.sh to load open-iov-vfio.ko before nvidia.ko Result: 4 mdev types now show available_instances=8, mdev creation successful --- scripts/load_vgpu_stack.sh | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'scripts/load_vgpu_stack.sh') diff --git a/scripts/load_vgpu_stack.sh b/scripts/load_vgpu_stack.sh index 36211bc..5e7d6fd 100755 --- a/scripts/load_vgpu_stack.sh +++ b/scripts/load_vgpu_stack.sh @@ -9,32 +9,23 @@ 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" +FIRMWARE_PATH="$BASE_DIR/firmware/57X-GSP/570.144/$FIRMWARE_NAME" echo "==========================================" -echo "Loading vGPU Driver Stack" +echo "Loading vGPU Driver Stack (Refactored: Host-only GSP Emulation)" echo "==========================================" echo "Firmware: $FIRMWARE_NAME" echo "" # Check files exist -for f in "$NVIDIA_KO" "$VFIO_KO" "$GSP_VGPU_KO" "$FIRMWARE_PATH"; do +for f in "$NVIDIA_KO" "$VFIO_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 - +# Load open-iov-vfio.ko FIRST (provides symbols nvidia.ko needs) if lsmod | grep -q "^open_iov_vfio "; then echo "open-iov-vfio.ko already loaded" else @@ -43,11 +34,12 @@ else echo " OK" fi -if lsmod | grep -q "^gsp_vgpu "; then - echo "gsp-vgpu.ko already loaded" +# Check if already loaded +if lsmod | grep -q "^nvidia "; then + echo "nvidia.ko already loaded" else - echo "Loading gsp-vgpu.ko with firmware=$FIRMWARE_NAME..." - sudo insmod "$GSP_VGPU_KO" firmware_name="$FIRMWARE_NAME" + echo "Loading nvidia.ko (OpenRM)..." + sudo insmod "$NVIDIA_KO" echo " OK" fi @@ -55,10 +47,10 @@ echo "" echo "==========================================" echo "Driver Stack Loaded Successfully" echo "==========================================" -lsmod | grep -E "nvidia|open_iov|gsp_vgpu" +lsmod | grep -E "nvidia|open_iov" echo "" echo "Device nodes:" -ls -la /dev/gsp-vgpu* /dev/nvidia* 2>/dev/null || echo " (none yet - create mdev first)" +ls -la /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" -- cgit v1.2.3