summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-31 02:34:15 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-31 02:34:15 -0400
commit667491fe59737ebfb327804d361b2eb0a8b170bb (patch)
treec265755724f5f61449da84f3779c4d182a2fd025 /tools/guest-diag
parent5620ed076c87be100be87432c6d5b3035a46ed6f (diff)
downloadopen-iov-667491fe59737ebfb327804d361b2eb0a8b170bb.tar.gz
open-iov-667491fe59737ebfb327804d361b2eb0a8b170bb.zip
vgsp+diag: debugfs sema_setup_demand (armed setup-hold VA set, 0444 seq_file) + pin_gr_stream demand loop reads it (kills dmesg-ring race; 20s resend/300s expiry), bounded 3D raw dump of pre-drop window - MME-PRELUDE emitted gen=2 words=512 (context alive submissions=760); NEW WALL: first beef window loads context + clean MME (mme_esr=80000000) then Class Error ChId 0001 Class 0xc597 Offset 0x1168 (SET_VERTEX_ATTRIBUTE_A(2)) ErrorCode 0x5 + poison; emitted attr runs byte-faithful; next: attr/pipeline prelude (0x1100-0x1200/0x2000-0x2060) + gate first launch on mature prelude - SESSION 153 r1091-r1094
Diffstat (limited to 'tools/guest-diag')
-rw-r--r--tools/guest-diag/pin_gr_stream.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tools/guest-diag/pin_gr_stream.py b/tools/guest-diag/pin_gr_stream.py
index e224988..1acef4b 100644
--- a/tools/guest-diag/pin_gr_stream.py
+++ b/tools/guest-diag/pin_gr_stream.py
@@ -273,6 +273,24 @@ def _demand_loop():
zlen = int(m.group(2))
for zoff in range(0, min(zlen, 0x8000), 0x1000):
track.setdefault(zva + zoff, [now, 0.0])
+ # SESSION 153-CONTINUED-56: the armed setup-hold's demand VA set is
+ # exposed by the service as STATE (debugfs), not as a dmesg row, so
+ # it cannot race the ring rotation under vgsp-sema spam (r1090 lost
+ # the setup-push pages that way). Read it every pass and feed the
+ # same track/resend machinery: new VAs are sent this pass (last=0),
+ # existing ones keep the 20 s resend / 300 s expiry cadence.
+ try:
+ rr = subprocess.run(
+ ["sudo", "-n", "cat",
+ "/sys/kernel/debug/vgsp/sema_setup_demand"],
+ capture_output=True, text=True, timeout=10)
+ if rr.returncode == 0:
+ for m in re.finditer(r"0x[0-9a-f]+", rr.stdout or ""):
+ sva = int(m.group(0), 16) & ~0xfff
+ if sva:
+ track.setdefault(sva, [now, 0.0])
+ except Exception:
+ pass
for va in list(track):
first, last = track[va]
if now - first > 300.0: