Files
RedBear-OS/local/docs/HARDWARE-VALIDATION-MATRIX.md
T
vasilito 52e1deebd0 multi-session sweep: submodule bumps + doc/recipe/script updates
Submodule pointer updates (forks already pushed):
- base: netstack generic ReaderPool + OwnedFd bridge (36dddf23)
- bootloader, installer, userutils: upstream-tracking commits

Parallel agent work swept:
- kf6-kcmutils: recipe + CMakeLists + initial migration patch
- redbear-iwlwifi: Cargo.toml update
- tlc: MC-PARITY-AUDIT + README updates
- xwayland recipe+patch removed (stale)
- scripts: verify-patch-content.py, lint-config-paths.sh
- docs: CONSOLE-TO-KDE-DESKTOP-PLAN, DBUS-INTEGRATION-PLAN,
  HARDWARE-VALIDATION-MATRIX, REDBEAR-FULL-SDDM-BRINGUP,
  UPSTREAM-SYNC-PROCEDURE, README
2026-07-27 06:17:58 +09:00

102 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hardware Validation Matrix — Red Bear OS
| Component | QEMU | Bare Metal | Hardware | Notes |
|-----------|------|------------|----------|-------|
| **Storage** | | | | |
| AHCI SATA | ✅ | 🔲 | [MISSING] | NCQ structure present, not runtime-validated. No AHCI-capable SATA controller inventoried for bare-metal testing. |
| NVMe | 🔲 | 🔲 | [AVAILABLE] (LG Gram: SK Hynix [1c5c:1959]) | Basic driver, no multiqueue. NVMe is class-matched (`class=1 subclass=8`), initfs-capable. The LG Gram's NVMe is available for Phase 1 BM validation. |
| virtio-blk | ✅ | N/A | N/A | QEMU only |
| **Network** | | | | |
| e1000d (Intel Gigabit) | ✅ (e1000e emul.) | 🔲 | [MISSING] | ITR structure present, no offload validation. QEMU `-device e1000e` emulates 82574L `8086:10d3` — proven bounded (DHCP+ping). Physical e1000/e1000e NIC not identified in any inventoried bench. Modern I219/I225 NOT supported. |
| rtl8168d (Realtek Gigabit) | 🔲 (no QEMU emul.) | 🔲 | [MISSING] | PHY config present. QEMU has no rtl8168 model — must be tested bare metal. No physical RTL8168/8169 NIC identified in any bench. |
| rtl8139d (Realtek Fast Eth.) | 🔲 (QEMU avail., not proven) | 🔲 | [DEFERRED] | Legacy 10/100 NIC. QEMU `-device rtl8139` available but not runtime-proven. Physical RTL8139: legacy PCI, deprioritized vs. gigabit.+ |
| ixgbed (Intel 10GbE) | 🔲 (no QEMU emul.) | 🔲 | [MISSING] | Port of ixy.rs, <1000 LoC, MSI-X. 40 PCI IDs supported (82599 family). No physical 10GbE NIC (X520/X540/X550) inventoried. |
| virtio-netd (VirtIO) | ✅ (MSI-X proven) | N/A | N/A | QEMU only. MSI-X + bounded VM networking baseline proven. |
| redbear-iwlwifi (Intel Wi-Fi) | 🔲 (VFIO only) | 🔲 | [AVAILABLE] (LG Gram BE201 [8086:7740]) | MVM candidates: AX210/AX211/AX201/9462 (all [MISSING] hardware). MLD candidates: BE201 [8086:7740] (only MLD device — [AVAILABLE] in LG Gram). VFIO/passthrough framework exists; no emulated Wi-Fi in QEMU. Firmware pre-staged for BE201 c101c106. MLD Rust layer code-complete (23 tests), never HW-validated. See `HARDWARE-NETWORKING-INVENTORY.md` §2.6. |
| redbear-ecmd (USB CDC ECM) | 🔲 (not tested) | 🔲 | [MISSING] | USB CDC ECM/NCM driver for USB-Ethernet dongles. No dongle inventoried. **Critical: only viable interim network for LG Gram (no wired NIC).** |
| **Audio** | | | | |
| Intel HDA | 🔲 | 🔲 | [AVAILABLE] (LG Gram: cAVS/SOF [8086:7728]) | Codec detection + jack sense added, not validated. LG Gram HDA is cAVS/DSP-based legacy HDA cannot reach ALC298 codec behind DSP; needs SOF port. |
| AC97 | 🔲 | 🔲 | [MISSING] | Basic driver. No AC97 hardware inventoried. |
| **Input** | | | | |
| PS/2 | ✅ | 🔲 | [AVAILABLE] (LG Gram: i8042 keyboard, AUX disabled) | QEMU keyboard/mouse work. LG Gram has PS/2 keyboard (AUX port disabled — handled by ps2d). |
| USB HID | ✅ | 🔲 | [AVAILABLE] (LG Gram: USB keyboard/mouse attachable) | Keyboard/mouse autospawn via test-usb-qemu.sh (P1 hardening); not validated on real HW. |
| I2C-HID Touchpad | 🔲 | 🔲 | [AVAILABLE] (LG Gram: 04CA:00CC on LPSS DesignWare I2C) | Full I2C chain code-complete (dw-i2c engine, LPSS PCI bring-up, i2c-hidd with multitouch parser). Runtime proof pending Phase 1 boot. |
| **USB** | | | | |
| xHCI host controller | ✅ | 🔲 | [AVAILABLE] (LG Gram: 2× xHCI [8086:7ec0, 8086:777d]) | Interrupt-driven mode proven (test-xhci-irq-qemu.sh); 51-flag quirk table + HCCPARAMS2 gating (P2-A/B); 36-code error recovery (P2-C); not HW-validated. LG Gram quirks decoded (SPURIOUS_SUCCESS, INTEL_HOST, AVOID_BEI, LPM_SUPPORT). |
| EHCI/UHCI/OHCI controllers | 🔲 | 🔲 | [MISSING] | Compile clean; runtime enumeration proofs planned (P8-B). No EHCI/UHCI/OHCI hardware identified in inventoried benches. |
| USB storage (BOT) | ✅ | 🔲 | [AVAILABLE] (any USB mass-storage device) | usbscsid autospawn + bounded sector readback proven (test-usb-storage-qemu.sh); guest-side write verify open. |
| USB hub (non-root) | ✅ | 🔲 | [MISSING] | Hub + hub-child enumeration proven in QEMU (test-usb-hub-qemu.sh): hub descriptor/EP1/scan/debounce/reset→enable, and usb-kbd behind hub enumerates to HID subdriver (class 3.1 keyboard); "reactor race" root-caused to startup latency under load (not a deadlock). No physical hub inventoried. |
| **GPU/Display** | | | | |
| VESA | ✅ | 🔲 | [AVAILABLE] (LG Gram: GOP framebuffer) | QEMU framebuffer works. LG Gram VESA via GOP framebuffer — vesad fix for bare metal landed (2026-06-19). |
| virtio-gpu | ✅ | N/A | N/A | 2D only, QEMU |
| redox-drm (Intel MTL iGPU) | 🔲 | 🔲 | [AVAILABLE] (LG Gram: MTL [8086:7d51]) | 0x7D51 in INTEL_GEN12_MTL_IDS. DMC load, GMBUS EDID, CPU PWM backlight, GuC/HuC/GSC manifest — all code-complete (2026-07-22). Display init assumes Gen8-era reg layout. No HW validation. |
| **CPU/Power** | | | | |
| cpufreqd | 🔲 | 🟡 (BM MSR path fixed) | [AVAILABLE] (LG Gram: Arrow Lake-H HWP) | Governors implemented, MSR path fixed (2026-06-19). Bare-metal boot verified with HWP on Intel laptop. Not yet validated on LG Gram specifically. |
| thermald | 🔲 | 🔲 | [AVAILABLE] (LG Gram: TZ00 + MSR-based) | ACPI thermal zones, not HW-validated. MSR fallback path exists. |
| **SMP** | | | | |
| x2APIC/SMP | ✅ | ✅ | [AVAILABLE] (Threadripper 128-thread + LG Gram 16-core hybrid) | Multi-core works. AMD Threadripper 128-thread bare-metal proven. Intel Arrow Lake-H 16-core hybrid (P/E/LP-E) expected. |
| **Driver Manager (driver-manager vs pcid-spawner)** | | | | |
| D1 P0 capabilities (C1 dynids + C2 remove + C3 enable + C4 BAR) | ✅ | 🔲 | N/A (code) | Code complete; 52 tests pass; see `local/docs/evidence/driver-manager/D5-AUDIT.md` |
| D1 P1 SpawnDecision + format coexistence + policy blacklist | ✅ | 🔲 | N/A (code) | `spawn_decision_gate()` consults env/CLI/blacklist; `convert_legacy` reads legacy pcid.d format |
| D1 P1 PciQuirkFlags wired into spawn | ✅ | 🔲 | N/A (code) | `driver-manager/src/quirks.rs` consumes `redox-driver-sys`; NEED_FIRMWARE defers probe; NO_MSIX/NO_MSI/FORCE_LEGACY_IRQ signal intx-fallback via env; DISABLE_ACCEL signals accel-disable |
| D1 P1 `/etc/driver-manager.d/` policy loader | ✅ | 🔲 | N/A (code) | `local/recipes/system/driver-manager/source/src/policy.rs`; reads TOML blacklist; consulted at probe |
| D2 SMP concurrent probe (worker pool over `std::thread::scope`) | ✅ | 🔲 | N/A (code) | `redox-driver-core/src/concurrent.rs` with `CountingSemaphore`; tested on host; opt-in via `--concurrent=N` |
| D2 PM hooks (Driver::suspend/resume + signal_then_collect) | ✅ | 🔲 | N/A (code) | Real SIGTERM/SIGKILL in `DriverConfig`; needs iommu/pcid SetPowerState wiring for actual D3 |
| D2 AER foundation (Driver::on_error + ErrorSeverity + RecoveryAction) | ✅ | 🔲 | N/A (code) | Trait API complete; needs pcid AER wake source |
| D2 C-state / P-state / IOMMU / MSI-X / NUMA helpers | ✅ Library | 🔲 HW | N/A (code) | `redox-driver-core/src/modern_technology.rs` — concrete implementations; no driver-manager wrapper (orchestrator removed at v1.4 per policy decision) |
| D3 hotplug | 🟡 Polling fallback | 🔲 | N/A (code) | Reduced to 250ms; `Bus::subscribe_hotplug` returns `Unsupported` until pcid event delivery lands |
| D4 audit-no-stubs | ✅ | N/A | N/A (code) | `local/scripts/driver-manager-audit-no-stubs.py` scans 38 files; **0 violations** at v1.7 |
| D4 SIGHUP reload worker | ✅ | N/A | N/A (code) | `driver-manager/src/sighup.rs`; worker polls `AtomicBool` and calls `SharedBlacklist::replace()`; 1 unit test; `libc::signal` install is left to the host program |
| D4 blackbox test scripts | ✅ | N/A | N/A (code) | 8 scripts in `local/scripts/test-driver-manager-*.sh` |
| D4 heartbeat publisher | ✅ | N/A | N/A (code) | `driver-manager/src/heartbeat.rs`; writes JSON to `/var/run/driver-manager.heartbeat.json` every 5s; 3 unit tests |
| D4 AER listener infrastructure | ✅ | N/A | N/A (code) | `driver-manager/src/aer.rs`; polls `/scheme/acpi/aer`; 7 unit tests; falls back to log-and-no-op when scheme is absent |
| C0 dormant service files | ✅ | N/A | N/A (code) | Committed in `local/sources/base` submodule (commit `0407d9cc`); both `ConditionPathExists`-gated |
| D5 feature-complete gate | ✅ Code | 🔲 HW | [AVAILABLE] (Threadripper AMD + LG Gram Intel Alder Lake class) | All code + tests pass; awaiting real-hardware validation on AMD Threadripper + LG Gram Arrow Lake-H. |
✅ = validated 🔲 = implemented, not validated 🟡 = partial N/A = not applicable
### Hardware Status Codes (new, 2026-07-26)
| Code | Meaning |
|------|---------|
| `[AVAILABLE]` | Physical hardware present and accessible to operator |
| `[MISSING]` | Hardware not present / not acquired — blocks bare-metal validation for this component |
| `[DEFERRED]` | Hardware present or acquirable but not yet integrated into the test bench |
| `N/A` | Not applicable: component is virtual (e.g. virtio), code-only, or has no hardware dependency |
See `local/docs/HARDWARE-NETWORKING-INVENTORY.md` for full hardware bench inventory,
per-driver PCI ID tables, Wi-Fi AP/card/firmware details, peer system specs, and
acquisition recommendations. That document is the canonical hardware inventory for
this validation matrix.
### Status note (2026-07-26)
- **Hardware inventory created:** `local/docs/HARDWARE-NETWORKING-INVENTORY.md` is the new Phase -1 gate. It enumerates all known hardware, marks missing items, and lists acquisition priorities.
- **Critical networking gaps:** (1) Threadripper build host NIC inventory never collected — operator must check. (2) No USB-Ethernet dongle for LG Gram interim networking. (3) No dedicated Wi-Fi AP for bounded validation. (4) No physical Intel/Realtek NIC cards for bare-metal Ethernet validation.
- **LG Gram hardware available:** Intel BE201 [8086:7740] Wi-Fi, NVMe SK Hynix, 2× xHCI, Intel MTL iGPU [8086:7d51], I2C-HID touchpad, PS/2 keyboard, Arrow Lake-H HWP — all mapped to drivers in this matrix. Phase 1 BM boot is the gate.
- **Network matrix expanded from 3 rows to 8 rows** (added: rtl8139d, ixgbed, redbear-iwlwifi, redbear-ecmd) — per the systematic networking fix plan, all network drivers must be tracked individually with hardware availability.
### Prior Status note (2026-07-20)
- The login-based QEMU proofs (PS/2 + serio, monotonic timer, IOMMU first-use, USB storage BOT)
now run through `local/scripts/qemu-login-expect.py` (stdlib python) instead of the host
`expect` tool — no external dependency, per-step timeouts, and safe retry on premature QEMU
death. See `local/docs/legacy-obsolete-2026-07-25/IRQ-AND-LOWLEVEL-CONTROLLERS-ENHANCEMENT-PLAN.md` § "Runtime proof
status (2026-07-20)".
- MSI-X (virtio-net) and xHCI interrupt-driven mode were re-confirmed on the current
`redbear-mini` ISO — once more on 2026-07-20 ~09:10 JST via `test-lowlevel-controllers-qemu.sh`
(log-grep legs, unaffected by host contention).
- Re-confirmation of the login-based legs (PS/2, timer, BOT) with the new
harness is pending an uncontended host — the current build host runs a parallel QEMU-testing
workload (a concurrent agent session under `~/.claude/jobs/` with its own QMP-controlled
guest) that SIGKILLs competing QEMU processes; boots reach getty but the
login prompt is not observed within the timeout there. The ✅ marks above reflect prior
validation of those legs. A retry loop (`/tmp/opencode/a2-retry.sh`) is armed to run the
PS/2, timer, and USB-storage legs automatically once the foreign QEMU workload exits.
- The IOMMU first-use leg currently skips on `redbear-mini` runs because
`build/x86_64/redbear-full/harddrive.img` is absent — a `redbear-full` build is required
to re-confirm that leg.
- Display boots (`-vga std`) can freeze at the fbcond `Performing handoff` step (the
`reopen_for_handoff()` path can block rather than return `EAGAIN` for retry). Headless
(`-vga none`) boots avoid it. Tracked separately on the graphics stack.