summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-22 13:10:38 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-22 13:10:38 -0400
commitbd2c763a92bb6b41272b0c2633120efaae8195d7 (patch)
treeb0e27a2ce9b06148e73ca0ca62bd40451292e3b4 /kernel/gsp_phys_gpu.c
parent6019b88222f37fe90d5de2c60d29c1dd7cc59565 (diff)
downloadopen-iov-bd2c763a92bb6b41272b0c2633120efaae8195d7.tar.gz
open-iov-bd2c763a92bb6b41272b0c2633120efaae8195d7.zip
r471 the counter-publish clamp: never advance the guest's completion word past a push whose content was still unwritten when its entry was consumed. The r477 failing probe run showed the reuse hazard directly: the channel registered with a residual USERD put (4) and ring slots 1-3 all-zero; the pump consumed them (the r470 hold only delays) and the end-of-pass publish then wrote val=2 while the client's own counter was still 1 - the D2H wait was satisfied before the copy ran and the readback drained a reused staging buffer holding the PREVIOUS copy's bytes (h_c[2] = c0's data). New per-channel gr_bad_put (lowest all-zero GR slot + 1, persisted in the pump write-back): set when a zero-content GR entry is held/consumed, cleared when a decode reads non-zero content (the rewinds re-read entries constantly, so it heals within passes); svc_counter_publish clamps val to it with a bounded pub-clamp witness.HEADmaster
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
0 files changed, 0 insertions, 0 deletions