aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2013-08-20 02:38:26 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-08-20 09:43:50 -0400
commit1b27429446f0c37353179544e844dc2086fa2353 (patch)
tree703e1d4bf17a72c23c4550ca85ed5279d092f794 /drivers/cpufreq
parent474deff744c4012f07cfa994947d7c6260c9ab89 (diff)
cpufreq: Use cpufreq_policy_list for iterating over policies
To iterate over all policies we currently iterate over all online CPUs and then get the policy for each of them which is suboptimal. Use the newly created cpufreq_policy_list for this purpose instead. Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/cpufreq')
-rw-r--r--drivers/cpufreq/cpufreq.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index 0586bd20a474..81ceea6ed630 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -961,8 +961,8 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif,
961 struct cpufreq_policy *policy; 961 struct cpufreq_policy *policy;
962 unsigned long flags; 962 unsigned long flags;
963#ifdef CONFIG_HOTPLUG_CPU 963#ifdef CONFIG_HOTPLUG_CPU
964 struct cpufreq_policy *tpolicy;
964 struct cpufreq_governor *gov; 965 struct cpufreq_governor *gov;
965 int sibling;
966#endif 966#endif
967 967
968 if (cpu_is_offline(cpu)) 968 if (cpu_is_offline(cpu))
@@ -985,11 +985,10 @@ static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif,
985#ifdef CONFIG_HOTPLUG_CPU 985#ifdef CONFIG_HOTPLUG_CPU
986 /* Check if this cpu was hot-unplugged earlier and has siblings */ 986 /* Check if this cpu was hot-unplugged earlier and has siblings */
987 read_lock_irqsave(&cpufreq_driver_lock, flags); 987 read_lock_irqsave(&cpufreq_driver_lock, flags);
988 for_each_online_cpu(sibling) { 988 list_for_each_entry(tpolicy, &cpufreq_policy_list, policy_list) {
989 struct cpufreq_policy *cp = per_cpu(cpufreq_cpu_data, sibling); 989 if (cpumask_test_cpu(cpu, tpolicy->related_cpus)) {
990 if (cp && cpumask_test_cpu(cpu, cp->related_cpus)) {
991 read_unlock_irqrestore(&cpufreq_driver_lock, flags); 990 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
992 ret = cpufreq_add_policy_cpu(cp, cpu, dev, frozen); 991 ret = cpufreq_add_policy_cpu(tpolicy, cpu, dev, frozen);
993 up_read(&cpufreq_rwsem); 992 up_read(&cpufreq_rwsem);
994 return ret; 993 return ret;
995 } 994 }