Skip to content

Commit 40c9dfe

Browse files
committed
m1n1.trace.agx: Skip tracing the stats queue
This is spammy and sometimes so slow it blocks forever. Let's explicitly remove these ranges from the GPUVM tracer. Signed-off-by: Asahi Lina <[email protected]>
1 parent d743db3 commit 40c9dfe

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

proxyclient/m1n1/trace/agx.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,9 @@ def uat_page_mapped(self, iova, pte, ctx=0):
594594
paddr=paddr,
595595
ctx=ctx)
596596

597+
if ctx == 0:
598+
self.clear_stats_tracers()
599+
597600
def event_gpuvm(self, evt, iova, paddr, name=None, base=None, ctx=None):
598601
off = evt.addr - paddr
599602
iova += off
@@ -1208,6 +1211,33 @@ def add_mon_regions(self):
12081211
self.mon_addva(0, initdata.unkptr_20.unkptr_0, 0x40, "unkptr_20.unkptr_0")
12091212
self.mon_addva(0, initdata.unkptr_20.unkptr_8, 0x40, "unkptr_20.unkptr_8")
12101213

1214+
def clear_gpuvm_range(self, ctx, iova, length):
1215+
while length > 0:
1216+
page = iova & ~0x3fff
1217+
off = iova & 0x3fff
1218+
block = min(0x4000 - off, length)
1219+
page &= 0xfffffffffff
1220+
print(f"Clear {ctx} {page:#x} {block:#x}")
1221+
paddr = self.va_to_pa.get((ctx, page), None)
1222+
if paddr:
1223+
print(f" pa {paddr + off:#x}")
1224+
self.hv.del_tracer(irange(paddr + off, block), f"GPUVM/{ctx}")
1225+
length -= block
1226+
iova += block
1227+
1228+
def clear_stats_tracers(self):
1229+
if not self.state.initdata:
1230+
return
1231+
1232+
self.clear_gpuvm_range(
1233+
0,
1234+
self.state.initdata.regionB.channels.Stats.state_addr,
1235+
0x30)
1236+
self.clear_gpuvm_range(
1237+
0,
1238+
self.state.initdata.regionB.channels.Stats.ringbuffer_addr,
1239+
0x100 * StatsSize)
1240+
12111241
def pong_init(self, addr):
12121242
self.log("UAT at init time:")
12131243
self.uat.invalidate_cache()
@@ -1219,6 +1249,7 @@ def pong_init(self, addr):
12191249
self.log(initdata)
12201250

12211251
self.add_mon_regions()
1252+
self.clear_stats_tracers()
12221253

12231254
#self.initdata.regionB.mon(lambda addr, size, name: self.mon_addva(0, addr, size, name))
12241255

0 commit comments

Comments
 (0)