Re: [PATCH 2/2] arm: disable frequency invariance for CONFIG_BL_SWITCHER

From: Viresh Kumar
Date: Tue Oct 06 2020 - 03:10:40 EST


On 24-09-20, 13:30, Ionela Voinescu wrote:
> 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@xxxxxxx>
> Suggested-by: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
> Cc: Russell King <linux@xxxxxxxxxxxxxxx>
> Cc: Catalin Marinas <catalin.marinas@xxxxxxx>
> ---
> arch/arm/include/asm/topology.h | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/arch/arm/include/asm/topology.h b/arch/arm/include/asm/topology.h
> index e5e3d5ce4d55..470299ee2fba 100644
> --- a/arch/arm/include/asm/topology.h
> +++ b/arch/arm/include/asm/topology.h
> @@ -7,10 +7,13 @@
> #include <linux/cpumask.h>
> #include <linux/arch_topology.h>
>
> +/* big.LITTLE switcher is incompatible with frequency invariance */
> +#ifndef CONFIG_BL_SWITCHER
> /* Replace task scheduler's default frequency-invariant accounting */
> #define arch_set_freq_scale topology_set_freq_scale
> #define arch_scale_freq_capacity topology_get_freq_scale
> #define arch_scale_freq_invariant topology_scale_freq_invariant
> +#endif
>
> /* Replace task scheduler's default cpu-invariant accounting */
> #define arch_scale_cpu_capacity topology_get_cpu_scale

Acked-by: Viresh Kumar <viresh.kumar@xxxxxxxxxx>

--
viresh