summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_registry_img_srvctx.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-08 11:33:54 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-08 11:33:54 -0400
commit0cb2a7ee0c6300415e4265cabb1f3007b8519c58 (patch)
tree076f8c377bd377173bdcbccee2aad08f82996d69 /kernel/gsp_phys_registry_img_srvctx.h
parent9d484f295d96bf8d28d889df6274439efd5e4b55 (diff)
downloadopen-iov-0cb2a7ee0c6300415e4265cabb1f3007b8519c58.tar.gz
open-iov-0cb2a7ee0c6300415e4265cabb1f3007b8519c58.zip
vgsp-sema: keep push-buffer base discovery alive until the CE windows drain (ISSUE-0001)
svc_pb_discover() ran with a flat 12-pass budget for the whole boot and then retired, even when a registered CE channel had no content-discovered push-buffer base yet. A channel that appeared after the budget was spent (including one reappearing with a new client session) then had no paired window, so every push went through the slower per-page rescue and the userspace watcher pin stream. Stop the pass only after SVC_PB_IDLE_PASSES consecutive passes with no new base AND with every registered CE channel either paired or having a base recorded for its release slot, with a hard cap (SVC_PB_PASS_MAX) so a channel that genuinely has no base page cannot scan forever. The 3 s rate limit and chunked walk keep the service thread responsive; the per-pass log now carries the idle count. Evidence: ISSUE-0001; v2-r1 counter freeze (pb=6/12, see backups/evidence-20261002-victory/11-hostdmesg-v2-r1.log) and the SA-STALL class where the CE window was reached only after discovery had stopped.
Diffstat (limited to 'kernel/gsp_phys_registry_img_srvctx.h')
0 files changed, 0 insertions, 0 deletions