From 431aa55e38fb8eeca40ca6aded0faef1b9b56268 Mon Sep 17 00:00:00 2001 From: vasilito Date: Fri, 24 Jul 2026 04:03:16 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20QEMU=20pre-validation=20gate=20MET=20?= =?UTF-8?q?=E2=80=94=20dw-i2c=20fd-to-init=20boot=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- .../LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md b/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md index 63200b2afb..c3e213b292 100644 --- a/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md +++ b/local/docs/LG-GRAM-16Z90TP-COMPATIBILITY-PLAN.md @@ -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.** ---