Re: [PATCH] cpufreq: conservative: Fix incorrect frequency decrease due to stale target
From: zhenglifeng (A)
Date: Fri May 08 2026 - 22:02:49 EST
On 5/8/2026 6:14 PM, Viresh Kumar wrote:
>
> diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c
> index df01d33993d8..c7ec11de9a43 100644
> --- a/drivers/cpufreq/cpufreq_conservative.c
> +++ b/drivers/cpufreq/cpufreq_conservative.c
> @@ -103,10 +103,6 @@ static unsigned int cs_dbs_update(struct cpufreq_policy *policy)
> if (load > dbs_data->up_threshold) {
> dbs_info->down_skip = 0;
>
> - /* if we are already at full speed then break out early */
> - if (requested_freq == policy->max)
> - goto out;
> -
> requested_freq += freq_step;
> if (requested_freq > policy->max)
> requested_freq = policy->max;
> @@ -124,15 +120,8 @@ static unsigned int cs_dbs_update(struct cpufreq_policy *policy)
>
> /* Check for frequency decrease */
> if (load < cs_tuners->down_threshold) {
> - /*
> - * if we cannot reduce the frequency anymore, break out early
> - */
> - if (requested_freq == policy->min)
> - goto out;
> -
> - if (requested_freq > freq_step)
> - requested_freq -= freq_step;
> - else
> + requested_freq -= freq_step;
Small probability but it is still possible that freq_step is larger than
requested_freq.
> + if (requested_freq < policy->min)
> requested_freq = policy->min;
>
> __cpufreq_driver_target(policy, requested_freq,
>