From ab5d12be72c24ce641c4f7afcac97912542d882e Mon Sep 17 00:00:00 2001 From: Marc Bonnici Date: Tue, 15 Oct 2019 13:41:39 +0100 Subject: [PATCH] output_processors/cpustates: Improve handling of missing cpuinfo data Improve checking of whether cpu idle state information is available for processing. Add debug message to inform user if the cpuidle module is not detected on the target. --- wa/output_processors/cpustates.py | 3 +++ wa/utils/cpustates.py | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/wa/output_processors/cpustates.py b/wa/output_processors/cpustates.py index 9239d755..dd1cc57a 100755 --- a/wa/output_processors/cpustates.py +++ b/wa/output_processors/cpustates.py @@ -97,6 +97,9 @@ class CpuStatesProcessor(OutputProcessor): if 'cpufreq' not in target_info.modules: msg = '"cpufreq" module not detected on target, cpu frequency information may be missing.' self.logger.warning(msg) + if 'cpuidle' not in target_info.modules: + msg = '"cpuidle" module not detected on target, cpu idle information may be missing.' + self.logger.debug(msg) self.logger.info('Generating power state reports from trace...') reports = report_power_stats( # pylint: disable=unbalanced-tuple-unpacking diff --git a/wa/utils/cpustates.py b/wa/utils/cpustates.py index 0dc59d5a..7dc4f8f0 100755 --- a/wa/utils/cpustates.py +++ b/wa/utils/cpustates.py @@ -151,7 +151,7 @@ class PowerStateProcessor(object): def __init__(self, cpus, wait_for_marker=True, no_idle=None): if no_idle is None: - no_idle = False if cpus[0].cpuidle else True + no_idle = False if cpus[0].cpuidle and cpus[0].cpuidle.states else True self.power_state = SystemPowerState(len(cpus), no_idle=no_idle) self.requested_states = {} # cpu_id -> requeseted state self.wait_for_marker = wait_for_marker @@ -368,7 +368,7 @@ class PowerStateTimeline(object): if frequency is None: if idle_state == -1: row.append('Running (unknown kHz)') - elif idle_state is None: + elif idle_state is None or not self.idle_state_names[cpu_idx]: row.append('unknown') else: row.append(self.idle_state_names[cpu_idx][idle_state]) @@ -499,7 +499,7 @@ class PowerStateStats(object): state = 'Running (unknown KHz)' elif freq: state = '{}-{:07}KHz'.format(self.idle_state_names[cpu][idle], freq) - elif idle is not None: + elif idle is not None and self.idle_state_names[cpu]: state = self.idle_state_names[cpu][idle] else: state = 'unknown'