diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-22 19:26:59 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-22 19:26:59 -0400 |
| commit | 58c2718c2e20d0e9394671e7132150f6905ed12e (patch) | |
| tree | 26780056f73a836cfa70d999e3a0842eb463f0ff /wiki/open-iov.org/index.php?title=File:Intel_GVT-g_Capabilities.png&action=info.html | |
| parent | 8f7d265476f233f91b75c0cdfd8b6f3a8ce1afcb (diff) | |
| download | open-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 'wiki/open-iov.org/index.php?title=File:Intel_GVT-g_Capabilities.png&action=info.html')
0 files changed, 0 insertions, 0 deletions
