diff options
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/guest-diag/semfix_watch.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/tools/guest-diag/semfix_watch.py b/tools/guest-diag/semfix_watch.py index 049a612..5124805 100644 --- a/tools/guest-diag/semfix_watch.py +++ b/tools/guest-diag/semfix_watch.py @@ -123,7 +123,14 @@ class Qmp: cur = getattr(self, "_cpu", 0) return [cur] + [c for c in range(self.ncpu()) if c != cur] - def read64(self, addr, n=1, cache=True): + def read64(self, addr, n=1, cache=False): + # Cache is opt-in and must stay that way: every reader here watches + # structures the guest mutates (UVM init fills sem->page->mem->vas in + # place). Caching a transient zero poisoned resolve_sem_pool forever + # (the watcher logged "pool unresolved (retry)" while the same reads + # succeeded from a fresh QMP client) - the second-session pool pin + # never landed and the client hung in cudaMallocManaged. Default is + # therefore uncached; callers may opt in for within-pass scans only. key = (addr, n) if cache and key in self._cache: return self._cache[key] |
