diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-18 00:50:35 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-18 00:53:00 -0400 |
| commit | 5de33b14586b8669ebba9150b54c7ea182859214 (patch) | |
| tree | 622907b13899c18b5f4925d9e39e6c0858f704ef /tools/rmq/Makefile | |
| parent | ff11994cbc1cce45e5ce721c69c7957436031877 (diff) | |
| download | open-iov-5de33b14586b8669ebba9150b54c7ea182859214.tar.gz open-iov-5de33b14586b8669ebba9150b54c7ea182859214.zip | |
vgsp-sema: GR fresh-put-drop rewind - stop consuming the previous session's residual ring
r203 battery forensics (rank 0, sema_dbg=1): hang and progress alternate
perfectly with the first USERD GP_PUT read of a fresh session. A session
whose first read is residual (106/107/108 = the previous session's final
put, GET==PUT) consumes the stale ring in its first pump pass, then never
decodes the new client's live entries: its ctx-init completion word (the
channel's descending counter slot) freezes at the first stale-decoded
payload (1), publishes stop (its USERD put reads never advance past 1),
and the client polls forever - multikernel (gen3), streams2 (gen5),
victory_mail (gen7) and smiley (gen9) hung; memcpy (gen4), streams_events
(gen6), victory_matmul (gen8) - each following a session whose final put
was 1 - proceeded. The GR ring/USERD live in fixed VRAM slots
(fb 0x140000 + rank*0x3000) that keep the dead session's state across
svc_session_flush; m176 reset learned counter state but not the ring
bookkeeping.
m178/m179's r48 resync (last_get=0 on the first put drop) applies only
when userd_wait_fresh is set, and the r73 rewind is CE-only
(engine_type != 0), so a GR channel whose fresh put drops below put_prev
keeps last_get ahead of the producer forever. Extend the r73 rewind shape
to GR: rewind last_get to slot 0 (the fresh session restarts its push
sequence at slot 0, and re-decoding slot 0 is idempotent - the
forward-only apply drops the duplicate payload), gated by the same
submissions < gpfifo_entries/2 freshness guard so a genuine wrap is
unaffected.
Live evidence (smiley, killed at 127105): counter page word 0x20400fff0
stuck at 1; ring put=107 get=107 at discovery; pub-adv 107->1; repeated
rel-apply pay=1 -> skip once per pass. Worktree build: make kernel green
(vgsp.ko linked).
Diffstat (limited to 'tools/rmq/Makefile')
0 files changed, 0 insertions, 0 deletions
