keep rd->online and cpu_online_map in sync
authorGregory Haskins <ghaskins@novell.com>
Mon, 10 Mar 2008 21:59:11 +0000 (17:59 -0400)
committerIngo Molnar <mingo@elte.hu>
Tue, 11 Mar 2008 13:02:58 +0000 (14:02 +0100)
commit08f503b0c089968b2542659a89dfd50c5c59bb0b
tree0a88cc425c2c213a2e6384f4df0739e2e8485e8f
parent1f94ef598e8d29b92b9fc85d43c832e03721d3cb
keep rd->online and cpu_online_map in sync

It is possible to allow the root-domain cache of online cpus to
become out of sync with the global cpu_online_map.  This is because we
currently trigger removal of cpus too early in the notifier chain.
Other DOWN_PREPARE handlers may in fact run and reconfigure the
root-domain topology, thereby stomping on our own offline handling.

The end result is that rd->online may become out of sync with
cpu_online_map, which results in potential task misrouting.

So change the offline handling to be more tightly coupled with the
global offline process by triggering on CPU_DYING intead of
CPU_DOWN_PREPARE.

Signed-off-by: Gregory Haskins <ghaskins@novell.com>
Cc: Gautham R Shenoy <ego@in.ibm.com>
Cc: "Siddha, Suresh B" <suresh.b.siddha@intel.com>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched.c