diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-19 17:17:18 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-19 19:23:21 -0400 |
| commit | c386b62988fa36fed024f0ec6112a0d6c9a475b6 (patch) | |
| tree | 13682b6161d27ceb1196c3d8ae13dab56f3c0a39 /debug/issue/issue-number-2.md | |
| parent | 81f099f461082a40eb2ea49cbce7f5b28caaf1ee (diff) | |
| download | open-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 'debug/issue/issue-number-2.md')
0 files changed, 0 insertions, 0 deletions
