FABRIC.md: item 4.5b complete -- TimeTrustState.ticks fixed, three-arch verified
Marks 4.5b done with the verification record (three log dirs, all reaching [Hera] ok> at unchanged -O0). Routine artifacts from this session's three-arch runs: capsules/BLOCK_MAP.md, disk/artemis.img, DOE CSVs, QEMU serial logs. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
5cbb04c60a
commit
bc126c5a91
@@ -5454,7 +5454,7 @@ document and committing that amendment as its own item.*
|
||||
> No other ISR-reachable global state was found beyond what's listed above, on any of the
|
||||
> three architectures.
|
||||
|
||||
- [ ] **4.5b — Fix every hazard 4.5a found.** Depends on 4.5a. Code fix, no optimization
|
||||
- [x] **4.5b — Fix every hazard 4.5a found.** Depends on 4.5a. Code fix, no optimization
|
||||
flags touched yet. `TimeTrustState.ticks` is the one already-confirmed instance — mark it
|
||||
`volatile`, or fold it into the existing `g_pending_counter`/`g_pending_valid`-style
|
||||
ISR→mainline handoff pattern already used elsewhere in `heartbeat.c`, whichever fits the
|
||||
@@ -5466,6 +5466,18 @@ document and committing that amendment as its own item.*
|
||||
is now safe).
|
||||
*Refs:* 4.5, 4.5a.
|
||||
|
||||
> **Done 2026-08-11.** 4.5a found exactly one hazard, so this fixes exactly one field:
|
||||
> `TimeTrustState.ticks` (`include/starkernel/timer.h:90`) marked `volatile` in place,
|
||||
> rather than folded into the `g_pending_counter` handoff — `ticks` is a simple monotonic
|
||||
> counter with a single ISR writer and no derived-state computation on the mainline side
|
||||
> (unlike `window`/`variance`/`trust`, which genuinely need `heartbeat_service()`'s
|
||||
> deferred-processing pattern), so a direct `volatile` on the one hazardous field is the
|
||||
> narrower fix and leaves the struct's other fields — which don't need it — unaffected.
|
||||
> Three-arch acceptance boot clean at unchanged `-O0`: amd64 `logs/20260811-100623/`,
|
||||
> aarch64 `logs/20260811-100724/`, riscv64 `logs/20260811-100825/`, all reaching
|
||||
> `[Hera] ok>`. This proves no regression, not that optimization is safe yet — that's
|
||||
> 4.5e's job once 4.5c/4.5d actually turn it on.
|
||||
|
||||
- [ ] **4.5c — Decide and record the target optimization flags.** Design-only, no code.
|
||||
Depends on 4.5b (deciding flags before the known hazard is fixed is premature). Candidates
|
||||
to weigh, not yet chosen: matching the hosted/StarForth ladder's
|
||||
|
||||
Reference in New Issue
Block a user