]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cpufreq: conservative: Simplify frequency limit handling
authorLifeng Zheng <zhenglifeng1@huawei.com>
Fri, 22 May 2026 04:19:10 +0000 (09:49 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 22 May 2026 16:41:24 +0000 (18:41 +0200)
cs_dbs_update() performs explicit checks against policy->min/max
before updating the target frequency. These checks are redundant as
__cpufreq_driver_target() already clamps the requested frequency to
the valid policy limits.

Remove the unnecessary boundary checks and simplify the update logic.

This also fixes an issue introduced by commit 00bfe05889e9 ("cpufreq:
conservative: Decrease frequency faster for deferred updates"), where
stale target comparisons could cause frequency updates to be skipped
entirely after deferred adjustments.

Closes: https://lore.kernel.org/all/20260421123545.1745998-1-zhenglifeng1@huawei.com/
Fixes: 00bfe05889e9 ("cpufreq: conservative: Decrease frequency faster for deferred updates")
Signed-off-by: Lifeng Zheng <zhenglifeng1@huawei.com>
Co-developed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Zhongqiu Han <zhongqiu.han@oss.qualcomm.com>
Link: https://patch.msgid.link/292e6d937890f135e30ec0d2107eaad47cb9a976.1779423281.git.viresh.kumar@linaro.org
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/cpufreq/cpufreq_conservative.c

index df01d33993d824fa102d6f274579cc59f3637901..0b32ae28ec857f93627e10b04be09bca8643ba37 100644 (file)
@@ -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,13 +120,7 @@ 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)
+               if (requested_freq > policy->min + freq_step)
                        requested_freq -= freq_step;
                else
                        requested_freq = policy->min;