summaryrefslogtreecommitdiffstats
path: root/tools/guest-diag/pin_gr_stream.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/guest-diag/pin_gr_stream.py')
-rw-r--r--tools/guest-diag/pin_gr_stream.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/tools/guest-diag/pin_gr_stream.py b/tools/guest-diag/pin_gr_stream.py
index 35c2ea3..b2ba9b8 100644
--- a/tools/guest-diag/pin_gr_stream.py
+++ b/tools/guest-diag/pin_gr_stream.py
@@ -675,7 +675,19 @@ def _flush(runs, seen, full=False):
# r145 stall: sema-probe "NO ENTRY" for the live push pages) and the
# pool/tracker page (pending release starved, every client's first
# seconds).
- ce_win = 0x120000000 <= va < 0x122000000
+ #
+ # SESSION 153-r1397b: the GL setup-push families get the same
+ # treatment. The guest re-emits a strict-validated 60 216 B window
+ # every ~4 s because a burst can be partially dropped under host
+ # load and the `done` latch otherwise never retries the lost pages
+ # (r1397: pages 0x400a000..0x400e000 never landed; every 60216 B
+ # entry read answered src=255 and the push was skipped). Without
+ # this exception the unchanged re-emits were dropped here.
+ gl_win = ((0x4000000 <= va < 0x4160000) or
+ (0x4200000 <= va < 0x4300000) or
+ (0xcc80000 <= va < 0xcc90000) or
+ (0x6f00000 <= va < 0x6f10000))
+ ce_win = 0x120000000 <= va < 0x122000000 or gl_win
if not full and not ce_win and seen.get(va) == pa and n == 1:
continue
todo[(va, pa, n)] = True