diff --git a/linux-ramdump-parser-v2/parsers/irqstate.py b/linux-ramdump-parser-v2/parsers/irqstate.py
index 51029970b3b6200411b4e38687a3d12a9c4f5af4..bce7f67a282b7dee0e9ab18b64082e87eb529f53 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')