Skip to content
Snippets Groups Projects
Commit 627fa346 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "linux-ramdump-parser-v2: Update IRQ parsing"

parents fe605d44 d36bfa48
No related branches found
No related tags found
No related merge requests found
...@@ -77,6 +77,7 @@ class IrqParse(RamParser): ...@@ -77,6 +77,7 @@ class IrqParse(RamParser):
rnode_height_offset = ram_dump.field_offset( rnode_height_offset = ram_dump.field_offset(
'struct radix_tree_node', 'height') 'struct radix_tree_node', 'height')
slots_offset = ram_dump.field_offset('struct radix_tree_node', 'slots') slots_offset = ram_dump.field_offset('struct radix_tree_node', 'slots')
pointer_size = ram_dump.sizeof('struct radix_tree_node *')
# if CONFIG_BASE_SMALL=0: radix_tree_map_shift = 6 # if CONFIG_BASE_SMALL=0: radix_tree_map_shift = 6
radix_tree_map_shift = 6 radix_tree_map_shift = 6
...@@ -87,10 +88,10 @@ class IrqParse(RamParser): ...@@ -87,10 +88,10 @@ class IrqParse(RamParser):
if ram_dump.read_word(root_addr + rnode_offset) & 1 == 0: if ram_dump.read_word(root_addr + rnode_offset) & 1 == 0:
if index > 0: if index > 0:
return None return None
return (ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffe) return (ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffffffffffe)
node_addr = ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffe node_addr = ram_dump.read_word(root_addr + rnode_offset) & 0xfffffffffffffffe
height = ram_dump.read_word(node_addr + rnode_height_offset) height = ram_dump.read_int(node_addr + rnode_height_offset)
if height > len(height_to_maxindex): if height > len(height_to_maxindex):
return None return None
...@@ -101,11 +102,11 @@ class IrqParse(RamParser): ...@@ -101,11 +102,11 @@ class IrqParse(RamParser):
shift = (height - 1) * radix_tree_map_shift shift = (height - 1) * radix_tree_map_shift
for h in range(height, 0, -1): for h in range(height, 0, -1):
node_addr = ram_dump.read_word( node_addr = ram_dump.read_word(
node_addr + slots_offset + ((index >> shift) & radix_tree_map_mask) * 4) node_addr + slots_offset + ((index >> shift) & radix_tree_map_mask) * pointer_size)
if node_addr == 0: if node_addr == 0:
return None return None
shift -= radix_tree_map_shift shift -= radix_tree_map_shift
return (node_addr & 0xfffffffe) return (node_addr & 0xfffffffffffffffe)
def print_irq_state_sparse_irq(self, ram_dump): def print_irq_state_sparse_irq(self, ram_dump):
h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq') h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq')
...@@ -122,7 +123,7 @@ class IrqParse(RamParser): ...@@ -122,7 +123,7 @@ class IrqParse(RamParser):
cpu_str = '' cpu_str = ''
irq_desc_tree = ram_dump.addr_lookup('irq_desc_tree') irq_desc_tree = ram_dump.addr_lookup('irq_desc_tree')
nr_irqs = ram_dump.read_word(ram_dump.addr_lookup('nr_irqs')) nr_irqs = ram_dump.read_int(ram_dump.addr_lookup('nr_irqs'))
for i in ram_dump.iter_cpus(): for i in ram_dump.iter_cpus():
cpu_str = cpu_str + '{0:10} '.format('CPU{0}'.format(i)) cpu_str = cpu_str + '{0:10} '.format('CPU{0}'.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