From 1e38e305c6ee303fbf9f831253b65dd34ff2355b Mon Sep 17 00:00:00 2001 From: Valentin Schneider Date: Fri, 24 Mar 2017 16:14:22 +0000 Subject: [PATCH] libs/wlgen: Fix governor save/restore in rtapp calibration Governor was set to "performance" for all cpus during the rtapp calibration, but the previous governors weren't restored after that. --- libs/wlgen/wlgen/rta.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/libs/wlgen/wlgen/rta.py b/libs/wlgen/wlgen/rta.py index 06a65614f..29dbd884e 100644 --- a/libs/wlgen/wlgen/rta.py +++ b/libs/wlgen/wlgen/rta.py @@ -98,7 +98,15 @@ class RTA(Workload): # Setup logging log = logging.getLogger('RTApp') - # target.cpufreq.save_governors() + # Save previous governors + cpus = target.list_online_cpus() + old_governors = {} + + for cpu in cpus: + domain = tuple(target.cpufreq.get_domain_cpus(cpu)) + if domain not in old_governors: + old_governors[domain] = target.cpufreq.get_governor(cpu) + target.cpufreq.set_all_governors('performance') for cpu in target.list_online_cpus(): @@ -133,7 +141,12 @@ class RTA(Workload): pload[cpu] = int(pload_match.group(1)) log.debug('>>> cpu%d: %d', cpu, pload[cpu]) - # target.cpufreq.load_governors() + # Restore previous governors + # Setting a governor for a cpu will set it for all cpus in the same + # clock domain, so only restoring the governor of one cpu per domain + # is enough to restore all of the previous governors + for domain, governor in old_governors.iteritems(): + target.cpufreq.set_governor(domain[0], governor) log.info('Target RT-App calibration:') log.info("{" + ", ".join('"%r": %r' % (key, pload[key]) -- GitLab