Hardware and Software Matrix
An absence of critical technical documentation has historically slowed growth and adoption of developer ecosystems for GPU virtualization.
This CC-BY-4.0 licensed content can either be used with attribution, or used as inspiration for new documentation, created by GPU vendors for public commercial distribution as developer documentation.
Where possible, this documentation will clearly label dates and versions of observed-but-not-guaranteed behaviour vs. vendor-documented stable interfaces/behaviour with guarantees of forward or backward compatibility.
Hardware and Software Matrix
Companion summary. This page condenses
../docs/06-portability/hardware-software-matrix.md— the canonical support matrix: the support ladder, the current status of every host/GPU/guest/hypervisor combination, and what adding a combination requires. The validation process behind every support decision is../docs/06-portability/03-device-validation-and-porting-sequence.md. When this page and the docs tree disagree, the docs tree wins. Front door:../docs/README.md.
Status: 2026-10-12, tree master @ 2f066727. Tags: [reference] continuously tested, bugs block releases; [supported] tested per release; [experimental] partial or bring-up; [target] designed for, bring-up in progress; [design] design direction, not the current build.
1. Support ladder
Support means tested and documented, not "should probably work".
| Level | Meaning |
|---|---|
| Reference | continuously tested; bugs block releases |
| Supported | tested per release; documented workarounds if any |
| Experimental | known to boot/test partially; may need configuration |
| Target | architecture designed for it; bring-up in progress |
| Out of scope | not planned |
2. Host platforms
| Platform | Status | Notes |
|---|---|---|
| x86_64 + NVIDIA Turing (TU104) | Reference | the development hardware (RTX 2080-class); the only Reference platform today |
| x86_64 + Ampere / Ada consumer | Target | profile work; expected to be configuration + measurement |
| x86_64 + Hopper / datacenter | Target | requires MIG-aware policy for multi-tenancy |
| aarch64 + Grace-Hopper (GH200) | Target | host-architecture work in the memory model |
| aarch64 + Grace-Blackwell | Target | as above, newer firmware/driver family |
| GB10 (DGX Spark, Surface-class RTX laptops) | Target | same architecture; firmware/ROM quirks to be measured |
| Other NVIDIA generations | Experimental | bring-up path in the canonical document §5 |
The design direction is that each new host platform should require configuration + verification, not new code — not the current state: selection is compile-time today and the module is built for the TU104 profile.
3. Guest operating systems
| Guest | Status |
|---|---|
Linux x86_64 (stock nvidia.ko, CUDA)
|
Experimental — probe, nvidia-smi and the driver-API smoke pass; CE-class copies are forwarded default-off; for GR the guest launch reaches the front-end but no grid has dispatched yet (see Execution-Frontier.md); no continuous guest testing yet
|
| Linux aarch64 | Target |
| Windows x86_64 (WDDM driver, CUDA, 3D) | Target |
| Other Unix (FreeBSD, ...) | Out of scope until demand |
Guest rule: the guest never contains Open-IOV code — no guest agent, no driver patch, no kernel parameters beyond what the stock driver needs.
4. Hypervisors and transports
| Hypervisor | Status | Transport |
|---|---|---|
| KVM + QEMU (VFIO mdev) | Reference | VFIO mdev + eventfd IRQ + DMA interface |
| libvirt (mdev attach) | Supported | same, via libvirt XML |
| Zen / KVM on other device models | Experimental | as above |
| Xen (incl. Argo/OpenXT) | Target | Xen device model + event channels |
| Qubes OS / Qubes OS Air | Target | compartmentalized VMs; GPU per compartment |
| Cloud hypervisor / crosvm | Experimental | VFIO-based; needs testing |
The transport boundary — registration, guest-memory access, interrupt injection — is deliberately narrow, so a new transport is small and isolated.
5. What portability means today
host architecture GPU family driver/firmware family
┌─────────────────┐ ┌──────────────────┐ ┌────────────────────┐
│ x86_64 │ │ Turing (TU104) │ │ 570.144 (anchor) │
│ aarch64 (Grace) │ │ Ampere / Ada │ │ newer families │
│ GB10-class │ │ Hopper / datac. │ │ (gated, pending │
└────────┬────────┘ └────────┬─────────┘ │ review) │
│ │ └─────────┬──────────┘
└──────────┬──────────┴───────────────────────┘
▼
one combination = hardware profile + version profile
▼
evaluation ladder + evidence → matrix entry:
"hardware X + driver Y + firmware Z, tested at rung R on date D"
The configuration surface lives in config/: config/hardware/<arch>.yaml (PCI IDs, BARs, memory geometry, engine lists) and config/versions/<driver>.yaml (RPC/control inventories, capability tables).
These files are design targets, not live configuration. No code reads them today: selection is compile-time and the module is built for the TU104 profile. Treating the YAML surface as authoritative — or claiming "configuration-driven portability" — is aspirational until the profiles are wired into the module's load path. A profile is the unit of support; what is missing is the code that reads the profile files, not the schema.
6. Adding a new combination
New GPU / hardware profile.
- Create a hardware profile: PCI IDs, BAR layout and sizes, memory geometry (FB size, BAR windows), engine inventory, interrupt topology, and the register values the guest driver validates during probe.
- Run the five-rung evaluation ladder (
../docs/05-operations/01-performance-correctness-security.md). - Record the differences; prefer configuration over code.
- Publish the profile, the evidence, and any workarounds.
Firmware-side analysis uses the risc-v-gsp-rm-debugger (Riscv-GSP-RM-Debugger.md): first-touch probes and per-pair comparisons classify each difference as profile data or logic before any profile change lands.
New firmware version. Images are versioned under firmware/<SERIES>-GSP/<VERSION>/ with signatures and analysis artifacts; the work is capture, inventory diff, decode against that version's reference, then configuration/handlers and a re-run of the ladder.
New driver version. Run the trace, diff the RPC/control inventory, add version-keyed handlers, re-run the ladder. Newer driver/firmware families are gated pending review before any work starts.
Evidence expectations. A combination is entered in the matrix only with the profile fields recorded; the firmware/device pairing verified by hash and version string; every first-touch difference explained as profile or logic; per-pair comparison results with session hashes; the metric table with its reference-capture method and stated fidelity limits; and a supervised physical validation for the support claim. "Tested and documented" is literal: an untested or simulator-only combination stays Target or Experimental.
7. Anchor versions and engine-list portability
The anchor is guest CUDA driver (libcuda) 570.144 with GSP firmware 570.144; the host oracle is libcuda 570.211.01 with CUDA toolkit 12.0. The versioned surface is the RM ioctl/class/control interface the userspace driver issues — not a stable public API; see CUDA-Userspace-Driver.md.
The engine inventory and its class-list filtering are per-architecture, per-driver data. An earlier gap was concrete: a missing async copy engine blocked context creation until the inventory was completed — which is why it belongs in the hardware profile, validated against the host oracle.
8. Known portability risks
| Risk | Mitigation |
|---|---|
| Page-size/cache-attribute differences on aarch64 | keep the memory model abstract; test on Grace early |
| Windows driver ROM/VBIOS expectations | explicit ROM/VBIOS provisioning in the device profile; measured bring-up |
| Xen interrupt/memory interfaces differ | narrow transport interface + Xen backend plan |
| Vendor ROMs and laptop firmware variants (GB10/Surface) | per-device overrides in the profile system |
| Driver-family drift (580 and newer) | version-keyed handlers; matrix-driven testing |
9. Related documentation
../docs/06-portability/hardware-software-matrix.md— canonical matrix: ladder, status, procedures; the validation process behind every support claim is in../docs/06-portability/03-device-validation-and-porting-sequence.md.../docs/05-operations/01-performance-correctness-security.md— the five-rung evaluation ladder and evidence rules.Project-Status.mdandSystem-Overview.md— current status and component map.Riscv-GSP-RM-Debugger.md— firmware-side portability analysis.HAAEEP-and-Collaboration.md— the edge use case and collaboration models.