aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/clockchips.h
diff options
context:
space:
mode:
authorSebastien Dugue <sebastien.dugue@bull.net>2008-12-01 14:09:07 +0100
committerIngo Molnar <mingo@elte.hu>2009-01-30 22:35:29 +0100
commit94df7de0289bc2df3d6e85cd2ece52bf42682f45 (patch)
treeb3f614b015adfb9574959687bb9b7ac4c884e23a /include/linux/clockchips.h
parent7f22391cbe82a80a9f891d8bd10fc28ff248d1e2 (diff)
downloadkernel_samsung_aries-94df7de0289bc2df3d6e85cd2ece52bf42682f45.zip
kernel_samsung_aries-94df7de0289bc2df3d6e85cd2ece52bf42682f45.tar.gz
kernel_samsung_aries-94df7de0289bc2df3d6e85cd2ece52bf42682f45.tar.bz2
hrtimers: allow the hot-unplugging of all cpus
Impact: fix CPU hotplug hang on Power6 testbox On architectures that support offlining all cpus (at least powerpc/pseries), hot-unpluging the tick_do_timer_cpu can result in a system hang. This comes from the fact that if the cpu going down happens to be the cpu doing the tick, then as the tick_do_timer_cpu handover happens after the cpu is dead (via the CPU_DEAD notification), we're left without ticks, jiffies are frozen and any task relying on timers (msleep, ...) is stuck. That's particularly the case for the cpu looping in __cpu_die() waiting for the dying cpu to be dead. This patch addresses this by having the tick_do_timer_cpu handover happen earlier during the CPU_DYING notification. For this, a new clockevent notification type is introduced (CLOCK_EVT_NOTIFY_CPU_DYING) which is triggered in hrtimer_cpu_notify(). Signed-off-by: Sebastien Dugue <sebastien.dugue@bull.net> Cc: <stable@kernel.org> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux/clockchips.h')
-rw-r--r--include/linux/clockchips.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h
index cea1536..3a1dbba 100644
--- a/include/linux/clockchips.h
+++ b/include/linux/clockchips.h
@@ -36,6 +36,7 @@ enum clock_event_nofitiers {
CLOCK_EVT_NOTIFY_BROADCAST_EXIT,
CLOCK_EVT_NOTIFY_SUSPEND,
CLOCK_EVT_NOTIFY_RESUME,
+ CLOCK_EVT_NOTIFY_CPU_DYING,
CLOCK_EVT_NOTIFY_CPU_DEAD,
};