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 | 13f46e60760cc0855484cc69de913ea34f55c24f (patch) | |
| tree | df67eb2dfc5afd2c56845e514624a4842152a1f1 /docs/03-architecture/04-uvm.md | |
| parent | 21b8ebc9db1d0ae649d6406087ea22b54e3b5775 (diff) | |
| download | open-iov-13f46e60760cc0855484cc69de913ea34f55c24f.tar.gz open-iov-13f46e60760cc0855484cc69de913ea34f55c24f.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/03-architecture/04-uvm.md')
| -rw-r--r-- | docs/03-architecture/04-uvm.md | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/docs/03-architecture/04-uvm.md b/docs/03-architecture/04-uvm.md index 299f46b..05ec80b 100644 --- a/docs/03-architecture/04-uvm.md +++ b/docs/03-architecture/04-uvm.md @@ -50,13 +50,24 @@ Each stage has a distinct failure signature; our debugging docs map them. | Requirement | Detail | Our status | |---|---|---| | GPU identity | must match the uuid from RM | โ
| -| CE capabilities | per-engine support bits; UVM *requires* `supported && !grce && sysmem` for CPU_TO_GPU/GPU_TO_CPU channels | โ
(we answer CE_GET_PHYSICAL_CAPS with the correct bits) | +| CE capabilities | per-engine support bits; UVM *requires* `supported && !grce && sysmem` for CPU_TO_GPU/GPU_TO_CPU channels | ๐ก the caps we answer are accepted, but the engine list / CE capabilities are missing the async copy engine (`COPY14`) โ the current context-creation blocker | | Channel creation | RM channel objects with GPFIFO/userd/instance parameters | โ
objects created | -| Pushes executed | UVM's first action on a new channel is an *init push* followed by a semaphore-tracked wait | ๐ก we can complete them (see below) | +| Pushes executed | UVM's first action on a new channel is an *init push* followed by a semaphore-tracked wait | ๐ก the host decodes method streams and executes memsets, copies and semaphore releases in software (a bridge); no kernel is forwarded to the physical GPU yet | | Page trees | UVM initializes page trees with its own pushes; the *server-owned* ranges must be populated by us | ๐ก | | Fault delivery | fault buffer + notification; replay/cancel semantics | ๐ด | | Semantics of completions | tracker values must advance exactly | ๐ก | +**Current blocker (2026-09-23):** `cuCtxCreate` returns `rc=999` +(`CUDA_ERROR_UNKNOWN`) because the emulated engine list lacks the async copy +engine (`COPY14`); teardown of the failed context still oopses in the guest +kernel in `uvm_pmm_devmem_page_to_va_space` (twice per boot). The CUDA-side +contract and reply rules are in +[`../../userspace/cuda/docs/03-driver-and-gpu-interface.md` ยง9](../../userspace/cuda/docs/03-driver-and-gpu-interface.md) +and +[`../../userspace/cuda/docs/04-virtualization-and-emulation.md` ยง6](../../userspace/cuda/docs/04-virtualization-and-emulation.md); +start at +[`../../userspace/cuda/READ-ME-FIRST.md`](../../userspace/cuda/READ-ME-FIRST.md). + ## 4. The most important discovery: how UVM waits UVM's tracker (`uvm_tracker.c`) is the single most visible symptom of an |
