summaryrefslogtreecommitdiffstats
path: root/userspace/cuda/READ-ME-FIRST.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-29 15:29:00 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-29 15:29:00 -0400
commit1fdbf4ea8c17dab2b8fca6b5e58c2a6d3bc7596d (patch)
treecd16ecce1bbbf8e71c17091df843441965f871c1 /userspace/cuda/READ-ME-FIRST.md
parentf4803e303e1e4bfde9f241ec3b6226399d01825d (diff)
downloadopen-iov-1fdbf4ea8c17dab2b8fca6b5e58c2a6d3bc7596d.tar.gz
open-iov-1fdbf4ea8c17dab2b8fca6b5e58c2a6d3bc7596d.zip
docs: record physical-GPU integration mechanism and refresh project status
- add docs/03-architecture/08-physical-gpu-integration.md: interfaces that exist, mechanism options A-E, chosen path (module-owned GPU driven through its real GSP firmware), sharing policy, decision record - update 06-host-module-and-hybrid-model, 02-practical-challenges, system overview, known-knowns, docs/README reading order and CUDA-side docs to match - correct stale engine-topology/COPY14 blocker claims across the tree - add STATE-CURRENT.md as the dated public status snapshot
Diffstat (limited to 'userspace/cuda/READ-ME-FIRST.md')
-rw-r--r--userspace/cuda/READ-ME-FIRST.md24
1 files changed, 13 insertions, 11 deletions
diff --git a/userspace/cuda/READ-ME-FIRST.md b/userspace/cuda/READ-ME-FIRST.md
index 2abb797..9adcf75 100644
--- a/userspace/cuda/READ-ME-FIRST.md
+++ b/userspace/cuda/READ-ME-FIRST.md
@@ -24,14 +24,16 @@ tooling.
ioctl traces) are still valid; any conclusion drawn from its decompiled
code must be re-derived. The new tooling translates addresses for you:
`tools/ghidra_decompile_at.sh` and the annotated corpus.
-2. **`docs/05` §3 — the `cuCtxCreate` path: crash solved, engine topology
- blocking.** The old fault at `libcuda+0x453f90` (helper at `+0x453ef0`) is
- solved: the alloc reply must **echo the request's params**, because the
- driver copies 16 bytes of class params back over the caller's 8-byte local
- (the hook's saved `rbp`) — a zeroed reply is what made `rbp=0` (§3.5). The
- current blocker is one step later: the class-filtered engine list is
- missing the async copy engine `COPY14`, so `cuCtxCreate` returns `rc=999`
- (§3.6). §3.3 gives the engine-record layout (`base+0x2fec`,
+2. **`docs/05` §3 — the `cuCtxCreate` path: crash and engine topology
+ solved, completion is the frontier.** The old fault at
+ `libcuda+0x453f90` (helper at `+0x453ef0`) is solved: the alloc reply must
+ **echo the request's params**, because the driver copies 16 bytes of class
+ params back over the caller's 8-byte local (the hook's saved `rbp`) — a
+ zeroed reply is what made `rbp=0` (§3.5). The engine inventory is now
+ complete (the async copy engine is included); context creation reaches a
+ completion wait that currently ends in `rc=999` (§3.6 carries the
+ historical analysis and a status note). §3.3 gives the engine-record layout
+ (`base+0x2fec`,
`+0x300c+(idx-1)*0x14`, `+0x350c`, `+0x351c+(idx-0x16)*0x14`; fields
+0/+8/+0xc) and §3.7 lists exactly what the emulation should check first.
@@ -45,7 +47,7 @@ Read in this order; each builds on the previous one.
|---|---|---|---|
| 1 | `docs/01-architecture.md` | 15 min | The mental model: layers (API → engine → driver-model → hardware), context/device/stream/channel/memory objects, the marker + tracking-semaphore sync model, launch/QMD flow, UVM integration, threading. This is the vocabulary the rest of the docs use. |
| 2 | `docs/03-driver-and-gpu-interface.md` | 15 min | The emulation contract: device nodes and every ioctl CUDA issues, RM object classes, control families, memory/VA/mapping, channels/GPFIFO/USERD/doorbells, semaphores/notifiers/interrupts, UVM, GSP-RM. Ends with an 8-point emulation checklist. |
-| 3 | `docs/05-570.144-decompilation.md` | 10 min | The actual binary: function counts, address conventions, API stub → wrapper → implementation mechanism, the `cuCtxCreate` crash-path resolution and current engine-topology blocker, and how to look anything up in the corpus. |
+| 3 | `docs/05-570.144-decompilation.md` | 10 min | The actual binary: function counts, address conventions, API stub → wrapper → implementation mechanism, the `cuCtxCreate` crash-path resolution and engine-topology fix, the completion/execution frontier, and how to look anything up in the corpus. |
| 4 | `docs/04-virtualization-and-emulation.md` | 15 min | Design doc: how NVIDIA's vGPU split works, how Open-IOV differs (emulate the interface, execute the work), and the anti-fragility/performance/portability/security principles that constrain any fix you make. |
| 5 | `docs/02-build-and-execution.md` | 10 min | How the library is built (generated API wrappers, entry tables, embedded device code) and how it executes in a process (init sequence, threads, interposition, `/dev` access, why LD_PRELOAD can't see its syscalls). |
@@ -148,8 +150,8 @@ userspace/cuda/
## 6. The shortest possible version
-1. `docs/05` §1.1 and §3 — address fix + the `cuCtxCreate` path (crash
- solved; engine-topology blocker) (read now).
+1. `docs/05` §1.1 and §3 — address fix + the `cuCtxCreate` path (crash and
+ engine topology solved; completion/execution frontier) (read now).
2. `docs/01` and `docs/03` — the model and the contract.
3. `docs/04` — the design principles your fix must respect.
4. `docs/06` — the recipes; then `tools/`.