@@ -404,6 +404,7 @@ def __init__(self, hv, devpath, verbose=False):
404404 self .redump = False
405405 self .skip_asc_tracing = True
406406 self .cmd_dump_dir = None
407+ self .buffer_mgr_map = {}
407408
408409 self .vmcnt = 0
409410 self .readlog = {}
@@ -722,6 +723,16 @@ def handle_ringmsg(self, msg):
722723 elif msg .queue_type == 0 :
723724 self .handle_ta (wi )
724725 self .queue_ta = queue
726+ elif msg .__class__ .__name__ == "GrowTVBMsg" :
727+ addr = self .buffer_mgr_map .get (msg .bm_id , 0 )
728+ if addr :
729+ info = BufferManagerInfo .parse_stream (self .get_stream (0 , addr ))
730+ self .log (f"BM info: { info } " )
731+ elif msg .__class__ .__name__ == "DC_GrowTVBAck" :
732+ addr = self .buffer_mgr_map .get (msg .bm_id , 0 )
733+ if addr :
734+ info = BufferManagerInfo .parse_stream (self .get_stream (0 , addr ))
735+ self .log (f"BM info: { info } " )
725736 return True
726737
727738 def handle_event (self , msg ):
@@ -802,6 +813,7 @@ def read(off, size):
802813 #chexdump(kread(wi0.addr, 0x600), print_fn=self.log)
803814 self .log (f" context_id = { context :#x} " )
804815 self .dump_buffer_manager (wi0 .buffer_mgr , kread , read )
816+ self .buffer_mgr_map [wi0 .buffer_mgr_slot ] = wi0 .buffer_mgr_addr
805817 #self.log(f" unk_emptybuf @ {wi0.unk_emptybuf_addr:#x}:")
806818 #chexdump(kread(wi0.unk_emptybuf_addr, 0x1000), print_fn=self.log)
807819
0 commit comments