summaryrefslogtreecommitdiffstats
path: root/docs/07-developers
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-23 12:11:10 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-23 12:11:10 -0400
commit692c095ae48f2829613873e60e4dbbf14b36323d (patch)
tree6e48fc539c7b02b3f30654f7d1703beffa974277 /docs/07-developers
parentf874d709e5a45d63c8ee9ab6b0300195aa5d20a5 (diff)
downloadopen-iov-692c095ae48f2829613873e60e4dbbf14b36323d.tar.gz
open-iov-692c095ae48f2829613873e60e4dbbf14b36323d.zip
docs: refresh status, supersede stale material, link the CUDA analysis
* Status now matches the live state: guest driver probe and nvidia-smi work; cuInit/device queries work; cuCtxCreate returns 999 because the emulated engine list is missing the async copy engine (COPY14). The userspace libcuda segfault is recorded as solved, with its mechanism (an RM allocation reply must echo request parameters; zeroing them corrupted the caller's saved frame pointer). * Correct the emulation claims: only a subset of RM controls are special-cased; the rest return a success reply with zeroed parameters whose consumed fields are still being corrected; allocation replies are coherent but no server-side object model exists. * Add the eight-point emulation checklist and reply-fidelity ladder as explicit gates, documented in userspace/cuda and linked from the architecture, implementation and operations docs. * Fix operational errors: build/test commands, module load order, mdev type names, LFS references, debugfs claims, in-repo firmware claims, CI claims, portability matrix (guest status, config layout, userspace driver facts). * Mark historical material: one superseded banner per legacy document with a pointer to its replacement; STATE.md marked as a 2026-09-21 snapshot. * Wiki: fix the index, add status banners and in-place factual corrections (msgq transport vs legacy mailbox, BAR definitions, error statuses, migration, glossary), and note the archived 2023 imports.
Diffstat (limited to 'docs/07-developers')
-rw-r--r--docs/07-developers/onboarding-and-standards.md23
1 files changed, 18 insertions, 5 deletions
diff --git a/docs/07-developers/onboarding-and-standards.md b/docs/07-developers/onboarding-and-standards.md
index 78503f4..3d7ac78 100644
--- a/docs/07-developers/onboarding-and-standards.md
+++ b/docs/07-developers/onboarding-and-standards.md
@@ -17,7 +17,9 @@
— where the code lives (30 min).
5. [`../04-implementation/01-known-knowns-and-unknowns.md`](../04-implementation/01-known-knowns-and-unknowns.md)
— what to work on and what is hard (30 min).
-6. The subsystem doc for whatever you plan to touch.
+6. Working on CUDA: [`../../userspace/cuda/READ-ME-FIRST.md`](../../userspace/cuda/READ-ME-FIRST.md)
+ — CUDA stack analysis, tooling, and the current blockers.
+7. The subsystem doc for whatever you plan to touch.
### 1.2 Environment
@@ -53,6 +55,8 @@ the VM holding it. The stack manager enforces the order.
open-iov/
├── kernel/ host module (GSP emulation, device model, memory model)
├── userspace/ management library + examples
+├── userspace/cuda/ CUDA stack analysis + tooling (start at
+│ userspace/cuda/READ-ME-FIRST.md)
├── tools/ debugging and analysis tools (guest-diag, rmq,
│ firmware analysis wrappers)
├── scripts/ build/load/test automation, VM harness
@@ -96,8 +100,12 @@ open-iov/
the definition of done.
* Prefer a table or a decision tree over prose for anything an operator will
follow under pressure.
-* Protocol facts (IDs, offsets, structures) must cite their source
- (the decompiled study notes, or a live trace).
+* Protocol facts (IDs, offsets, structures) must cite their source (a live
+ trace, or an analysis artifact). Userspace (`libcuda`) addresses are *file
+ virtual addresses* (`libcuda+0x...`); Ghidra loads that library at **image
+ base `0x100000`**, so old decompilations produced without translating the
+ offset are 0x100000 too low (the wrong functions) — re-derive any conclusion
+ drawn from them.
## 4. Tooling
@@ -105,7 +113,10 @@ open-iov/
|---|---|
| `scripts/stack_manager.sh` | build/load/status/test/unload with correct ordering |
| `scripts/vgpu_vm.py` | VM lifecycle incl. guest-agent exec/shell |
-| `tools/guest-diag/` | guest-side diagnostics (ptrace tracer, engines, probes, push helper) |
+| `tools/guest-diag/` | guest-side diagnostics (ioctl tracer, engines, probes, push helper) |
+| `userspace/cuda/tools/` | CUDA binary analysis (crash decoder, callgraph walk, decompile-at, corpus annotation) |
+| `tools/cuda-ab/` | host-vs-guest CUDA A/B harness (one deterministic workload, diffed results) |
+| `tools/rmq/` | host RM-API oracle for ground-truth GPU/RM data |
| `tools/firmware_analyzer.py` + Ghidra scripts | firmware analysis pipeline |
| module debug parameters | guest-memory scanning/poking, VRAM inspection |
| QEMU gdbstub workflow | guest virtual-memory inspection/writing |
@@ -128,9 +139,11 @@ open-iov/
```bash
make kernel # open-iov-vfio.ko (first!)
-make nvidia # NVIDIA OpenRM modules with KBUILD_EXTRA_SYMBOLS
+./scripts/build_nvidia_openrm.sh # optional OpenRM modules, KBUILD_EXTRA_SYMBOLS from kernel/Module.symvers
make userspace # libiov.so, examples
make all # in the correct order
+make tests # build the host test binaries only (does not run them)
+./scripts/stack_manager.sh test # run the host test suite
make clean
```