Re: [PATCH] cpufreq: enhance the sequency of governor change
From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: 2021-08-04 17:00:39
Also in:
lkml
On Tue, Aug 3, 2021 at 2:13 AM Huang Rui [off-list ref] wrote:
Ping~
I prefer the existing code, sorry.
On Wed, Jul 21, 2021 at 06:16:58PM +0800, Huang, Ray wrote:quoted
Keep the "success" case of governor change in the mainline of the function not in "if" case. And using restart_old_gov flag to indicate the fallback case to old governor. This is more readable and no function change. Signed-off-by: Huang Rui <ray.huang@amd.com> --- drivers/cpufreq/cpufreq.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-)diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index 802abc925b2a..4f7005ddb70c 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c@@ -2545,18 +2545,25 @@ static int cpufreq_set_policy(struct cpufreq_policy *policy, /* start new governor */ policy->governor = new_gov; ret = cpufreq_init_governor(policy); - if (!ret) { - ret = cpufreq_start_governor(policy); - if (!ret) { - pr_debug("governor change\n"); - sched_cpufreq_governor_change(policy, old_gov); - return 0; - } + if (ret) + goto restart_old_gov; + + ret = cpufreq_start_governor(policy); + if (ret) { cpufreq_exit_governor(policy); + goto restart_old_gov; } + pr_debug("governor change\n"); + + sched_cpufreq_governor_change(policy, old_gov); + + return 0; + +restart_old_gov: /* new governor failed, so re-start old one */ - pr_debug("starting governor %s failed\n", policy->governor->name); + pr_debug("starting governor %s failed\n", + policy->governor->name); if (old_gov) { policy->governor = old_gov; if (cpufreq_init_governor(policy)) --