docs: QEMU pre-validation gate MET — dw-i2c fd-to-init boot fix

Record that redbear-mini now boots to the Red Bear login: prompt in QEMU.
Document the root cause (dw_i2c::endpoint::serve register_sync_scheme
never returned the cap fd to init — ptyd-class deadlock on type={scheme}
services) and the fix (deliver cap fd via INIT_NOTIFY). Note follow-ups:
_REG opregion-connect is dead code (initialize_namespace never called),
and driver-manager maps class=0x03 to full-only redox-drm in mini.
This commit is contained in:
2026-07-24 04:03:16 +09:00
parent 3855f40a54
commit 431aa55e38
@@ -197,6 +197,28 @@ Effort scale: S (<1 week) · M (13 weeks) · L (38 weeks) · XL (8+ weeks)
### PHASE 1 — Bare-metal boot validation (S, evidence-first)
> **QEMU pre-validation gate: MET (2026-07-23).** `redbear-mini` now boots to the
> `Red Bear login:` prompt in QEMU. The boot previously deadlocked right after
> `Started Intel LPSS I2C controller` (CPU halted, init asleep in `call_ro(FD)`).
> **Root cause (ptyd-class):** `dw_i2c::endpoint::serve` used `register_sync_scheme`,
> which registers the scheme to the daemon's own namespace but never returns the
> capability fd to init — so every `type={scheme}` service using it
> (intel-lpss-i2cd, dw-acpi-i2cd) hung init waiting for a fd that never arrived.
> **Fix:** endpoint now creates the cap fd and delivers it to init via the
> `INIT_NOTIFY` pipe (the `SchemeDaemon::ready_with_fd` mechanism that i2cd,
> ucsid, and ptyd already use). Verified: all scheme services register
> (`/scheme/i2c-lpss`, `/scheme/dw-acpi-i2c`, ucsi, i2c-hidd) and the system
> reaches getty with zero panics. Bare-metal testing is now unblocked.
>
> **Related integration notes:** (1) The `_REG` opregion-connect code added to
> `acpi-rs` is currently **dead code** — `initialize_namespace()` is never called
> by acpid (the interpreter is built via `new_from_platform` which loads tables
> but skips namespace init). Wiring `initialize_namespace()` in is a follow-up;
> it matters for firmware that gates EC access behind `_REG(EmbeddedControl,1)`.
> (2) driver-manager maps any `class=0x03` device to `/usr/bin/redox-drm`
> (full-only), so in mini it defers and re-probes in a polling loop — noisy but
> non-blocking; not a boot blocker.
This host is available — run the existing validation harnesses against it and
record everything. **No code changes in this phase except genuine boot-blocker fixes.**
@@ -210,7 +232,9 @@ record everything. **No code changes in this phase except genuine boot-blocker f
| 1.6 | Fix only true boot-blockers discovered (root-cause fixes per ABSOLUTE RULE) | Triage as found |
**Gate 1:** redbear-mini boots to login on the host with keyboard + NVMe + USB +
shutdown/reboot verified. This is the " minimally usable " milestone.
shutdown/reboot verified. This is the " minimally usable " milestone. **QEMU
equivalent of this gate is now passing (2026-07-23); bare-metal run remains to
confirm on real hardware.**
---