From b80259950758628383da8c9353b6465ac23a02a1 Mon Sep 17 00:00:00 2001 From: Runmin Wang <runminw@codeaurora.org> Date: Fri, 20 Jan 2017 10:56:32 -0800 Subject: [PATCH] lrdp-v2: Check if tvec_base_deferrable exisits tvec_base_deferrable is defined after msm-3.18. Add a check to skip dumping this for previous kernel version Change-Id: Ib2de82c5c6549d9ca5d53c96019fc47621a02e23 --- linux-ramdump-parser-v2/parsers/timerlist.py | 49 ++++++++++---------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/linux-ramdump-parser-v2/parsers/timerlist.py b/linux-ramdump-parser-v2/parsers/timerlist.py index e72501c..80510a0 100755 --- a/linux-ramdump-parser-v2/parsers/timerlist.py +++ b/linux-ramdump-parser-v2/parsers/timerlist.py @@ -1,4 +1,4 @@ -# Copyright (c) 2015-2016, The Linux Foundation. All rights reserved. +# Copyright (c) 2015-2017, The Linux Foundation. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 and @@ -100,31 +100,32 @@ class TimerList(RamParser) : self.output_file.write("Timer List Dump\n\n") tvec_base_deferral_addr = self.ramdump.address_of('tvec_base_deferrable') - timer_jiffies_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'timer_jiffies') - next_timer_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'next_timer') - - timer_jiffies = self.ramdump.read_word(timer_jiffies_addr) - next_timer = self.ramdump.read_word(next_timer_addr) - active_timers_offset = self.ramdump.field_offset('struct tvec_base', 'active_timers') - if active_timers_offset is not None: - active_timers_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'active_timers') - active_timers = self.ramdump.read_word(active_timers_addr) - else: - active_timers = "NA" + if tvec_base_deferral_addr: + timer_jiffies_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'timer_jiffies') + next_timer_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'next_timer') - title = "(deferrable_base: {0:x} ".format(tvec_base_deferral_addr) - title += "timer_jiffies: {0} next_timer: {1} active_timers: {2})\n".format(timer_jiffies, next_timer, active_timers) - self.output_file.write("-" * len(title) + "\n") - self.output_file.write(title) - self.output_file.write("-" * len(title) + "\n\n") - - for vec in sorted(self.vectors): - self.output = [] - if self.timer_42: - self.iterate_vec_v2(vec, tvec_base_deferral_addr) + timer_jiffies = self.ramdump.read_word(timer_jiffies_addr) + next_timer = self.ramdump.read_word(next_timer_addr) + active_timers_offset = self.ramdump.field_offset('struct tvec_base', 'active_timers') + if active_timers_offset is not None: + active_timers_addr = tvec_base_deferral_addr + self.ramdump.field_offset('struct tvec_base', 'active_timers') + active_timers = self.ramdump.read_word(active_timers_addr) else: - self.iterate_vec(vec, tvec_base_deferral_addr) - self.print_vec(vec) + active_timers = "NA" + + title = "(deferrable_base: {0:x} ".format(tvec_base_deferral_addr) + title += "timer_jiffies: {0} next_timer: {1} active_timers: {2})\n".format(timer_jiffies, next_timer, active_timers) + self.output_file.write("-" * len(title) + "\n") + self.output_file.write(title) + self.output_file.write("-" * len(title) + "\n\n") + + for vec in sorted(self.vectors): + self.output = [] + if self.timer_42: + self.iterate_vec_v2(vec, tvec_base_deferral_addr) + else: + self.iterate_vec(vec, tvec_base_deferral_addr) + self.print_vec(vec) tvec_bases_addr = self.ramdump.address_of('tvec_bases') -- GitLab