Re: [RFC PATCH v5 6/6] cpufreq/freq_table: Allow decreasing cpuinfo.max_freq
From: Rafael J. Wysocki
Date: Wed Mar 11 2026 - 12:24:36 EST
On Wed, Feb 25, 2026 at 9:50 AM Pierre Gondois <pierre.gondois@xxxxxxx> wrote:
>
> Drivers not using freq. tables update cpuinfo.max_freq in their
> .set_boost() callback. E.g. amd-pstate, cppc_cpufreq.
> Drivers relying on freq. tables and supporting boost frequencies
> rely on cpufreq_frequency_table_cpuinfo(). cpuinfo.max_freq is
> only updated if the new maximal value is higher than the previous
> one.
>
> Using the scmi-cpufreq driver which relies on freq. tables, enabling
> boost will permanently increases the cpuinfo.max_freq value.
> This patch allows to lower cpuinfo.max_freq.
>
> Note:
> commit 538b0188da46 ("cpufreq: ACPI: Set cpuinfo.max_freq directly
> if max boost is known")
> favored having cpuinfo.max_freq reporting the maximal boosted
> frequency of a CPU instead of the maximal reachable frequency
> due to regressions in the frequency reported by cpuinfo.max
> and scaling_cur_freq.
> As stated above, this is not what most of the other cpufreq driver
> do. I assume that the following patch:
> commit 3c55e94c0ade ("cpufreq: ACPI: Extend frequency tables to
> cover boost frequencies")
> was correct, but might not have tagged the boosted frequency with
> the CPUFREQ_BOOST_FREQ flag in the freq. table.
>
> Signed-off-by: Pierre Gondois <pierre.gondois@xxxxxxx>
> ---
> drivers/cpufreq/freq_table.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/drivers/cpufreq/freq_table.c b/drivers/cpufreq/freq_table.c
> index 9b37f37c36389..bd08cbe9e9ba3 100644
> --- a/drivers/cpufreq/freq_table.c
> +++ b/drivers/cpufreq/freq_table.c
> @@ -50,12 +50,7 @@ int cpufreq_frequency_table_cpuinfo(struct cpufreq_policy *policy)
> }
>
> policy->cpuinfo.min_freq = min_freq;
> - /*
> - * If the driver has set its own cpuinfo.max_freq above max_freq, leave
> - * it as is.
> - */
> - if (policy->cpuinfo.max_freq < max_freq)
> - policy->cpuinfo.max_freq = max_freq;
> + policy->cpuinfo.max_freq = max_freq;
>
> if (min_freq == ~0)
> return -EINVAL;
> --
How exactly does this change depend on the previous patches?