From 4eb3aa20720b31fc663800a65049c1f79b4817b4 Mon Sep 17 00:00:00 2001 From: Laura Abbott <lauraa@codeaurora.org> Date: Tue, 15 Apr 2014 19:10:16 -0700 Subject: [PATCH] linux-ramdump-parser-v2: Update RTB for 64-bit Sizes for 64-bit are different. Update rtb accordingly. Change-Id: Ie7c4014cc22b7c071017bb3d76519542ba58082d --- linux-ramdump-parser-v2/parsers/rtb.py | 39 +++++++++++++------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/linux-ramdump-parser-v2/parsers/rtb.py b/linux-ramdump-parser-v2/parsers/rtb.py index c06ad65..8ef3eed 100644 --- a/linux-ramdump-parser-v2/parsers/rtb.py +++ b/linux-ramdump-parser-v2/parsers/rtb.py @@ -55,40 +55,40 @@ class RTB(RamParser): rtbout.write('{0} No data\n'.format(logtype).encode('ascii', 'ignore')) def print_readlwritel(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} from address {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_logbuf(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} log end {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_hotplug(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} cpu data {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_ctxid(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) func = self.get_fun_name(caller) line = self.get_caller(caller) rtbout.write('{0} context id {1:x} called from addr {2:x} {3} {4}\n'.format( logtype, data, caller, func, line).encode('ascii', 'ignore')) def print_timestamp(self, rtbout, rtb_ptr, logtype, data_offset, caller_offset): - data = self.ramdump.read_word(rtb_ptr + data_offset) - caller = self.ramdump.read_word(rtb_ptr + caller_offset) + data = self.ramdump.read_u64(rtb_ptr + data_offset) + caller = self.ramdump.read_u64(rtb_ptr + caller_offset) rtbout.write('{0} Timestamp: {1:x}{2:x}\n'.format( logtype, data, caller).encode('ascii', 'ignore')) @@ -114,20 +114,21 @@ class RTB(RamParser): data_offset = self.ramdump.field_offset( 'struct msm_rtb_layout', 'data') rtb_entry_size = self.ramdump.sizeof('struct msm_rtb_layout') - step_size = self.ramdump.read_word(rtb + step_size_offset) - total_entries = self.ramdump.read_word(rtb + nentries_offset) + step_size = self.ramdump.read_u32(rtb + step_size_offset) + print 'step size = {0:x}'.format(step_size) + total_entries = self.ramdump.read_int(rtb + nentries_offset) rtb_read_ptr = self.ramdump.read_word(rtb + rtb_entry_offset) for i in range(0, step_size): rtb_out = self.ramdump.open_file('msm_rtb{0}.txt'.format(i)) gdb_cmd = NamedTemporaryFile(mode='w+t', delete=False) gdb_out = NamedTemporaryFile(mode='w+t', delete=False) - mask = self.ramdump.read_word(rtb + nentries_offset) - 1 + mask = self.ramdump.read_int(rtb + nentries_offset) - 1 if step_size == 1: - last = self.ramdump.read_word( + last = self.ramdump.read_int( self.ramdump.addr_lookup('msm_rtb_idx')) else: - last = self.ramdump.read_word(self.ramdump.addr_lookup( - 'msm_rtb_idx_cpu') + self.ramdump.read_word(self.ramdump.addr_lookup('__per_cpu_offset') + 4 * i)) + last = self.ramdump.read_int(self.ramdump.addr_lookup( + 'msm_rtb_idx_cpu'), cpu=i ) last = last & mask last_ptr = 0 next_ptr = 0 @@ -137,8 +138,8 @@ class RTB(RamParser): last_ptr = rtb_read_ptr + last * rtb_entry_size + idx_offset next_ptr = rtb_read_ptr + next_entry * \ rtb_entry_size + idx_offset - a = self.ramdump.read_word(last_ptr) - b = self.ramdump.read_word(next_ptr) + a = self.ramdump.read_int(last_ptr) + b = self.ramdump.read_int(next_ptr) if a < b: last = next_entry if next_entry != last: @@ -154,7 +155,7 @@ class RTB(RamParser): 'struct msm_rtb_layout', 'caller') while True: ptr = rtb_read_ptr + next_entry * rtb_entry_size - stamp = self.ramdump.read_word(ptr + rtb_idx_offset) + stamp = self.ramdump.read_int(ptr + rtb_idx_offset) if stamp is None: break rtb_out.write('{0:x} '.format(stamp).encode('ascii', 'ignore')) -- GitLab