summaryrefslogtreecommitdiffstats
path: root/wiki/open-iov.org/resources
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-24 00:49:14 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-24 00:49:14 -0400
commitc88a7f6b2658ea2d49b67cd63179a5a1fbce3663 (patch)
treeae59e33ee4aadbdcac2871355c5d2923e21282ec /wiki/open-iov.org/resources
parentddc0339729687651f82f8641535cfea782fa89ba (diff)
downloadopen-iov-c88a7f6b2658ea2d49b67cd63179a5a1fbce3663.tar.gz
open-iov-c88a7f6b2658ea2d49b67cd63179a5a1fbce3663.zip
vgsp-sema r588: copy-pending sees a CE ring's undecoded backlog (stream-order)
The r568 copy-pending guard in svc_gr_request could only see decoded state: an active entry hold (svc_copy_pending) or a recorded device-write target (svc_dstpend_overlap). A CE copy entry sitting BEHIND a translation-held entry in the ring has neither - it was never decoded - so copypend read 0 while the ring still owed that copy. A GR launch decoded in that window captured the copy's destination before its data landed: r587 mail VADD computed c = a + 0 (h_c == h_a exactly: bad = 32735 = 32768 - 33, the count of i where b[i] == 0; csum = sum(a) = 8139264), because the d_b H2D bigcopy executed after the launch's copy-in. Extend svc_copy_pending() (now per-device) to also report a CE channel whose ring has submitted-but-unconsumed entries (last_get != put_prev - the same outstanding relation the completion publish uses). With the r507o CE-before-GR pass order the CE channel's write-back for the pass has already run when the GR decision reads it, so the guard defers (bounded by the existing defer/expiry machinery) until the ring drains and the re-fill captures the post-copy pages.
Diffstat (limited to 'wiki/open-iov.org/resources')
0 files changed, 0 insertions, 0 deletions