blob: dfcbe594f535746720526c0ee4133e885b499e1f (
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
|
#!/bin/bash
# Build NVIDIA OpenRM kernel modules with Open-IOV vGPU VFIO symbols
# This script ensures KBUILD_EXTRA_SYMBOLS is correctly passed to the build
set -e
OPEN_IOV_ROOT="$OPEN_IOV_ROOT"
NVIDIA_OPENRM_DIR="$OPEN_IOV_ROOT/nvidia-open-gpu-kernel-modules"
KERNEL_DIR="$OPEN_IOV_ROOT/kernel"
SYMVERS_FILE="$KERNEL_DIR/Module.symvers"
echo "=== Building NVIDIA OpenRM with Open-IOV vGPU VFIO symbols ==="
echo "Open-IOV root: $OPEN_IOV_ROOT"
echo "NVIDIA OpenRM dir: $NVIDIA_OPENRM_DIR"
echo "Kernel Module.symvers: $SYMVERS_FILE"
# Check if open-iov-vfio.ko has been built (provides Module.symvers)
if [ ! -f "$SYMVERS_FILE" ]; then
echo "ERROR: $SYMVERS_FILE not found!"
echo "Please build open-iov-vfio.ko first: cd $OPEN_IOV_ROOT && make kernel"
exit 1
fi
echo "Found Module.symvers with $(wc -l < "$SYMVERS_FILE") exported symbols"
echo "Key vGPU symbols:"
grep -i vgpu "$SYMVERS_FILE" | head -5
# Build NVIDIA OpenRM kernel modules
cd "$NVIDIA_OPENRM_DIR/kernel-open"
# Clean previous build to ensure fresh symbol resolution
echo "Cleaning previous build..."
make clean
echo "Building NVIDIA OpenRM modules with KBUILD_EXTRA_SYMBOLS..."
KBUILD_EXTRA_SYMBOLS="$SYMVERS_FILE" make -j$(nproc) modules
# Verify the symbols are resolved
echo ""
echo "=== Verification ==="
echo "Checking nvidia.ko for vGPU VFIO symbols..."
if modinfo nvidia.ko 2>/dev/null | grep -q "nvidia_vgpu_vfio"; then
echo "✓ nvidia.ko has vGPU VFIO symbols"
else
echo "⚠ nvidia.ko may not have vGPU VFIO symbols (check modpost output above)"
fi
echo ""
echo "Checking Module.symvers for vGPU symbols..."
grep -i vgpu Module.symvers | head -5
echo ""
echo "=== Build Complete ==="
echo "nvidia.ko location: $NVIDIA_OPENRM_DIR/kernel-open/nvidia.ko"
echo ""
echo "To load the stack:"
echo " sudo insmod $NVIDIA_OPENRM_DIR/kernel-open/nvidia.ko"
echo " sudo insmod $KERNEL_DIR/open-iov-vfio.ko"
echo " sudo cp $OPEN_IOV_ROOT/firmware/57X-GSP/570.144/gsp-570.144.fwimage.bin /lib/firmware/"
echo " ./scripts/create_mdev.sh"
echo " ./scripts/launch_qemu_vgpu.sh"
|