summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-19 19:53:04 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-19 19:53:18 -0400
commit79952c695ab929982a03996226ed180c2bbc58c7 (patch)
treeb06cc41c3b943ae24559d674b5a8ba0dfe50f640 /Makefile
parent550d14522bfa5ee75f15633073edc41a06a9a86f (diff)
downloadopen-iov-79952c695ab929982a03996226ed180c2bbc58c7.tar.gz
open-iov-79952c695ab929982a03996226ed180c2bbc58c7.zip
vgsp: fail4 - carry the channel into pending releases; hold the fence on denied passes
Two fixes for the cold-boot classes (CONT.60): 1) Pending releases starved forever: svc_apply_pending resolved the pool semaphore with h=0, but the verified pool resolver is channel-keyed - it never matched the per-channel pool entries while the very same lookup at decode time succeeded (matmul r322: 'pool-rel cand ... rrc=0 cur=0' then 'pending release starved va=0x121000010 payload=1 tries=4/64...' forever, the client hung and the boot died). Pending entries now record the channel they were decoded for (struct svc_pending_release.h, set from svc.cur_ch which svc_decode_stream stamps at its top) and svc_apply_pending resolves with it. Also applies to the 'completion hint rc=-2' class. 2) The fence escaped on denied passes: in the P6b wave-2 overflow branch the release was queued only when n_ops>0; a denied pass (n_ops==0) but op-pending (a copy still owed) applied the release inline, letting the driver refill the ping-pong staging before the copy ran - the cold-run capture gap (vector_add run 1 bad=157696/193536). The queue condition is now n_ops>0 || svc.op_tr_pending. Measured (r323 fresh boot, full sequence): mail OK, nvidia-smi OK, matmul OK (no death - the r322 killer), transformer OK (no stall), vector_add cold-run bad=100352 (two chunks, down from 157696-193536; warm runs remain bad=0).
Diffstat (limited to 'Makefile')
0 files changed, 0 insertions, 0 deletions