summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_gpu.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-09 21:44:24 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-09 21:44:24 -0400
commitd0ae432ade6941a705875b9db2a9d26b23c23b59 (patch)
tree7decdaf9ad84353c5f2ebb5f5083a1f4437a2f3a /kernel/gsp_phys_gpu.c
parentbe6e5ee20e50b3109b74bdd9c18f15f8f8c3f724 (diff)
downloadopen-iov-d0ae432ade6941a705875b9db2a9d26b23c23b59.tar.gz
open-iov-d0ae432ade6941a705875b9db2a9d26b23c23b59.zip
vgsp-sema: gate the pool-residue rule on the first translated pool read, not submissions (ISSUE-0002)
r70 c3 proved the submissions gate wrong: the content-rescue path consumes entry 0 (submissions++) while the pool page is still untranslated (rrc=-2), then the scanner's pin batch rewinds last_get (SVC_PIN_REWIND) and the entry is decoded again - this time with cur=134 residue, pay=1, but submissions already 1, so the residue branch was skipped, the hold branch deferred the release, and the pending retry dropped it (payload <= cur). The client's first tracker wait then never completed. Replace the freshness gate with a per-channel pool_rel_seen flag set on the first translated pool read (rrc2 == 0), persisted in the pump write-back. The residue rule now fires exactly on that first read, exactly once per channel per session.
Diffstat (limited to 'kernel/gsp_phys_gpu.c')
0 files changed, 0 insertions, 0 deletions