summaryrefslogtreecommitdiffstats
path: root/docs/07-developers
diff options
context:
space:
mode:
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
```