diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-13 22:17:09 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-13 22:17:09 -0400 |
| commit | 9a7263fce4e3156349a526631805fce66b87fb1b (patch) | |
| tree | 6278c1972754e6cb60f953a1af05a472f4efecea /scripts | |
| parent | bfd269ee74d166be4f386640f8b5daad31d5d6ed (diff) | |
| download | open-iov-9a7263fce4e3156349a526631805fce66b87fb1b.tar.gz open-iov-9a7263fce4e3156349a526631805fce66b87fb1b.zip | |
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
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/create_mdev.sh | 6 | ||||
| -rwxr-xr-x | scripts/load_vgpu_stack.sh | 30 |
2 files changed, 14 insertions, 22 deletions
diff --git a/scripts/create_mdev.sh b/scripts/create_mdev.sh index f6c76ed..a6ea91e 100755 --- a/scripts/create_mdev.sh +++ b/scripts/create_mdev.sh @@ -5,10 +5,10 @@ set -euo pipefail PCI_ADDR="${1:-}" -VGPU_TYPE="${2:-nvidia-vgpu-turing}" +VGPU_TYPE="${2:-pci-nvidia-vgpu-turing}" -# Supported vGPU types -VALID_TYPES=("nvidia-vgpu-ampere" "nvidia-vgpu-hopper" "nvidia-vgpu-turing" "nvidia-vgpu-pascal") +# Supported vGPU types (matching the mdev type names) +VALID_TYPES=("pci-nvidia-vgpu-ampere" "pci-nvidia-vgpu-hopper" "pci-nvidia-vgpu-turing" "pci-nvidia-vgpu-pascal") # Find NVIDIA GPU if not specified if [[ -z "$PCI_ADDR" ]]; then 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" |
