From dd4c37901b64d8012968f5328e93c9c3c2b35fd4 Mon Sep 17 00:00:00 2001 From: Brendan Jackman Date: Thu, 7 Dec 2017 13:56:12 +0000 Subject: [PATCH] cpufreq: Fix list_frequencies when not available On intel_pstate machines, we can't get a list of available CPU frequencies. In that case, return empty list as per the docastring. --- devlib/module/cpufreq.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/devlib/module/cpufreq.py b/devlib/module/cpufreq.py index a8028f3..5071e1b 100644 --- a/devlib/module/cpufreq.py +++ b/devlib/module/cpufreq.py @@ -181,8 +181,15 @@ class CpufreqModule(Module): # On some devices scaling_frequencies is not generated. # http://adrynalyne-teachtofish.blogspot.co.uk/2011/11/how-to-enable-scalingavailablefrequenci.html # Fall back to parsing stats/time_in_state - cmd = 'cat /sys/devices/system/cpu/{}/cpufreq/stats/time_in_state'.format(cpu) - out_iter = iter(self.target.execute(cmd).strip().split()) + path = '/sys/devices/system/cpu/{}/cpufreq/stats/time_in_state'.format(cpu) + try: + out_iter = iter(self.target.read_value(path).split()) + except TargetError: + if not self.target.file_exists(path): + # Probably intel_pstate. Can't get available freqs. + return [] + raise + available_frequencies = map(int, reversed([f for f, _ in zip(out_iter, out_iter)])) return available_frequencies