Skip to content
Snippets Groups Projects
Commit 1627a6ff authored by Patrick Daly's avatar Patrick Daly
Browse files

ldrpv2: Fix next rtb entry algorithm

Consider the case of a nentries==8 and 3 cpus.
Numbers in parenthesis are the equivalent location in the circular buffer.
CPU:   Index0:  Index1: Index2: Index3:
0      0        3       6       9(1)
1      1        4       7       10(2)
2      2        5       8(0)

The current design is only appropriate for the case where
nentries % nrcpus == 0.

Fix this issue by incrementing the index by (nentries % nrcpus)
each time circular buffer wraps around.

CPU:   Index0:  Index1: Index2:
0      0        3       6+2==8(0)
1      1        4       7+2==9(1)
2      2        5       8+2==10(2)

Change-Id: I439fb540fc2c437c6b642d18aa9683603c270f36
parent 7ef2f068
No related branches found
No related tags found
No related merge requests found
......@@ -136,6 +136,13 @@ class RTB(RamParser):
rtbout.write('[{0}] : {1} interrupt {2:x} handled from addr {3:x} {4} {5}\n'.format(
timestamp, logtype, data, caller, func, line).encode('ascii', 'ignore'))
def next_rtb_entry(self, index, step_size, mask):
unused_buffer_size = (mask + 1) % step_size
#check for wraparound
if ((index + step_size + unused_buffer_size) & mask) < (index & mask):
return (index + step_size + unused_buffer_size) & mask
return (index + step_size) & mask
def parse(self):
rtb = self.ramdump.addr_lookup('msm_rtb')
if rtb is None:
......@@ -175,7 +182,7 @@ class RTB(RamParser):
next_ptr = 0
next_entry = 0
while True:
next_entry = (last + step_size) & mask
next_entry = self.next_rtb_entry(last, step_size, mask)
last_ptr = rtb_read_ptr + last * rtb_entry_size + idx_offset
next_ptr = rtb_read_ptr + next_entry * \
rtb_entry_size + idx_offset
......@@ -210,7 +217,7 @@ class RTB(RamParser):
getattr(RTB, func)(self, rtb_out, ptr, name_str)
if next_entry == last:
stop = 1
next_entry = (next_entry + step_size) & mask
next_entry = self.next_rtb_entry(next_entry, step_size, mask)
if (stop == 1):
break
print_out_str('Wrote RTB to msm_rtb{0}.txt'.format(i))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment