summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-22 09:09:45 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-22 09:09:45 -0400
commit4828798a1e3f77ca43765569fe9d70a131b09305 (patch)
tree961bd80cef8bc2dbdcdd104959a21b620606331d
parentd26aa7d95771ef71bdd11628af3d4065d1f9cc92 (diff)
downloadopen-iov-4828798a1e3f77ca43765569fe9d70a131b09305.tar.gz
open-iov-4828798a1e3f77ca43765569fe9d70a131b09305.zip
pin_gr_stream: the demand-loop regex never matched the kernel's stalled-VA line (it expected 'stalled VA #N=0x...' but the kernel logs 'stalled VA #N: 0x...'), so host->guest demand pins never fired for stalled VAs and a client whose push/operand pages the resolver missed stayed stalled for the rest of the boot. Accept ':' or '=' after the entry number.
Evidence: r463/r464 stalled clients log 'stalled VA #16: 0x755813400000' etc. while the host demand loop only ever emitted pool VAs (0x12100000x) to /tmp/guest_want_vas.txt.
-rw-r--r--tools/guest-diag/pin_gr_stream.py2
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/guest-diag/pin_gr_stream.py b/tools/guest-diag/pin_gr_stream.py
index 6ba51ee..6eb5be7 100644
--- a/tools/guest-diag/pin_gr_stream.py
+++ b/tools/guest-diag/pin_gr_stream.py
@@ -211,7 +211,7 @@ def _demand_loop():
except Exception:
continue
now = time.time()
- for m in re.finditer(r"(?:stalled VA #\d+|pending release starved va)=(0x[0-9a-f]+)",
+ for m in re.finditer(r"(?:stalled VA #\d+[:=]\s*|pending release starved va=)(0x[0-9a-f]+)",
(r.stdout or "")[-200000:]):
va = int(m.group(1), 16)
track.setdefault(va, [now, 0.0])