blob: 77cde0944d749e4a731e4ed7713267e5e4c9ef02 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#!/bin/bash
# Load vGPU stack in converged mode
# Usage: sudo ./load_converged.sh [dry_run]
set -euo pipefail
OPEN_IOV_ROOT="$OPEN_IOV_ROOT"
NVIDIA_OPEN_KERNEL="$OPEN_IOV_ROOT/nvidia-open-gpu-kernel-modules/kernel-open"
VGPU_KERNEL="$OPEN_IOV_ROOT/kernel"
DRY_RUN="${1:-false}"
echo "=== Open-IOV Converged Mode Module Load ==="
echo "Open-IOV Root: $OPEN_IOV_ROOT"
echo "Dry-run mode: $DRY_RUN"
echo ""
# Function to check if module is loaded
is_loaded() {
lsmod | grep -q "^$1 "
}
# Function to load module with error checking
load_module() {
local module_path=$1
local module_name=$(basename $module_path .ko)
local params="${2:-}"
if is_loaded "$module_name"; then
echo "Module $module_name already loaded"
return 0
fi
echo "Loading $module_name..."
if sudo insmod "$module_path" $params; then
echo " ✓ $module_name loaded successfully"
return 0
else
echo " ✗ Failed to load $module_name"
return 1
fi
}
# 1. Load mdev core
echo "Step 1: Loading mdev core module..."
sudo modprobe mdev
echo " ✓ mdev loaded"
echo ""
# 2. Load host nvidia.ko with vGPU support
echo "Step 2: Loading host nvidia.ko (patched open-gpu-kernel-modules)..."
load_module "$NVIDIA_OPEN_KERNEL/nvidia.ko" "NVreg_RegisterPCIDriver=1 NVreg_RmMsg=:"
echo ""
# 3. Load dependent modules
echo "Step 3: Loading dependent modules..."
load_module "$NVIDIA_OPEN_KERNEL/nvidia-modeset.ko"
load_module "$NVIDIA_OPEN_KERNEL/nvidia-uvm.ko"
load_module "$NVIDIA_OPEN_KERNEL/nvidia-drm.ko"
load_module "$NVIDIA_OPEN_KERNEL/nvidia-peermem.ko"
echo ""
# 4. Load nvidia-vgpu-vfio.ko
echo "Step 4: Loading nvidia-vgpu-vfio.ko..."
if [ "$DRY_RUN" = "dry_run" ] || [ "$DRY_RUN" = "true" ]; then
echo " Running in DRY-RUN mode first..."
load_module "$VGPU_KERNEL/nvidia-vgpu-vfio.ko" "dyndbg='+p' dry_run=1"
echo " Dry-run successful, unloading..."
sudo rmmod nvidia-vgpu-vfio
echo " Loading for real..."
load_module "$VGPU_KERNEL/nvidia-vgpu-vfio.ko" "dyndbg='+p'"
else
load_module "$VGPU_KERNEL/nvidia-vgpu-vfio.ko" "dyndbg='+p'"
fi
echo ""
# 5. Verify
echo "Step 5: Verifying vGPU registration..."
sleep 2
if [ -d "/sys/bus/pci/devices/0000:01:00.0/mdev_supported_types" ]; then
echo " ✓ mdev_supported_types directory exists"
ls -la /sys/bus/pci/devices/0000:01:00.0/mdev_supported_types/
else
echo " ✗ mdev_supported_types NOT found"
echo " Check dmesg for errors: dmesg -T | grep -i vgpu"
exit 1
fi
echo ""
echo "=== Converged Mode Load Complete ==="
echo ""
echo "Next steps:"
echo " - Create mdev device: echo <uuid> | sudo tee /sys/bus/pci/devices/0000:01:00.0/mdev_supported_types/nvidia-vgpu-turing/create"
echo " - Run QEMU with vGPU passthrough"
echo " - Run tests: $OPEN_IOV_ROOT/tools/test/run_integration_tests.sh"
|