summaryrefslogtreecommitdiffstats
path: root/tools/rmtool/include/rmtool.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
commit139a4e1e1a82d19ecfda26b62958e6b085489451 (patch)
treee51b9ae8ba296c6f562ebdc123f8783cb2d68174 /tools/rmtool/include/rmtool.h
parentb82389873b5a39750c770d11e2a0695a6c8dea70 (diff)
downloadopen-iov-139a4e1e1a82d19ecfda26b62958e6b085489451.tar.gz
open-iov-139a4e1e1a82d19ecfda26b62958e6b085489451.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 'tools/rmtool/include/rmtool.h')
0 files changed, 0 insertions, 0 deletions