summaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/cpufreq.c
diff options
context:
space:
mode:
authorRafael J. Wysocki2015-07-27 23:11:44 +0200
committerRafael J. Wysocki2015-07-28 17:24:12 +0200
commit4d1f3a5bcb489cc6f7cbc128e0c292fed7868d32 (patch)
tree0a766959c4d5c1000bb6e29d970087a4b2982cd9 /drivers/cpufreq/cpufreq.c
parentcpufreq: Drop unused dev argument from two functions (diff)
downloadkernel-qcow2-linux-4d1f3a5bcb489cc6f7cbc128e0c292fed7868d32.tar.gz
kernel-qcow2-linux-4d1f3a5bcb489cc6f7cbc128e0c292fed7868d32.tar.xz
kernel-qcow2-linux-4d1f3a5bcb489cc6f7cbc128e0c292fed7868d32.zip
cpufreq: Do not update related_cpus on every policy activation
The related_cpus mask includes CPUs whose cpufreq_cpu_data per-CPU pointers have been set the the given policy. Since those pointers are only set at the policy creation time and unset when the policy is deleted, the related_cpus should not be updated between those two operations. For this reason, avoid updating it whenever the first of the "related" CPUs goes online. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Diffstat (limited to 'drivers/cpufreq/cpufreq.c')
-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 9d8f8cd64e58..0ea4bb723760 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1251,12 +1251,12 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
down_write(&policy->rwsem);
- /* related cpus should atleast have policy->cpus */
- cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
-
- /* Remember which CPUs have been present at the policy creation time. */
- if (!recover_policy)
+ if (!recover_policy) {
+ /* related_cpus should at least include policy->cpus. */
+ cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
+ /* Remember CPUs present at the policy creation time. */
cpumask_and(policy->real_cpus, policy->cpus, cpu_present_mask);
+ }
/*
* affected cpus must always be the one, which are online. We aren't