[PATCH bisected regression] sched: rebuild sched domains atsuspend/resume

From: Konstantin Khlebnikov
Date: Tue Mar 06 2012 - 15:45:39 EST


This is fix for suspend/resume regression introduced in commit 8f2f748b0656
("CPU hotplug, cpusets, suspend: Don't touch cpusets during suspend/resume")
Without this patch suspend always hangs on my thinkpad x220 (2 x CPU * HT).

cpuset_update_active_cpus() not only juggles with bits in cpusets,
it also calls sched-domains rebuilding after all.

This patch restores sched-domain rebuilds, as it was before that commit.

Signed-off-by: Konstantin Khlebnikov <khlebnikov@xxxxxxxxxx>
---
kernel/sched/core.c | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 9995eb0..0fb7406 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -6732,6 +6732,10 @@ static int cpuset_cpu_active(struct notifier_block *nfb, unsigned long action,
case CPU_DOWN_FAILED:
cpuset_update_active_cpus();
return NOTIFY_OK;
+ case CPU_ONLINE_FROZEN:
+ case CPU_DOWN_FAILED_FROZEN:
+ rebuild_sched_domains();
+ return NOTIFY_OK;
default:
return NOTIFY_DONE;
}
@@ -6744,6 +6748,9 @@ static int cpuset_cpu_inactive(struct notifier_block *nfb, unsigned long action,
case CPU_DOWN_PREPARE:
cpuset_update_active_cpus();
return NOTIFY_OK;
+ case CPU_DOWN_PREPARE_FROZEN:
+ rebuild_sched_domains();
+ return NOTIFY_OK;
default:
return NOTIFY_DONE;
}

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/