From 001912c1157fcea7401e1250892050252132a167 Mon Sep 17 00:00:00 2001 From: Sudhir Kumar Reddy Varakantham <skvara@codeaurora.org> Date: Fri, 15 Dec 2017 15:09:26 +0530 Subject: [PATCH] lrdp_v2 : Fix for broken watchdog_v2.py for kernel < 4.4 For kernel version less than 4.4, as the member variable timer_expired is not available we need to get watchdog timer expire status Change-Id: I28db293d7d0300d55f5ae0abac188205b80d0359 Signed-off-by: Sudhir Kumar Reddy Varakantham <skvara@codeaurora.org> --- linux-ramdump-parser-v2/watchdog_v2.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/linux-ramdump-parser-v2/watchdog_v2.py b/linux-ramdump-parser-v2/watchdog_v2.py index 0f9d5e8..63b3242 100644 --- a/linux-ramdump-parser-v2/watchdog_v2.py +++ b/linux-ramdump-parser-v2/watchdog_v2.py @@ -848,9 +848,22 @@ def get_wdog_timing(ramdump): wdog_data_addr + pet_timer_off + timer_expires_off) wdog_last_pet = ramdump.read_structure_field( wdog_data_addr, 'struct msm_watchdog_data', 'last_pet') - timer_expired_off = ramdump.field_offset( - 'struct msm_watchdog_data', 'timer_expired') - pet_timer_expired = ramdump.read_word(wdog_data_addr + timer_expired_off) + #For kernel version less than 4.4, as the member variable timer_expired + # is not available we need to get watchdog timer expire status + if (ramdump.kernel_version < (4, 4)): + pet_timer_entry_offset = ramdump.field_offset('struct timer_list', 'entry') + pet_timer_prev_offset = ramdump.field_offset('struct list_head', 'prev') + pet_timer_entry_prev = ramdump.read_word( + wdog_data_addr + pet_timer_off + pet_timer_entry_offset + pet_timer_prev_offset) + + if(pet_timer_entry_prev == '0x200'): + pet_timer_expired = 1 + else: + pet_timer_expired = 0 + else: + timer_expired_off = ramdump.field_offset( + 'struct msm_watchdog_data', 'timer_expired') + pet_timer_expired = ramdump.read_word(wdog_data_addr + timer_expired_off) pet_time_off = ramdump.field_offset('struct msm_watchdog_data', 'pet_time') bark_time_off = ramdump.field_offset( 'struct msm_watchdog_data', 'bark_time') -- GitLab