diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-28 19:52:22 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-28 19:52:22 -0400 |
| commit | f05d81f97665ae29e546f0a6ba271b7825dcfc39 (patch) | |
| tree | 3fc84c5e3e3fce5350fd6838f126d6fb3accfabc /tools | |
| parent | f500779b54af2b1082c60a0845a75c5f61ec4202 (diff) | |
| download | open-iov-f05d81f97665ae29e546f0a6ba271b7825dcfc39.tar.gz open-iov-f05d81f97665ae29e546f0a6ba271b7825dcfc39.zip | |
vgsp: GL ring scan fixed (ring-own-offset entries, either-side window, va1==va0; scan top param) + ring VA demand regex (SESSION 153)
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/guest-diag/pin_gr_stream.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/tools/guest-diag/pin_gr_stream.py b/tools/guest-diag/pin_gr_stream.py index 4289d37..f2deacd 100644 --- a/tools/guest-diag/pin_gr_stream.py +++ b/tools/guest-diag/pin_gr_stream.py @@ -220,6 +220,14 @@ def _demand_loop(): that was not yet written when first asked is picked up on a retry. This closes the stall class where the one-shot #sem kprobe event was lost and the chain resolver never learns the client. + + r908: the GR ring VA itself ('GR ring h=0x... ... (va=0x...)', the + path-B "RAM content scan found no candidate" and "not at fb" rows) is + harvested too - the ring page is a kernel allocation the userspace + pagemap cannot cover, so the guest's content resolver is the only + source, and the pump needs the ring readable to decode its entries. + Same bounded/deduped tracking (distinct VAs, 20 s resend, 300 s + expiry) as the stalled-VA class. """ track = {} # va -> [first_seen, last_sent] while True: @@ -230,8 +238,12 @@ def _demand_loop(): except Exception: continue now = time.time() - for m in re.finditer(r"(?:stalled VA #\d+[:=]\s*|pending release starved va=)(0x[0-9a-f]+)", - (r.stdout or "")[-200000:]): + for m in re.finditer( + r"(?:stalled VA #\d+[:=]\s*" + r"|pending release starved va=" + r"|GR ring h=0x[0-9a-f]+ rank=\d+[^\n]*?\(va=)" + r"(0x[0-9a-f]+)", + (r.stdout or "")[-200000:]): va = int(m.group(1), 16) track.setdefault(va, [now, 0.0]) for va in list(track): |
