]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
cpufreq: Consolidate some code in cpufreq_online()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 28 Mar 2025 20:40:43 +0000 (21:40 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 9 Apr 2025 19:18:50 +0000 (21:18 +0200)
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
drivers/cpufreq/cpufreq.c

index 3841c9da6cac3624acc05511d19e3d0bcda6f89a..72c31a99c5c3232b8a6071bda075307bb26efe46 100644 (file)
@@ -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);