summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_rm_emulation.h
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
commit7308a66e2670fc19d411fba1cc7e16569170a76d (patch)
tree0c82ecf65546dd0aba8fbb34a0d7f1e2846d4dc7 /kernel/gsp_rm_emulation.h
parentb021abb242664d0c4cb2492c5d73aa7bdcdee4c4 (diff)
downloadopen-iov-7308a66e2670fc19d411fba1cc7e16569170a76d.tar.gz
open-iov-7308a66e2670fc19d411fba1cc7e16569170a76d.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_rm_emulation.h')
0 files changed, 0 insertions, 0 deletions