[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200722093732.14297-4-ionela.voinescu@arm.com>
Date: Wed, 22 Jul 2020 10:37:28 +0100
From: Ionela Voinescu <ionela.voinescu@....com>
To: rjw@...ysocki.net, viresh.kumar@...aro.org,
dietmar.eggemann@....com, catalin.marinas@....com,
sudeep.holla@....com, will@...nel.org, linux@...linux.org.uk
Cc: mingo@...hat.com, peterz@...radead.org, linux-pm@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
ionela.voinescu@....com
Subject: [PATCH v2 3/7] arch_topology: disable frequency invariance for CONFIG_BL_SWITCHER
big.LITTLE switching complicates the setting of a correct cpufreq-based
frequency invariance scale factor due to (as observed in
drivers/cpufreq/vexpress-spc-cpufreq.c):
- Incorrect current and maximum frequencies as a result of the
exposure of a virtual frequency table to the cpufreq core,
- Missed updates as a result of asynchronous frequency adjustments
caused by frequency changes in other CPU pairs.
Given that its functionality is atypical in regards to frequency
invariance and this is an old technology, disable frequency
invariance for when big.LITTLE switching is configured in to prevent
incorrect scale setting.
Signed-off-by: Ionela Voinescu <ionela.voinescu@....com>
Suggested-by: Dietmar Eggemann <dietmar.eggemann@....com>
Cc: Sudeep Holla <sudeep.holla@....com>
Cc: Rafael J. Wysocki <rjw@...ysocki.net>
---
drivers/base/arch_topology.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/base/arch_topology.c b/drivers/base/arch_topology.c
index 4d0a0038b476..708768f528dc 100644
--- a/drivers/base/arch_topology.c
+++ b/drivers/base/arch_topology.c
@@ -27,6 +27,7 @@ __weak bool arch_freq_counters_available(struct cpumask *cpus)
}
DEFINE_PER_CPU(unsigned long, freq_scale) = SCHED_CAPACITY_SCALE;
+#ifndef CONFIG_BL_SWITCHER
void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
unsigned long max_freq)
{
@@ -46,6 +47,7 @@ void arch_set_freq_scale(struct cpumask *cpus, unsigned long cur_freq,
for_each_cpu(i, cpus)
per_cpu(freq_scale, i) = scale;
}
+#endif
DEFINE_PER_CPU(unsigned long, cpu_scale) = SCHED_CAPACITY_SCALE;
--
2.17.1
Powered by blists - more mailing lists