summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_falcon.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-22 19:26:59 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-22 19:26:59 -0400
commit58c2718c2e20d0e9394671e7132150f6905ed12e (patch)
tree26780056f73a836cfa70d999e3a0842eb463f0ff /kernel/gsp_phys_falcon.h
parent8f7d265476f233f91b75c0cdfd8b6f3a8ce1afcb (diff)
downloadopen-iov-58c2718c2e20d0e9394671e7132150f6905ed12e.tar.gz
open-iov-58c2718c2e20d0e9394671e7132150f6905ed12e.zip
r505b opdef flush marks the slot complete; bound the slot arrays for large rings
Two fixes for the r505 multikernel livelock (opdef held=18359, expired=61, client at DEVICE forever while the pump looped on ring slot 1): - after the bounded opdef hold expires and svc_opdef_flush delivers the withheld releases, the slot's ops are permanently skipped - but the decode-time bookkeeping had stored slot_ops_complete=0 (op_tr_pending was set when it ran), so every pin-batch rewind replay of the slot re-decoded it, re-set op_tr_pending and re-held the entry forever. Mark the slot complete on flush so a replay suppresses the ops (entry_replay) and the entry consumes normally. - the per-slot op arrays are SVC_GPFIFO_MAX_BITS (1024) but the X/GL channel's ring is 8192 slots: bound every slot-index write/read (entry_ident is zeroed past the array size, so the bookkeeping skips).
Diffstat (limited to 'kernel/gsp_phys_falcon.h')
0 files changed, 0 insertions, 0 deletions