summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-29 13:17:33 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-29 13:17:33 -0400
commitba7a2b0757dc9a22e893ebe4c71c07878ec0842d (patch)
tree4bd4dd55e6a6a8e717dcc13bffa7e8187d09fd62 /tools/guest-diag
parentd43eb3333df20666dc99c677a376a576e80443a1 (diff)
downloadopen-iov-ba7a2b0757dc9a22e893ebe4c71c07878ec0842d.tar.gz
open-iov-ba7a2b0757dc9a22e893ebe4c71c07878ec0842d.zip
guest-diag: bound pushbuffer fallback scan (400 candidates / 30s)
Diffstat (limited to 'tools/guest-diag')
-rw-r--r--tools/guest-diag/semfix_watch.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/tools/guest-diag/semfix_watch.py b/tools/guest-diag/semfix_watch.py
index 93302cc..0de5cad 100644
--- a/tools/guest-diag/semfix_watch.py
+++ b/tools/guest-diag/semfix_watch.py
@@ -157,7 +157,11 @@ def resolve_pushbuffer(q, sem):
if gpa:
return gpu_vas, cpu, gpa
# Chain 2: value is the pushbuffer itself; +8 = rm_mem.
- for V in cands:
+ # Two QMP reads per candidate, so cap the scan (bounded in time).
+ deadline = time.time() + 30
+ for V in cands[:400]:
+ if time.time() > deadline:
+ break
mem = q.read64(V + 8)
if not mem or not is_kern(mem[0]):
continue