Skip to content

Nohandoffcache - #366

Merged
techomancer merged 4 commits into
mainfrom
nohandoffcache
Oct 31, 2026
Merged

techomancer merged 4 commits into
mainfrom
nohandoffcache

Conversation

@techomancer

Copy link
Copy Markdown
Owner

No description provided.

techomancer and others added 4 commits October 30, 2026 18:11
POST keeps its stack in cache tags for physical page 0 while it tests that
page uncached, which is why the O2 ran the full cache model until the kernel
started. Keep the cached path, ppmem and the JIT on the bank always, and while
those tags stand let the bus decode answer for the page from a 4 KB page of its
own. A PD Index Store Tag with a valid state for page 0 starts it and the next
invalid one ends it, so a reboot through the PROM is caught as well as a reset.

That removes the live-model test from every cached load, store and fetch, an
atomic swap per batch, and the flush at the switch.

The flush was also hiding a startup-order bug: compile workers read the cache
geometry once as they start, and the O2 started them before publishing the
memory windows, so a worker could compile every load and store as a call out.
Start the pool after the windows.

Measured against the handover on jitv2, one NUMA node, best of 3 in 2 boots:
R5000 iris_bench 4.60/4.56 to 4.74/4.76 MB/s and Dhrystone about 11% up, R10000
Dhrystone 8-11% up, iris_bench and Whetstone within noise. Interpreter 3-4% up.

Older O2 snapshots are refused unless IRIS_SNAPSHOT_SKIP_CHECK=1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Compile workers read the cache geometry once as they start, and without the
ppmem windows it has no inline load or store path. Same order as machine.rs.
Two boots of the old order showed declined=0, so this closes a race rather than
fixing a measured slowdown.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The PC VGA font looked out of place on an SGI. Screen 16 is exactly 8x16,
so the drawing code is unchanged. tools/gen-screen-font.py generates
src/vga_font.rs from the font's PCF file, and the table is renamed
SCREEN_8X16 to match.

The font is ISO 8859-1, not CP437: codes without a glyph are blank, and
nothing draws the old box and control symbols. The overlay's arrows are
now "->", since text is cut to one byte and U+2192 lands on a blank code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@techomancer
techomancer merged commit 2eb2d3b into main Oct 31, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant