diff --git a/linux-ramdump-parser-v2/watchdog_v2.py b/linux-ramdump-parser-v2/watchdog_v2.py index 63b32429e95d55a6c2d317c1d6a6a6cfb1653640..bf953e31a5fdaffc3f8bb2668a29a0bc8e639650 100644 --- a/linux-ramdump-parser-v2/watchdog_v2.py +++ b/linux-ramdump-parser-v2/watchdog_v2.py @@ -882,6 +882,12 @@ def get_wdog_timing(ramdump): cpu_online_bits = ramdump.read_word('__cpu_online_mask') else: cpu_online_bits = ramdump.read_word('cpu_online_bits') + if (ramdump.kernel_version >= (4, 9, 0)): + cpu_isolated_bits = ramdump.read_word('__cpu_isolated_mask') + elif (ramdump.kernel_version >= (4, 4, 0)): + cpu_isolated_bits = ramdump.read_word('cpu_isolated_bits') + else: + cpu_isolated_bits = 0 wdog_task = ramdump.read_structure_field( wdog_data_addr, 'struct msm_watchdog_data', 'watchdog_task') wdog_task_state = ramdump.read_structure_field( @@ -914,7 +920,7 @@ def get_wdog_timing(ramdump): wdog_task_cpu, ns_to_sec(wdog_task_arrived))) print_out_str("CPUs responded to pet(alive_mask): {0:08b}".format( wdog_alive_mask)) - alive_cpus = wdog_alive_mask | (~cpu_online_bits) + alive_cpus = wdog_alive_mask | (~cpu_online_bits) | cpu_isolated_bits for i in range(0, ramdump.get_num_cpus()): if (alive_cpus & 1): alive_cpus = alive_cpus >> 1 @@ -936,6 +942,7 @@ def get_wdog_timing(ramdump): print_out_str('Current jiffies crossed pet_timer expires jiffies') print_out_str('CPU online bits: {0:b}'.format(cpu_online_bits)) + print_out_str('CPU isolated bits: {0:b}'.format(cpu_isolated_bits)) print_out_str('pet_timer_expires: {0}'.format(pet_timer_expires)) print_out_str('Current jiffies : {0}'.format(jiffies)) print_out_str(