summaryrefslogtreecommitdiffstats
path: root/wiki
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-09 21:55:10 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-09 21:55:10 -0400
commit6170701d0b62da5c6f59eea9e8c57f00b1262a90 (patch)
tree9eeb71cfe494cc3d792035c823178d133f70aad5 /wiki
parent7308a66e2670fc19d411fba1cc7e16569170a76d (diff)
downloadopen-iov-6170701d0b62da5c6f59eea9e8c57f00b1262a90.tar.gz
open-iov-6170701d0b62da5c6f59eea9e8c57f00b1262a90.zip
vgsp-sema: hold an entry on ANY failed op, not only an unresolvable operand (ISSUE-0002)
r71 c3 reached the pma scrub and froze in scrubCheckAndWaitForSize: three vidmem memsets (1 MiB / 297 KiB / 608 KiB) failed with -EINVAL because svc_op_translate resolved their client-VA destinations through a walk to an out-of-bounds vidmem translation before the scanner pinned the real sysmem pages. Only svc_op_translate's own failure sets op_tr_pending, so the pump consumed the entry and applied the release while the memset work was lost. svc_run_ops now marks the pass op-pending for any op that did not run (rc != 0, rc != SVC_COPY_FORWARDED): the pump holds the entry and withholds its releases (bounded by SVC_OPDEF_HOLD_MS) so the retried decode picks up the injected pin and runs the memset; on expiry the release is flushed and the op stays skipped, exactly like the -ENOENT path. Sessions with no failed ops (c1/c2 were 0 fails in r71) are unaffected.
Diffstat (limited to 'wiki')
0 files changed, 0 insertions, 0 deletions