summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPrarit Bhargava <prarit@redhat.com>2009-08-03 18:58:11 +0400
committerDave Jones <davej@redhat.com>2009-08-04 22:32:10 +0400
commit42c74b84c64633dd3badbfc2abd2ef1728b64b30 (patch)
tree16b9378a38cde51f50078a2d5d41353d346d0dc4
parent26d204afa18f7df177f21bdb3759e0098ca8f7d5 (diff)
downloadlinux-42c74b84c64633dd3badbfc2abd2ef1728b64b30.tar.xz
[CPUFREQ] Do not set policy for offline cpus
Suspend/Resume fails on multi socket, multi core systems because the cpufreq code erroneously sets the per_cpu policy_cpu value when a logical cpu is offline. This most notably results in missing sysfs files that are used to set the cpu frequencies of the various cpus. Signed-off-by: Prarit Bhargava <prarit@redhat.com> Signed-off-by: Dave Jones <davej@redhat.com>
-rw-r--r--drivers/cpufreq/cpufreq.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index b90eda8b3440..120d236c0ffb 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -924,6 +924,8 @@ static int cpufreq_add_dev(struct sys_device *sys_dev)
spin_lock_irqsave(&cpufreq_driver_lock, flags);
for_each_cpu(j, policy->cpus) {
+ if (!cpu_online(j))
+ continue;
per_cpu(cpufreq_cpu_data, j) = policy;
per_cpu(policy_cpu, j) = policy->cpu;
}