summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_vbios.h
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:06 -0400
commit48a367e98ddd057155745699b74ed57c8c0c5612 (patch)
tree13682b6161d27ceb1196c3d8ae13dab56f3c0a39 /kernel/gsp_phys_vbios.h
parent9d9f2eb5947d90db7430a4bdbe65766af77a99c3 (diff)
downloadopen-iov-48a367e98ddd057155745699b74ed57c8c0c5612.tar.gz
open-iov-48a367e98ddd057155745699b74ed57c8c0c5612.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 'kernel/gsp_phys_vbios.h')
0 files changed, 0 insertions, 0 deletions