summaryrefslogtreecommitdiffstats
path: root/docs/03-architecture
diff options
context:
space:
mode:
Diffstat (limited to 'docs/03-architecture')
-rw-r--r--docs/03-architecture/06-host-module-and-hybrid-model.md24
1 files changed, 23 insertions, 1 deletions
diff --git a/docs/03-architecture/06-host-module-and-hybrid-model.md b/docs/03-architecture/06-host-module-and-hybrid-model.md
index 4f9efdb..5849071 100644
--- a/docs/03-architecture/06-host-module-and-hybrid-model.md
+++ b/docs/03-architecture/06-host-module-and-hybrid-model.md
@@ -237,7 +237,29 @@ mismatch. Their workflows are documented in
* On typical single-GPU developer systems the distribution's NVIDIA driver
manages the physical GPU and the Open-IOV module is used standalone; the
OpenRM submodule path is only needed for the native-vGPU-management
- workflows.
+ workflows (RM callbacks) and is unnecessary for the QEMU/emulated path.
+
+**Build and load order on the OpenRM path:**
+
+```bash
+# 1. Kernel module first - generates kernel/Module.symvers.
+make kernel # or: ./scripts/stack_manager.sh build-kernel
+
+# 2. OpenRM modules with our symbols resolved.
+./scripts/build_nvidia_openrm.sh # wraps KBUILD_EXTRA_SYMBOLS=<repo>/kernel/Module.symvers
+grep -i vgpu kernel/Module.symvers # symbols exported
+modinfo .../kernel-open/nvidia.ko | grep -i vgpu # symbols consumed
+
+# 3. Load order: Open-IOV first (exports and registers the mdev parent),
+# then the optional OpenRM modules, then firmware.
+```
+
+If a distribution driver already owns the physical GPU, skip step 2 and the
+OpenRM part of step 3: the emulated QEMU path runs with the distribution
+driver. Common failures on this path: `Unknown symbol nvidia_vgpu_vfio_*`
+(`KBUILD_EXTRA_SYMBOLS` missing or wrong) and symbols present in
+`Module.symvers` but absent from `nvidia.ko` (stale build cache — `make clean`
+in `kernel-open` first).
## 8. What is implemented vs. designed