Difference between revisions of "Hardware and Software Matrix"

From Open-IOV
Jump to navigation Jump to search
(Add page from tracked wiki source (2026 IA update))
 
m (Carry the site-wide About/licensing message on every page (2026-10-12))
Line 1: Line 1:
{{About message}}
= Hardware and Software Matrix =
= Hardware and Software Matrix =



Revision as of 04:29, 12 October 2026

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.

  1. 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.
  2. Run the five-rung evaluation ladder (../docs/05-operations/01-performance-correctness-security.md).
  3. Record the differences; prefer configuration over code.
  4. 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