diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-23 12:11:10 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-23 12:11:10 -0400 |
| commit | 692c095ae48f2829613873e60e4dbbf14b36323d (patch) | |
| tree | 6e48fc539c7b02b3f30654f7d1703beffa974277 /docs/07-developers | |
| parent | f874d709e5a45d63c8ee9ab6b0300195aa5d20a5 (diff) | |
| download | open-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.md | 23 |
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 ``` |
