summaryrefslogtreecommitdiffstats
path: root/debug/risc-v-gsp-rm-vm/docs/16-CUSTOM-SIMULATOR.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-12 21:58:21 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-12 21:58:21 -0500
commit13a0c5d66258ebc6d06636dc74202f28e32d819c (patch)
tree1f500267c3c1142d9b58bd8a20efb3894f2b2f77 /debug/risc-v-gsp-rm-vm/docs/16-CUSTOM-SIMULATOR.md
parent9b91798df5a59d628d627c8596a2295be0a47eaa (diff)
downloadopen-iov-13a0c5d66258ebc6d06636dc74202f28e32d819c.tar.gz
open-iov-13a0c5d66258ebc6d06636dc74202f28e32d819c.zip
vgsp: DDX-family USERD latch lifetime - served-latch deferral + live re-probe + FB backoff
The X DDX's push-on-demand generations allocate a new USERD control block every 11-24 s, but the 15 s no-advance judge dropped the latch that had just passed the DMA test, and the next scan adopted a frozen FB lookalike (put=2 get=0) - the retry window then closed with 'Failed to idle DMA'. For the DDX/kick handle families only (0x01xxxxxx / 0xbfef00xx; SYS/CE/UVM untouched): - svc_userd_ddx_family() gates all of it; - a latch that HAS delivered decoded entries (submissions advanced since adoption, no contradiction) is DEFERRED from rejection (bound 32; timer reset) instead of dropped; - before any latch decision (and on a 2 s cadence while unconfirmed) the content scan re-probes the live path and switches the latch in place to a newly validated block (svc_userd_ddx_reprobe; near-empty page + ring-entry validation + PUT-step liveness are the ownership proof); - after a rejection the FB shape scan backs off 6 s so the RAM scan wins the window; the DDX re-probe is exempt from the retired slice budget (rejects < 255). Validated (c141, rich r1624 args, tick): X ScreenInit passed with ZERO 'Failed to (idle|initialize) DMA' / push-buffer / AddScreen lines; the channel decoded a 5090+-entry burst and served across block moves (latch SWITCHED 0x24128e100 -> 0x103774100 -> 0x122309d00, uok=1 held). Known residual (next refinement): the switch is not yet forward-only/ rate-limited, so lookalike blocks can oscillate at ~2 s and starve the client; make the switch require nput > latch_put and a >=10 s cadence (or stop switching once defers>0), then the real block wins.
Diffstat (limited to 'debug/risc-v-gsp-rm-vm/docs/16-CUSTOM-SIMULATOR.md')
0 files changed, 0 insertions, 0 deletions