Skip to content
Snippets Groups Projects
Commit d1d26dc6 authored by lnx build's avatar lnx build Committed by Gerrit - the friendly Code Review server
Browse files

Merge "lrdp_v2 : print affinity in irqstats" into opensource-tools.lnx.1.0

parents bdd42508 fcf4764e
No related branches found
No related tags found
No related merge requests found
...@@ -26,6 +26,10 @@ class IrqParse(RamParser): ...@@ -26,6 +26,10 @@ class IrqParse(RamParser):
h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq') h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq')
irq_num_offset = ram_dump.field_offset('struct irq_data', 'irq') irq_num_offset = ram_dump.field_offset('struct irq_data', 'irq')
hwirq_num_offset = ram_dump.field_offset('struct irq_data', 'hwirq') hwirq_num_offset = ram_dump.field_offset('struct irq_data', 'hwirq')
affinity_offset = ram_dump.field_offset(
'struct irq_common_data', 'affinity')
irq_common_data_offset = ram_dump.field_offset(
'struct irq_desc', 'irq_common_data')
irq_data_offset = ram_dump.field_offset('struct irq_desc', 'irq_data') irq_data_offset = ram_dump.field_offset('struct irq_desc', 'irq_data')
irq_count_offset = ram_dump.field_offset( irq_count_offset = ram_dump.field_offset(
'struct irq_desc', 'irq_count') 'struct irq_desc', 'irq_count')
...@@ -41,11 +45,14 @@ class IrqParse(RamParser): ...@@ -41,11 +45,14 @@ class IrqParse(RamParser):
for i in range(0, cpus): for i in range(0, cpus):
cpu_str = cpu_str + '{0:10} '.format('CPU{0}'.format(i)) cpu_str = cpu_str + '{0:10} '.format('CPU{0}'.format(i))
print_out_str('{0:4} {1:10}\t {2} {3:30} {4:10}' print_out_str('{0:4} {1:12} {2:10} {3} {4:30} {5:10}'
.format('IRQ', 'HWIRQ', cpu_str, 'Name', 'Chip')) .format('IRQ', 'HWIRQ', 'affinity',
cpu_str, 'Name', 'Chip'))
for i in range(0, irq_desc_size, irq_desc_entry_size): for i in range(0, irq_desc_size, irq_desc_entry_size):
irqnum = ram_dump.read_word(irq_desc + i + irq_num_offset) irqnum = ram_dump.read_word(irq_desc + i + irq_num_offset)
hwirq = ram_dump.read_word(irq_desc + i + hwirq_num_offset) hwirq = ram_dump.read_word(irq_desc + i + hwirq_num_offset)
affinity = ram_dump.read_int(
irq_desc + irq_common_data_offset + affinity_offset)
irqcount = ram_dump.read_word(irq_desc + i + irq_count_offset) irqcount = ram_dump.read_word(irq_desc + i + irq_count_offset)
action = ram_dump.read_word(irq_desc + i + irq_action_offset) action = ram_dump.read_word(irq_desc + i + irq_action_offset)
kstat_irqs_addr = ram_dump.read_word( kstat_irqs_addr = ram_dump.read_word(
...@@ -69,10 +76,10 @@ class IrqParse(RamParser): ...@@ -69,10 +76,10 @@ class IrqParse(RamParser):
if action != 0: if action != 0:
name_addr = ram_dump.read_word(action + action_name_offset) name_addr = ram_dump.read_word(action + action_name_offset)
name = ram_dump.read_cstring(name_addr, 48) name = ram_dump.read_cstring(name_addr, 48)
str = '{0:4} {1:10}\t {2} {3:30} {4:10}' str = '{0:4} {1:12} {2:10} {3} {4:30} {5:10}'
print_out_str( print_out_str(
str.format(irqnum, hex(hwirq), irq_stats_str, name, str.format(irqnum, hex(hwirq), hex(affinity),
chip_name)) irq_stats_str, name, chip_name))
def shift_to_maxindex(self, shift): def shift_to_maxindex(self, shift):
radix_tree_map_shift = 6 radix_tree_map_shift = 6
...@@ -166,6 +173,10 @@ class IrqParse(RamParser): ...@@ -166,6 +173,10 @@ class IrqParse(RamParser):
h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq') h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq')
irq_num_offset = ram_dump.field_offset('struct irq_data', 'irq') irq_num_offset = ram_dump.field_offset('struct irq_data', 'irq')
hwirq_num_offset = ram_dump.field_offset('struct irq_data', 'hwirq') hwirq_num_offset = ram_dump.field_offset('struct irq_data', 'hwirq')
affinity_offset = ram_dump.field_offset(
'struct irq_common_data', 'affinity')
irq_common_data_offset = ram_dump.field_offset(
'struct irq_desc', 'irq_common_data')
irq_data_offset = ram_dump.field_offset('struct irq_desc', 'irq_data') irq_data_offset = ram_dump.field_offset('struct irq_desc', 'irq_data')
irq_count_offset = ram_dump.field_offset( irq_count_offset = ram_dump.field_offset(
'struct irq_desc', 'irq_count') 'struct irq_desc', 'irq_count')
...@@ -183,8 +194,9 @@ class IrqParse(RamParser): ...@@ -183,8 +194,9 @@ class IrqParse(RamParser):
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))
print_out_str('{0:4} {1:10}\t {2} {3:30} {4:15} {5:20}'\ print_out_str('{0:4} {1:12} {2:10} {3} {4:30} {5:15} {6:20}'\
.format('IRQ', 'HWIRQ', cpu_str, 'Name', 'Chip', 'IRQ Structure')) .format('IRQ', 'HWIRQ', 'affinity', cpu_str,
'Name', 'Chip', 'IRQ Structure'))
if nr_irqs > 50000: if nr_irqs > 50000:
return return
...@@ -205,6 +217,8 @@ class IrqParse(RamParser): ...@@ -205,6 +217,8 @@ class IrqParse(RamParser):
irqnum = ram_dump.read_int(irq_desc + irq_data_offset + irq_num_offset) irqnum = ram_dump.read_int(irq_desc + irq_data_offset + irq_num_offset)
hwirq = ram_dump.read_int( hwirq = ram_dump.read_int(
irq_desc + irq_data_offset + hwirq_num_offset) irq_desc + irq_data_offset + hwirq_num_offset)
affinity = ram_dump.read_int(
irq_desc + irq_common_data_offset + affinity_offset)
irqcount = ram_dump.read_int(irq_desc + irq_count_offset) irqcount = ram_dump.read_int(irq_desc + irq_count_offset)
action = ram_dump.read_word(irq_desc + irq_action_offset) action = ram_dump.read_word(irq_desc + irq_action_offset)
kstat_irqs_addr = ram_dump.read_word(irq_desc + kstat_irqs_offset) kstat_irqs_addr = ram_dump.read_word(irq_desc + kstat_irqs_offset)
...@@ -226,11 +240,11 @@ class IrqParse(RamParser): ...@@ -226,11 +240,11 @@ class IrqParse(RamParser):
if action != 0: if action != 0:
name_addr = ram_dump.read_word(action + action_name_offset) name_addr = ram_dump.read_word(action + action_name_offset)
name = ram_dump.read_cstring(name_addr, 48) name = ram_dump.read_cstring(name_addr, 48)
str = "{0:4} {1:10}\t {2} {3:30} {4:15} " \ str = "{0:4} {1:12} {2:10} {3} {4:30} {5:15} " \
"v.v (struct irq_desc *)0x{5:<20x}" "v.v (struct irq_desc *)0x{6:<20x}"
print_out_str( print_out_str(
str.format(irqnum, hex(hwirq), irq_stats_str, name, str.format(irqnum, hex(hwirq), hex(affinity),
chip_name, irq_desc)) irq_stats_str, name, chip_name, irq_desc))
def parse(self): def parse(self):
irq_desc = self.ramdump.address_of('irq_desc') irq_desc = self.ramdump.address_of('irq_desc')
......
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