summaryrefslogtreecommitdiffstats
path: root/docs/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/README.md')
-rw-r--r--docs/README.md48
1 files changed, 35 insertions, 13 deletions
diff --git a/docs/README.md b/docs/README.md
index fff4f82..cee435e 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -97,24 +97,36 @@ and [`01-orientation/02-the-ai-edge-and-ecosystem.md`](01-orientation/02-the-ai-
| Emulated vGPU device (PCI, BARs, MSI-X, VFIO mdev) | ✅ Working |
| GSP boot emulation (FWSEC/booter/RISCV handshake) | ✅ Working |
| GSP-RM message queue + RPC transport | ✅ Working |
-| GSP-RM controls: device/fb/bus tables, CE caps, vaspace, GMMU static info | ✅ Working |
+| GSP-RM controls: device/fb/bus tables, CE caps, vaspace, GMMU static info | 🟡 Mostly — values are coherent for the special-cased controls; engine inventory/class-list consistency is the current CUDA blocker (COPY14) |
| Guest `nvidia.ko` probe, `nvidia-smi` | ✅ Working (TU104) |
-| Guest CUDA driver (`libcuda`) startup | 🟡 Partially — UVM advances through channel creation and page-tree init; see [`04-implementation/01-known-knowns-and-unknowns.md`](04-implementation/01-known-knowns-and-unknowns.md) |
-| CUDA kernel execution | 🔴 Not yet — requires GPU work forwarding |
+| Guest CUDA driver (`libcuda`) startup | 🟡 Partially — `cuInit`/device enumeration work; `cuCtxCreate` returns `999` (`CUDA_ERROR_UNKNOWN`) because the emulated engine list is missing the async copy engine (COPY14). See [`04-implementation/01-known-knowns-and-unknowns.md`](04-implementation/01-known-knowns-and-unknowns.md) and [`../userspace/cuda/READ-ME-FIRST.md`](../userspace/cuda/READ-ME-FIRST.md) |
+| CUDA kernel execution | 🔴 Not yet — context creation must succeed first; then GPU work forwarding (today only decoded memsets/copies/semaphore releases execute, in the host) |
| OpenGL / Vulkan | 🔴 Not yet |
| Windows guest | 🔴 Not yet |
| Multi-tenant isolation (VFs, mdev-per-VM) | 🟡 Designed, partially implemented |
-We also know exactly *why* CUDA kernels do not run yet, and what the path is:
-see the known-knowns/known-unknowns document. The short version: the emulation
-is now faithful enough that the guest stack reaches UVM initialization; the
-missing piece is forwarding the guest's *work* (push buffers, page trees,
-execution) to the physical GPU under our control.
+We also know exactly where the CUDA bring-up stands and what the next step is:
+the userspace `libcuda` segfault was fixed (an RM allocation reply now echoes
+the request parameters instead of returning zeros), and the remaining blocker
+is data: the engine list the emulation reports must include the async copy
+engine and stay consistent with the class list, because `libcuda` filters
+engines against it. The full mechanism, with offsets and the decompiled call
+path, is in [`../userspace/cuda/docs/05-570.144-decompilation.md`](../userspace/cuda/docs/05-570.144-decompilation.md).
+Beyond that, the missing piece for kernel execution is forwarding the guest's
+*work* (push buffers, page trees, execution) to the physical GPU under our
+control; see [`04-implementation/02-practical-challenges-and-adversarial-interop.md`](04-implementation/02-practical-challenges-and-adversarial-interop.md).
## 4. How to read these docs (progressive disclosure)
Read in order if you are new. Jump directly if you know what you need.
+> **Debugging the CUDA bring-up?** Start with
+> [`../userspace/cuda/READ-ME-FIRST.md`](../userspace/cuda/READ-ME-FIRST.md) —
+> a five-minute guide to the userspace driver analysis, the corrected crash
+> path, the current engine-topology blocker, and the lookup recipes for
+> `libcuda+0x...` offsets. It links back into this tree for the interface and
+> emulation contract.
+
| # | Document | Audience | Time |
|---|----------|----------|------|
| 1 | [Purpose and scope](01-orientation/01-purpose-and-scope.md) | everyone | 10 min |
@@ -136,11 +148,21 @@ Read in order if you are new. Jump directly if you know what you need.
| 17 | [HAAEEP and collaboration](08-ecosystem/haaeep-and-collaboration.md) | stakeholders, partners | 20 min |
| 18 | [Glossary and FAQ](09-reference/glossary-and-faq.md) | everyone | reference |
-Existing deep-dive material (kept, still valid, being folded into this tree):
-the `wiki/` directory (firmware analysis, address reference, wire protocol,
-RPC message format) and the `docs/` reference documents
-(`GSP_EMULATION_ARCHITECTURE.md`, `DEBUGGING.md`, `PERFORMANCE.md`,
-`BUILD_NVIDIA_OPENRM.md`, `VERSION_UPGRADE.md`).
+Deep-dive material lives in [`../wiki/`](../wiki/README.md) (firmware
+decompilation record, address reference, historical protocol notes). Wiki
+pages that predate the current implementation carry a status banner naming
+the canonical document in this tree; use the banner, not the old body.
+
+Historical material is kept but must not be read as current state. The
+following carry a **superseded** banner and point at their replacements:
+`refactored-architecture.md`, `refactored-implementation-to-do.md`,
+`PORTABLE_ARCHITECTURE.md`, `GSP_EMULATION_ARCHITECTURE.md`, `ONBOARDING.md`,
+`DEVELOPMENT_WORKFLOW.md`, `PERFORMANCE.md`, `DEBUGGING.md` (sections 3–4
+remain useful case studies), `VERSION_UPGRADE.md`, `BUILD_NVIDIA_OPENRM.md`
+(historical build notes; its load order is corrected in place), and
+[`../STATE.md`](../STATE.md) (2026-09-21 snapshot). The current versions of
+those topics are `03-architecture/01`/`06`, `04-implementation/01`/`02`,
+`05-operations/01`/`02`, `06-portability`, and `07-developers`.
## 5. What makes Open-IOV different?