The reading
The failure-trace-capture PR-3 emitter's [BXCAP:RING] section reports the
live window of the capturing CPU's trace ring. On its first boots, from
--features boot_tests,capture_selftest strict-gate runs at 3000 ms of guest
uptime on an aarch64 cortex-a72 -smp 4 guest:
[BXCAP:RING cpu=2 writes=475557 dropped=474533 kept=1024 span_us=29958 enabled=1]
[BXCAP:RING cpu=3 writes=478191 dropped=477167 kept=1024 span_us=15410 enabled=1]
15 to 30 milliseconds of history, with ~477k events already overwritten by
3 seconds of uptime.
Why this is not a contradiction of #852 / PR-2
PR-2's [RING_SPAN:cpu=0:...] self-check measures CPU 0's ring filtered to
TIMER_TICK events, and reports ~1500 ms after its sampling fix. That is
the right measurement for the question PR-2 asked -- whether sampling widened
the tick history -- and it is accurate.
The unfiltered window is a different quantity. The CTX_DIAG_* and
DEFER_REQUEUE_* families (0xff39-0xff48) emit roughly a dozen ring
events per dispatch, and on a CPU that is dispatching steadily they dominate
the 1024-entry buffer. TIMER_TICK entries survive across ~1.5 s because they
are sparse; everything around them is 15-30 ms deep.
Why it matters to the rest of the program
PR-4 wires the capture to the terminal edges, and a fault's EV tail is read
from whichever CPU faulted -- not from CPU 0, and not filtered. So the
pre-fault timeline a fault capture carries today is 15-30 ms wide on a busy
CPU, not the seconds the plan's section 2.2 arithmetic assumes.
Options, none taken here:
Evidence
docs/planning/green-program/failure-capture/serials/pr3/aarch64-selftest-complete.txt
and aarch64-selftest-sched-lock-held.txt in this repo carry [BXCAP:RING]
lines from real boots. Round doc: docs/planning/green-program/failure-capture/PR-3-2026-09-05.md
section 6.4.
The reading
The failure-trace-capture PR-3 emitter's
[BXCAP:RING]section reports thelive window of the capturing CPU's trace ring. On its first boots, from
--features boot_tests,capture_selfteststrict-gate runs at 3000 ms of guestuptime on an aarch64 cortex-a72
-smp 4guest:15 to 30 milliseconds of history, with ~477k events already overwritten by
3 seconds of uptime.
Why this is not a contradiction of #852 / PR-2
PR-2's
[RING_SPAN:cpu=0:...]self-check measures CPU 0's ring filtered toTIMER_TICKevents, and reports ~1500 ms after its sampling fix. That isthe right measurement for the question PR-2 asked -- whether sampling widened
the tick history -- and it is accurate.
The unfiltered window is a different quantity. The
CTX_DIAG_*andDEFER_REQUEUE_*families (0xff39-0xff48) emit roughly a dozen ringevents per dispatch, and on a CPU that is dispatching steadily they dominate
the 1024-entry buffer.
TIMER_TICKentries survive across ~1.5 s because theyare sparse; everything around them is 15-30 ms deep.
Why it matters to the rest of the program
PR-4 wires the capture to the terminal edges, and a fault's
EVtail is readfrom whichever CPU faulted -- not from CPU 0, and not filtered. So the
pre-fault timeline a fault capture carries today is 15-30 ms wide on a busy
CPU, not the seconds the plan's section 2.2 arithmetic assumes.
Options, none taken here:
TRACE_BUFFER_SIZE(plan section 8, Q4: 1024 -> 4096 costs 16 CPUs x64 KiB = 1 MiB of
.bssand buys 4x with no information loss).CTX_DIAG_*/DEFER_REQUEUE_*families the way PR-2sampled
TIMER_TICK. They are diagnostic instrumentation from the aarch64: the outgoing-thread previous_thread marker is cleared without requeuing (Ready-shape strand, 1/50 SS-gate boots) — and the naive rollback turns it into #576 #607/aarch64: a kernel-STACK resume PC is reached (dispatch-path unproven, R41) — [INSTRUCTION_ABORT] FAR==ELR==x30==x29, ESR=0x8600000e IFSC=0xe, 3/200 clean SS-gate boots on both CPU profiles #635campaigns, not a permanent contract.
EVa type filter so a fault capture emits the newest N events of thetypes a reader wants, rather than the newest N of any type.
Evidence
docs/planning/green-program/failure-capture/serials/pr3/aarch64-selftest-complete.txtand
aarch64-selftest-sched-lock-held.txtin this repo carry[BXCAP:RING]lines from real boots. Round doc:
docs/planning/green-program/failure-capture/PR-3-2026-09-05.mdsection 6.4.