summaryrefslogtreecommitdiffstats
path: root/docs/DEVELOPMENT_WORKFLOW.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/DEVELOPMENT_WORKFLOW.md')
-rw-r--r--docs/DEVELOPMENT_WORKFLOW.md39
1 files changed, 25 insertions, 14 deletions
diff --git a/docs/DEVELOPMENT_WORKFLOW.md b/docs/DEVELOPMENT_WORKFLOW.md
index 2263af6..9019ac1 100644
--- a/docs/DEVELOPMENT_WORKFLOW.md
+++ b/docs/DEVELOPMENT_WORKFLOW.md
@@ -17,7 +17,7 @@ $OPEN_IOV_ROOT/ # Main monorepo (git + LFS)
| Directory | Purpose |
|-----------|---------|
| `kernel/` | Host VFIO mdev driver (`open-iov-vfio.ko`) |
-| `driver/` | Guest vGPU driver (`gsp-vgpu.ko`) - **to be removed** |
+| `legacy-driver-guest/` | Historical guest-side driver (reference only, **not built**) |
| `userspace/lib/` | `libiov.so` / `libvgpu.so` + `rpc_emulator.c` |
| `userspace/examples/` | `example_vgpu` test app |
| `firmware/57X-GSP/570.144/` | GSP firmware binary + 132 decompiled C files |
@@ -212,8 +212,7 @@ oiv-clean
| Artifact | Location | Size |
|----------|----------|------|
| `nvidia.ko` | `nvidia-open-gpu-kernel-modules/kernel-open/` | 35MB |
-| `open-iov-vfio.ko` | `kernel/` | 2.8MB |
-| `gsp-vgpu.ko` | `driver/` | 1.8MB |
+| `open-iov-vfio.ko` | `kernel/` | ~3.8MB |
| `libiov.so` / `libvgpu.so` | `userspace/lib/` | 76KB |
| `example_vgpu` | `userspace/examples/` | 27KB |
@@ -222,32 +221,44 @@ oiv-clean
## 4. Kernel Module Loading
### Prerequisites
-- **REBOOT REQUIRED** if kernel cmdline has `module_blacklist=nvidia,...`
-- Check: `cat /proc/cmdline | grep module_blacklist`
-- GRUB must be updated: `/etc/default/grub` → `update-grub` → `update-initramfs -u` → reboot
+- The **stock Ubuntu nvidia driver must not be loaded** when you want our
+ OpenRM nvidia.ko: both are named `nvidia`. The stock driver auto-loads on
+ desktop boots (udev) and is held open by the GUI.
+ `/etc/modprobe.d/blacklist-nvidia-open-iov.conf` (installed on this
+ machine) prevents that auto-load after reboot; `insmod` is unaffected.
+- `stack_manager.sh load-nvidia` detects a foreign loaded nvidia
+ (compares `/sys/module/nvidia/version` with our build) and refuses with
+ guidance instead of silently skipping.
### Load Order (Critical)
```bash
-# 1. NVIDIA OpenRM host driver (exports vGPU VFIO symbols)
-sudo insmod $OPEN_IOV_ROOT/nvidia-open-gpu-kernel-modules/kernel-open/nvidia.ko
+# 1. VFIO/mdev prerequisites
+sudo modprobe vfio vfio_iommu_type1 vfio_pci mdev
-# 2. Open-IOV VFIO mdev driver (depends on nvidia.ko symbols)
+# 2. Open-IOV VFIO mdev driver FIRST - it is fully standalone (zero nvidia
+# imports) and EXPORTS the nvidia_vgpu_vfio_* interface + registers the
+# mdev parent on the physical GPU.
sudo insmod $OPEN_IOV_ROOT/kernel/open-iov-vfio.ko
-# 3. Guest vGPU driver (standalone, works without above)
-sudo insmod $OPEN_IOV_ROOT/driver/gsp-vgpu.ko firmware_name=gsp-570.144.fwimage.bin
+# 3. NVIDIA OpenRM host driver - imports our nvidia_vgpu_vfio_* symbols
+# (must be built with KBUILD_EXTRA_SYMBOLS=kernel/Module.symvers)
+sudo insmod $OPEN_IOV_ROOT/nvidia-open-gpu-kernel-modules/kernel-open/nvidia.ko
+
+# 4. GSP firmware for the host GPU
+sudo cp firmware/57X-GSP/570.144/gsp-570.144.fwimage.bin /lib/firmware/
```
### Using Helper Script
```bash
-oiv-load # Runs all three in order
+./scripts/stack_manager.sh load-stack # prereqs → open-iov-vfio → nvidia → firmware
```
### Verify Load
```bash
-lsmod | grep -E "nvidia|open_iov|gsp_vgpu"
+lsmod | grep -E "nvidia|open_iov"
dmesg -T | grep -i -e nvidia -e gsp -e vgpu -e open-iov
-ls -la /dev/gsp-vgpu /dev/nvidia*
+ls /sys/class/mdev_bus/0000:01:00.0/mdev_supported_types/
+cat /sys/class/mdev_bus/0000:01:00.0/mdev_supported_types/nvidia-nvidia-vgpu-turing/available_instances
```
### Unload