diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-12 21:58:21 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-12 21:58:21 -0500 |
| commit | 13a0c5d66258ebc6d06636dc74202f28e32d819c (patch) | |
| tree | 1f500267c3c1142d9b58bd8a20efb3894f2b2f77 /userspace/cuda/570.144/ghidra/DecompileAt.java | |
| parent | 9b91798df5a59d628d627c8596a2295be0a47eaa (diff) | |
| download | open-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 'userspace/cuda/570.144/ghidra/DecompileAt.java')
0 files changed, 0 insertions, 0 deletions
