diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-07 11:21:19 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-07 11:21:19 -0500 |
commit | 4293f20c19f44ca66e5ac836b411d25e14b9f185 (patch) | |
tree | 4f9ab09ca1f775907af2a78ebb8754b945570d39 /kernel | |
parent | dac12d1f5ef228e132c2457dc214e0703533b016 (diff) |
Revert "CPU hotplug, cpusets, suspend: Don't touch cpusets during suspend/resume"
This reverts commit 8f2f748b0656257153bcf0941df8d6060acc5ca6.
It causes some odd regression that we have not figured out, and it's too
late in the -rc series to try to figure it out now.
As reported by Konstantin Khlebnikov, it causes consistent hangs on his
laptop (Thinkpad x220: 2x cores + HT). They can be avoided by adding
calls to "rebuild_sched_domains();" in cpuset_cpu_[in]active() for the
CPU_{ONLINE/DOWN_FAILED/DOWN_PREPARE}_FROZEN cases, but it's not at all
clear why, and it makes no sense.
Konstantin's config doesn't even have CONFIG_CPUSETS enabled, just to
make things even more interesting. So it's not the cpusets, it's just
the scheduling domains.
So until this is understood, revert.
Bisected-reported-and-tested-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Acked-by: Ingo Molnar <mingo@elte.hu>
Acked-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched/core.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 33a0676ea744..b342f57879e6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -6728,7 +6728,7 @@ int __init sched_create_sysfs_power_savings_entries(struct device *dev) | |||
6728 | static int cpuset_cpu_active(struct notifier_block *nfb, unsigned long action, | 6728 | static int cpuset_cpu_active(struct notifier_block *nfb, unsigned long action, |
6729 | void *hcpu) | 6729 | void *hcpu) |
6730 | { | 6730 | { |
6731 | switch (action) { | 6731 | switch (action & ~CPU_TASKS_FROZEN) { |
6732 | case CPU_ONLINE: | 6732 | case CPU_ONLINE: |
6733 | case CPU_DOWN_FAILED: | 6733 | case CPU_DOWN_FAILED: |
6734 | cpuset_update_active_cpus(); | 6734 | cpuset_update_active_cpus(); |
@@ -6741,7 +6741,7 @@ static int cpuset_cpu_active(struct notifier_block *nfb, unsigned long action, | |||
6741 | static int cpuset_cpu_inactive(struct notifier_block *nfb, unsigned long action, | 6741 | static int cpuset_cpu_inactive(struct notifier_block *nfb, unsigned long action, |
6742 | void *hcpu) | 6742 | void *hcpu) |
6743 | { | 6743 | { |
6744 | switch (action) { | 6744 | switch (action & ~CPU_TASKS_FROZEN) { |
6745 | case CPU_DOWN_PREPARE: | 6745 | case CPU_DOWN_PREPARE: |
6746 | cpuset_update_active_cpus(); | 6746 | cpuset_update_active_cpus(); |
6747 | return NOTIFY_OK; | 6747 | return NOTIFY_OK; |