diff --git a/wa/output_processors/cpustates.py b/wa/output_processors/cpustates.py index 936b1170..9239d755 100755 --- a/wa/output_processors/cpustates.py +++ b/wa/output_processors/cpustates.py @@ -94,6 +94,9 @@ class CpuStatesProcessor(OutputProcessor): if not trace_file: self.logger.warning('Text trace does not appear to have been generated; skipping this iteration.') return + if 'cpufreq' not in target_info.modules: + msg = '"cpufreq" module not detected on target, cpu frequency information may be missing.' + self.logger.warning(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 632b7e9f..0dc59d5a 100755 --- a/wa/utils/cpustates.py +++ b/wa/utils/cpustates.py @@ -560,12 +560,12 @@ class CpuUtilizationTimeline(object): headers = ['ts'] + ['{} CPU{}'.format(cpu.name, cpu.id) for cpu in cpus] self.writer.writerow(headers) - self._max_freq_list = [cpu.cpufreq.available_frequencies[-1] for cpu in cpus] + self._max_freq_list = [cpu.cpufreq.available_frequencies[-1] for cpu in cpus if cpu.cpufreq.available_frequencies] def update(self, timestamp, core_states): # NOQA row = [timestamp] for core, [_, frequency] in enumerate(core_states): - if frequency is not None: + if frequency is not None and core in self._max_freq_list: frequency /= float(self._max_freq_list[core]) row.append(frequency) else: