diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-01 23:44:41 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-01 23:44:41 +0200 |
| commit | fffec0f04dfcc63bef39eb0441cfad7b584da484 (patch) | |
| tree | 394dc1897e04d0aac400061494023d1d16a89dd2 /Cargo.lock | |
| parent | rsnix v0.5.2: fault diagnostics + real-hardware scroll-crash hardening (diff) | |
| download | rs-dos-fffec0f04dfcc63bef39eb0441cfad7b584da484.tar.gz rs-dos-fffec0f04dfcc63bef39eb0441cfad7b584da484.zip | |
rsnix v0.5.3: fix real-hardware scroll wedge — per-word display push
The real-hardware crash (2 lines of white + freeze, no CPU exception
even with the 0.5.2 fault dumps) pointed away from a fault and at a
stall: the scroll's full-frame push used one 1.92 MB rep-movsb to the
framebuffer. On QEMU the framebuffer is RAM, so it flies; on a real
GPU the framebuffer is uncached MMIO and the CPU's fast-string burst
path can stall forever — the shell wedges mid-instruction, the cursor
task's own writes wedge too, no exception fires (MMIO writes don't
fault), and the screen shows the torn partial push (the white bands).
The boot-time clear() always worked on the same hardware and uses
per-word volatile stores, so the scroll push now uses the identical
pattern: shadow reads (cached RAM, cheap) + individually-posted
display stores. Interruptible between stores, never a bulk burst,
and functionally identical on QEMU (all 5 suites re-pass).
Also converts the no-shadow fallback shift to the same per-word
pattern. CONTEXT.md updated (scroll-cost note + versioning).
Diffstat (limited to 'Cargo.lock')
| -rw-r--r-- | Cargo.lock | 6 |
1 files changed, 3 insertions, 3 deletions
| @@ -4,7 +4,7 @@ version = 4 | |||
| 4 | 4 | ||
| 5 | [[package]] | 5 | [[package]] |
| 6 | name = "rsdos" | 6 | name = "rsdos" |
| 7 | version = "0.5.2" | 7 | version = "0.5.3" |
| 8 | dependencies = [ | 8 | dependencies = [ |
| 9 | "rsnix", | 9 | "rsnix", |
| 10 | "shell", | 10 | "shell", |
| @@ -19,11 +19,11 @@ dependencies = [ | |||
| 19 | 19 | ||
| 20 | [[package]] | 20 | [[package]] |
| 21 | name = "rsnix" | 21 | name = "rsnix" |
| 22 | version = "0.5.2" | 22 | version = "0.5.3" |
| 23 | 23 | ||
| 24 | [[package]] | 24 | [[package]] |
| 25 | name = "shell" | 25 | name = "shell" |
| 26 | version = "0.5.2" | 26 | version = "0.5.3" |
| 27 | dependencies = [ | 27 | dependencies = [ |
| 28 | "rsdosedit", | 28 | "rsdosedit", |
| 29 | "rsnix", | 29 | "rsnix", |
