summaryrefslogtreecommitdiffstats
path: root/kernel/time/tick-broadcast.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2008-09-22 19:04:02 +0200
committerThomas Gleixner <tglx@linutronix.de>2008-09-23 11:38:53 +0200
commit27ce4cb4a0c7cf59b9a9952266883862f2e4c99f (patch)
tree066245d42877d8535853e3199b33cdf1110eb8e4 /kernel/time/tick-broadcast.c
parent302745699c1b675b5d2a1af87271de10e4d96b6a (diff)
downloadblackbird-op-linux-27ce4cb4a0c7cf59b9a9952266883862f2e4c99f.tar.gz
blackbird-op-linux-27ce4cb4a0c7cf59b9a9952266883862f2e4c99f.zip
clockevents: prevent mode mismatch on cpu online
Impact: timer hang on CPU online observed on AMD C1E systems When a CPU is brought online then the broadcast machinery can be in the one shot state already. Check this and setup the timer device of the new CPU in one shot mode so the broadcast code can pick up the next_event value correctly. Another AMD C1E oddity, as we switch to broadcast immediately and not after the full bring up via the ACPI cpu idle code. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time/tick-broadcast.c')
-rw-r--r--kernel/time/tick-broadcast.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index e2b66d1c8ca5..bd7034542399 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -575,4 +575,12 @@ void tick_shutdown_broadcast_oneshot(unsigned int *cpup)
spin_unlock_irqrestore(&tick_broadcast_lock, flags);
}
+/*
+ * Check, whether the broadcast device is in one shot mode
+ */
+int tick_broadcast_oneshot_active(void)
+{
+ return tick_broadcast_device.mode == TICKDEV_MODE_ONESHOT;
+}
+
#endif
OpenPOWER on IntegriCloud