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:
@@ -197,6 +197,28 @@ Effort scale: S (<1 week) · M (1–3 weeks) · L (3–8 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.**
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user