FABRIC.md: item 4.5f -- reorder experiment confirms -O2 fixes the stall
Uncommitted experiment (code reverted after capture, per Captain Bob): moved console_fb_init() before capsule_birth_mama() in kernel_main.c, amd64 only. At -O2 the boot completes cleanly and reaches ok> well inside a 300s bound, versus the indefinite stall previously seen at -O0. Real cost: ~12x more heartbeat ticks during boot from the extra framebuffer scroll volume -- not free, but not a hang. Screendump confirms the actual point of 4.4g: the framebuffer now carries the full HADES/ECW/Stadium/self-test transcript, not just the small post-birth tail. This informs 4.4g's open reorder decision, it doesn't make it -- 4.5f stays unchecked (single-arch feasibility check only, not the three-arch acceptance pass its own done-when requires). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
a1c9fc7330
commit
9b117c787f
@@ -5835,6 +5835,34 @@ document and committing that amendment as its own item.*
|
||||
> numbers still hold, or even remain comparable, once the kernel is built at a different
|
||||
> optimization level. Not scoped here — flagging so it isn't lost if 4.5 ever lands.
|
||||
|
||||
> **Experiment run, 2026-08-11 — uncommitted, reverted after capture, per Captain Bob's
|
||||
> explicit instruction this was informational only (4.4g's reorder decision is still open,
|
||||
> not made by this experiment).** `console_fb_init()`'s call site moved in `kernel_main.c`
|
||||
> from after `capsule_birth_mama()` to just before it (same code, no logic changes). amd64,
|
||||
> `-O2`: boot completed cleanly, reached `ok>` in well under the bounded 300s test window
|
||||
> (previously stalled indefinitely at `-O0` — 12,700+ lines, still running after 3 minutes).
|
||||
> Real cost, not zero: 2785 heartbeat ticks at 100 Hz vs. ~176–231 ticks on the
|
||||
> non-reordered `-O2` boot from 4.5d/4.5e — the framebuffer-visible fleet-birth/self-test
|
||||
> transcript adds substantial real time (screen-draw + scroll volume), it just no longer
|
||||
> hangs. Screendump confirms the actual point: the framebuffer now shows the full
|
||||
> HADES/ECW/Stadium/self-test transcript, not just the small post-birth tail —
|
||||
> `evidence/amd64/qemu-screenshot-20260811-170329-4.5f-reorder-experiment.png`. Captured via
|
||||
> a QEMU HMP monitor socket + `screendump` (the `qemu` Makefile target runs `-display none`
|
||||
> with no monitor by default; this run added `-chardev socket,id=mon0,... -mon
|
||||
> chardev=mon0,mode=readline` to get one). `Makefile.starkernel`'s amd64 `qemu` target
|
||||
> deadline was temporarily dropped from 43200s to 300s for this one test run, then reverted;
|
||||
> `kernel_main.c`'s reorder was reverted immediately after the screendump was captured. Not
|
||||
> run on aarch64/riscv64 — this was a single-architecture feasibility check, not the item's
|
||||
> own three-arch acceptance pass, which only applies once the reorder is actually decided
|
||||
> and landed.
|
||||
>
|
||||
> **What this answers and doesn't:** confirms the stall was specifically an `-O0` cost
|
||||
> problem, not a correctness bug in the reorder itself — `-O2` alone is sufficient to make
|
||||
> it viable. Does **not** decide 4.4g's open question (whether the reorder is wanted); it
|
||||
> only removes "it hangs" as a reason not to. The real-cost number above (≈12× more
|
||||
> heartbeat ticks) is new information for that decision and wasn't available before this
|
||||
> run.
|
||||
|
||||
- [ ] **4.6 — Artemis last.** It works today; it is the thing that cannot be broken.
|
||||
*Refs:* §10.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user