From 94c1339efd332dc86e1d790859c7492f2188751f Mon Sep 17 00:00:00 2001 From: Valentin Schneider Date: Mon, 12 Nov 2018 17:48:59 +0000 Subject: [PATCH] module/cpufreq: Add userspace special case for use_governor() Frequencies are not considered as governor tunables by list_governor_tunables(), so add a special case to restore userspace frequency when using use_governor(). While at it, reword the internal "governor" variable to not clash with the parameter of the same name. --- devlib/module/cpufreq.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/devlib/module/cpufreq.py b/devlib/module/cpufreq.py index 9da0c8e..24426fe 100644 --- a/devlib/module/cpufreq.py +++ b/devlib/module/cpufreq.py @@ -120,6 +120,12 @@ class CpufreqModule(Module): prev_governors = {cpu : (self.get_governor(cpu), self.get_governor_tunables(cpu)) for cpu in domains} + # Special case for userspace, frequency is not seen as a tunable + userspace_freqs = {} + for cpu, (prev_gov, _) in prev_governors.items(): + if prev_gov == "userspace": + userspace_freqs[cpu] = self.get_frequency(cpu) + for cpu in domains: self.set_governor(cpu, governor, **kwargs) @@ -127,8 +133,10 @@ class CpufreqModule(Module): yield finally: - for cpu, (governor, tunables) in prev_governors.items(): - self.set_governor(cpu, governor, **tunables) + for cpu, (prev_gov, tunables) in prev_governors.items(): + self.set_governor(cpu, prev_gov, **tunables) + if prev_gov == "userspace": + self.set_frequency(cpu, userspace_freqs[cpu]) def list_governor_tunables(self, cpu): """Returns a list of tunables available for the governor on the specified CPU."""