cpufreq: Reorganize checks in cpufreq_offline()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 11 May 2022 15:48:41 +0000 (17:48 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 12 May 2022 15:11:57 +0000 (17:11 +0200)
Notice that cpufreq_offline() only needs to check policy_is_inactive()
once and rearrange the code in there to make that happen.

No expected functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/cpufreq.c

index c8bf6c6..79cedc2 100644 (file)
@@ -1591,24 +1591,18 @@ static int cpufreq_offline(unsigned int cpu)
        }
 
        down_write(&policy->rwsem);
+
        if (has_target())
                cpufreq_stop_governor(policy);
 
        cpumask_clear_cpu(cpu, policy->cpus);
 
-       if (policy_is_inactive(policy)) {
-               if (has_target())
-                       strncpy(policy->last_governor, policy->governor->name,
-                               CPUFREQ_NAME_LEN);
-               else
-                       policy->last_policy = policy->policy;
-       } else if (cpu == policy->cpu) {
-               /* Nominate new CPU */
-               policy->cpu = cpumask_any(policy->cpus);
-       }
-
-       /* Start governor again for active policy */
        if (!policy_is_inactive(policy)) {
+               /* Nominate a new CPU if necessary. */
+               if (cpu == policy->cpu)
+                       policy->cpu = cpumask_any(policy->cpus);
+
+               /* Start the governor again for the active policy. */
                if (has_target()) {
                        ret = cpufreq_start_governor(policy);
                        if (ret)
@@ -1618,6 +1612,12 @@ static int cpufreq_offline(unsigned int cpu)
                goto unlock;
        }
 
+       if (has_target())
+               strncpy(policy->last_governor, policy->governor->name,
+                       CPUFREQ_NAME_LEN);
+       else
+               policy->last_policy = policy->policy;
+
        if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
                cpufreq_cooling_unregister(policy->cdev);
                policy->cdev = NULL;