aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2025-03-28 21:40:43 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2025-04-09 21:18:50 +0200
commit387b51709db546033cf9a940860b6614a5cda5b6 (patch)
tree285496c89af3235b1020cd1244d6c3583248abbd
parentLinux 6.15-rc1 (diff)
downloadwireguard-linux-387b51709db546033cf9a940860b6614a5cda5b6.tar.xz
wireguard-linux-387b51709db546033cf9a940860b6614a5cda5b6.zip
cpufreq: Consolidate some code in cpufreq_online()
Notice that the policy->cpu update in cpufreq_policy_alloc() can be moved to cpufreq_online() and then it can be carried out under the policy rwsem, along with the clearing of policy->governor (unnecessary in the "new policy" code branch, but also not harmful). If this is done, the bottom parts of the "if (policy)" branches become identical and they can be collapsed and moved below the conditional. Modify the code accordingly which makes it somewhat easier to follow. No intentional functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> Acked-by: Sudeep Holla <sudeep.holla@arm.com> Tested-by: Sudeep Holla <sudeep.holla@arm.com> Link: https://patch.msgid.link/13741234.uLZWGnKmhe@rjwysocki.net
-rw-r--r--drivers/cpufreq/cpufreq.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 3841c9da6cac..72c31a99c5c3 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1334,7 +1334,6 @@ static struct cpufreq_policy *cpufreq_policy_alloc(unsigned int cpu)
init_waitqueue_head(&policy->transition_wait);
INIT_WORK(&policy->update, handle_update);
- policy->cpu = cpu;
return policy;
err_min_qos_notifier:
@@ -1422,17 +1421,18 @@ static int cpufreq_online(unsigned int cpu)
/* This is the only online CPU for the policy. Start over. */
new_policy = false;
- down_write(&policy->rwsem);
- policy->cpu = cpu;
- policy->governor = NULL;
} else {
new_policy = true;
policy = cpufreq_policy_alloc(cpu);
if (!policy)
return -ENOMEM;
- down_write(&policy->rwsem);
}
+ down_write(&policy->rwsem);
+
+ policy->cpu = cpu;
+ policy->governor = NULL;
+
if (!new_policy && cpufreq_driver->online) {
/* Recover policy->cpus using related_cpus */
cpumask_copy(policy->cpus, policy->related_cpus);