From fcf4764e2f00972caa1cdc44143c1c264ef2683e Mon Sep 17 00:00:00 2001 From: c_ankurb <ankurb@codeaurora.org> Date: Thu, 20 Jul 2017 15:54:05 +0530 Subject: [PATCH] lrdp_v2 : print affinity in irqstats modify irqstats.py for printing the affinity of irq in irqstats Change-Id: I9e4f94364511238720a662171dfbb860d4722aa5 --- linux-ramdump-parser-v2/parsers/irqstate.py | 36 ++++++++++++++------- 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/linux-ramdump-parser-v2/parsers/irqstate.py b/linux-ramdump-parser-v2/parsers/irqstate.py index 5102997..bce7f67 100644 --- a/linux-ramdump-parser-v2/parsers/irqstate.py +++ b/linux-ramdump-parser-v2/parsers/irqstate.py @@ -26,6 +26,10 @@ class IrqParse(RamParser): h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq') irq_num_offset = ram_dump.field_offset('struct irq_data', 'irq') 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_count_offset = ram_dump.field_offset( 'struct irq_desc', 'irq_count') @@ -41,11 +45,14 @@ class IrqParse(RamParser): for i in range(0, cpus): cpu_str = cpu_str + '{0:10} '.format('CPU{0}'.format(i)) - print_out_str('{0:4} {1:10}\t {2} {3:30} {4:10}' - .format('IRQ', 'HWIRQ', cpu_str, 'Name', 'Chip')) + print_out_str('{0:4} {1:12} {2:10} {3} {4:30} {5:10}' + .format('IRQ', 'HWIRQ', 'affinity', + cpu_str, 'Name', 'Chip')) for i in range(0, irq_desc_size, irq_desc_entry_size): irqnum = ram_dump.read_word(irq_desc + i + irq_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) action = ram_dump.read_word(irq_desc + i + irq_action_offset) kstat_irqs_addr = ram_dump.read_word( @@ -69,10 +76,10 @@ class IrqParse(RamParser): if action != 0: name_addr = ram_dump.read_word(action + action_name_offset) 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( - str.format(irqnum, hex(hwirq), irq_stats_str, name, - chip_name)) + str.format(irqnum, hex(hwirq), hex(affinity), + irq_stats_str, name, chip_name)) def shift_to_maxindex(self, shift): radix_tree_map_shift = 6 @@ -166,6 +173,10 @@ class IrqParse(RamParser): h_irq_offset = ram_dump.field_offset('struct irq_desc', 'handle_irq') irq_num_offset = ram_dump.field_offset('struct irq_data', 'irq') 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_count_offset = ram_dump.field_offset( 'struct irq_desc', 'irq_count') @@ -183,8 +194,9 @@ class IrqParse(RamParser): for i in ram_dump.iter_cpus(): 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}'\ - .format('IRQ', 'HWIRQ', cpu_str, 'Name', 'Chip', 'IRQ Structure')) + print_out_str('{0:4} {1:12} {2:10} {3} {4:30} {5:15} {6:20}'\ + .format('IRQ', 'HWIRQ', 'affinity', cpu_str, + 'Name', 'Chip', 'IRQ Structure')) if nr_irqs > 50000: return @@ -205,6 +217,8 @@ class IrqParse(RamParser): irqnum = ram_dump.read_int(irq_desc + irq_data_offset + irq_num_offset) hwirq = ram_dump.read_int( 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) action = ram_dump.read_word(irq_desc + irq_action_offset) kstat_irqs_addr = ram_dump.read_word(irq_desc + kstat_irqs_offset) @@ -226,11 +240,11 @@ class IrqParse(RamParser): if action != 0: name_addr = ram_dump.read_word(action + action_name_offset) name = ram_dump.read_cstring(name_addr, 48) - str = "{0:4} {1:10}\t {2} {3:30} {4:15} " \ - "v.v (struct irq_desc *)0x{5:<20x}" + str = "{0:4} {1:12} {2:10} {3} {4:30} {5:15} " \ + "v.v (struct irq_desc *)0x{6:<20x}" print_out_str( - str.format(irqnum, hex(hwirq), irq_stats_str, name, - chip_name, irq_desc)) + str.format(irqnum, hex(hwirq), hex(affinity), + irq_stats_str, name, chip_name, irq_desc)) def parse(self): irq_desc = self.ramdump.address_of('irq_desc') -- GitLab