summaryrefslogtreecommitdiffstats
path: root/docs/06-portability/hardware-software-matrix.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-23 12:11:10 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-23 12:11:10 -0400
commit13f46e60760cc0855484cc69de913ea34f55c24f (patch)
treedf67eb2dfc5afd2c56845e514624a4842152a1f1 /docs/06-portability/hardware-software-matrix.md
parent21b8ebc9db1d0ae649d6406087ea22b54e3b5775 (diff)
downloadopen-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/06-portability/hardware-software-matrix.md')
-rw-r--r--docs/06-portability/hardware-software-matrix.md32
1 files changed, 29 insertions, 3 deletions
diff --git a/docs/06-portability/hardware-software-matrix.md b/docs/06-portability/hardware-software-matrix.md
index 442e099..b8393f4 100644
--- a/docs/06-portability/hardware-software-matrix.md
+++ b/docs/06-portability/hardware-software-matrix.md
@@ -33,7 +33,7 @@ require configuration + verification, not new code.**
| Guest | Status |
|---|---|
-| Linux x86_64 (stock `nvidia.ko`, CUDA) | **Reference** (initialization; execution in progress) |
+| Linux x86_64 (stock `nvidia.ko`, CUDA) | **Experimental** (bring-up; probe and `nvidia-smi` work, but there is no continuous guest testing and context creation is currently blocked — see §6.1) |
| Linux aarch64 | **Target** |
| Windows x86_64 (WDDM driver, CUDA, 3D) | **Target** |
| Other Unix (FreeBSD, ...) | Out of scope until demand |
@@ -82,18 +82,44 @@ tree, add configuration/handlers, re-run the ladder.
## 6. Version matrix (maintained in the repository)
-The authoritative matrix lives in `config/`:
+The version/hardware configuration lives in `config/`:
```
config/
hardware/<arch>.yaml # PCI IDs, BARs, memory geometry, engine lists
versions/<driver>.yaml # RPC/control inventories, capability tables
- profiles/<name>.yaml # (hardware, driver, firmware) combinations we test
```
+There is no `profiles/` directory today. Note also that the code currently
+hardcodes the TU104 profile, so the YAML surface is the intended interface
+rather than the path the module reads at load time — treating it as
+authoritative is aspirational until the profiles are wired in.
+
A profile is the unit of support: "hardware X + driver family Y + firmware Z =
profile P, tested at rung R on date D." Releases publish the profile table.
+### 6.1 Userspace driver facts
+
+* **Guest CUDA driver** (`libcuda`) under test: **570.144** (md5
+ `ed5b2fc0044df6052df1d5113754c499`).
+* **Host oracle**: `libcuda` **570.211.01** with CUDA toolkit **12.0**, used
+ for A/B comparisons against the guest.
+* **Versioned surface**: the RM ioctl / class / control interface the userspace
+ driver issues — not a stable public API — see
+ [`../../userspace/cuda/docs/03-driver-and-gpu-interface.md`](../../userspace/cuda/docs/03-driver-and-gpu-interface.md).
+
+### 6.2 Engine-list portability
+
+The engine inventory, and how it is filtered by the class list (classDB), are
+per-architecture and per-driver data. Today's gap is concrete: the emulated
+list lacks the async copy engine (`COPY14`), which blocks context creation
+(`cuCtxCreate` returns `rc=999`). Engine inventory belongs in the hardware
+profile, validated against the host oracle per combination. For the
+re-analysis workflow see
+[`../../userspace/cuda/docs/07-version-upgrade-playbook.md`](../../userspace/cuda/docs/07-version-upgrade-playbook.md);
+start at
+[`../../userspace/cuda/READ-ME-FIRST.md`](../../userspace/cuda/READ-ME-FIRST.md).
+
## 7. Architecture properties that enable portability
| Property | Why it matters |