cpufreq: Use cpufreq_policy_list for iterating over policies
authorViresh Kumar <viresh.kumar@linaro.org>
Tue, 6 Aug 2013 17:23:09 +0000 (22:53 +0530)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sat, 10 Aug 2013 01:24:46 +0000 (03:24 +0200)
To iterate over all policies we currently iterate over all CPUs and
then get the policy for each of them.  Let's use the newly created
cpufreq_policy_list for this purpose.

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

index 75c5bd424d599a71f49856d931787aef27f163a7..37af929746afe72e7f3fad2245f2fa64c11a4bb4 100644 (file)
@@ -985,8 +985,8 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif,
        struct cpufreq_policy *policy;
        unsigned long flags;
 #ifdef CONFIG_HOTPLUG_CPU
+       struct cpufreq_policy *tpolicy;
        struct cpufreq_governor *gov;
-       int sibling;
 #endif
 
        if (cpu_is_offline(cpu))
@@ -1006,11 +1006,11 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif,
 #ifdef CONFIG_HOTPLUG_CPU
        /* Check if this cpu was hot-unplugged earlier and has siblings */
        read_lock_irqsave(&cpufreq_driver_lock, flags);
-       for_each_online_cpu(sibling) {
-               struct cpufreq_policy *cp = per_cpu(cpufreq_cpu_data, sibling);
-               if (cp && cpumask_test_cpu(cpu, cp->related_cpus)) {
+       list_for_each_entry(tpolicy, &cpufreq_policy_list, policy_list) {
+               if (cpumask_test_cpu(cpu, tpolicy->related_cpus)) {
                        read_unlock_irqrestore(&cpufreq_driver_lock, flags);
-                       return cpufreq_add_policy_cpu(cp, cpu, dev, frozen);
+                       return cpufreq_add_policy_cpu(tpolicy, cpu, dev,
+                                       frozen);
                }
        }
        read_unlock_irqrestore(&cpufreq_driver_lock, flags);