Attempted 4.4g's console_fb_init() reorder twice this session: once bare, once with the fb_scroll_rows() volatile fix applied. Both stalled boot indefinitely (12,000+ lines logged, still running after 3 minutes vs. a normal few-second boot) instead of completing. Root cause traced past the scroll fix to Makefile.starkernel building the kernel at -O0 -- no optimization flag has ever been configured there, verified against the file's full git history (17 commits, only ever one unrelated host-tool -O2 line). Both the kernel's own vendored hosted Makefile and the standalone StarForth repo's Makefile default to -O2 (up to -O3/-flto on faster targets); Makefile.starkernel was written fresh for the bare-metal target and never got that ladder. Documented as new item 4.6: enabling optimization is not a safe drop-in change on its own. Found one confirmed, isolated correctness hazard first -- TimeTrustState.ticks (timer.h:90) is written directly in ISR context on all three architectures (heartbeat.c:163) and read directly by mainline (heartbeat.c:200-202, including a busy-wait in kernel_main.c:880) without being volatile, unlike every other ISR-shared global checked (g_spurious_count, g_plic_claim_count, g_pending_counter/g_pending_valid/ g_adaptive_period_ns are all correctly volatile already). Reverted the console_fb_init() reorder itself (uncommitted, so a plain git restore) -- 4.4g stays open pending 4.6. Both the reorder attempts' logs (stalled, never reached ok>) and this session's routine three-arch artifacts (capsules/BLOCK_MAP.md, disk/ artemis.img, DOE CSV) are committed as audit trail per CLAUDE.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
30 MiB
30 MiB
The file is too large to be shown.
View Raw