summaryrefslogtreecommitdiffstats
path: root/docs/README.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-19 17:17:18 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-19 19:23:21 -0400
commitc386b62988fa36fed024f0ec6112a0d6c9a475b6 (patch)
tree13682b6161d27ceb1196c3d8ae13dab56f3c0a39 /docs/README.md
parent81f099f461082a40eb2ea49cbce7f5b28caaf1ee (diff)
downloadopen-iov-c386b62988fa36fed024f0ec6112a0d6c9a475b6.tar.gz
open-iov-c386b62988fa36fed024f0ec6112a0d6c9a475b6.zip
vgsp: fail4 - pipeline-order source snapshot for held staged copies
The m169 device-dst guard defers a staged H2D up to 3 s; the driver's ping-pong staging buffers are overwritten meanwhile, so a deferred read returned a later chunk's content (the +2 MB vector_add phase = the 2x1 MB staging stride). Held copies now snapshot their source at hold time (bounded: 8 slots x 4 MB, 30 s TTL) and the retried execution copies from the snapshot, matching the hardware's in-order staging read. r296 A/B: the snapshot never fires for vector_add - its H2D dsts resolve with pins promptly and execute without the hold; the +2 MB persists identically. So the staging overrun happens WITHOUT the guard: the driver's 2-buffer staging discipline relies on the copy's completion fence (a semaphore applied when the copy executes) to pace the restaging; if our completion for chunk i arrives before/independent of the staging read, the driver restages and our later decode reads chunk i+2. Next lead: the staging fence's increment timing vs the copy's execution (the release-before-work class extended to the H2D staging fences), not the m169 hold.
Diffstat (limited to 'docs/README.md')
0 files changed, 0 insertions, 0 deletions