aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'kernel')
-rw-r--r--kernel/time/tick-broadcast.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/kernel/time/tick-broadcast.c b/kernel/time/tick-broadcast.c
index 947959fb2bb5..aab881c86a1a 100644
--- a/kernel/time/tick-broadcast.c
+++ b/kernel/time/tick-broadcast.c
@@ -560,20 +560,17 @@ void tick_broadcast_switch_to_oneshot(void)
560 */ 560 */
561void tick_shutdown_broadcast_oneshot(unsigned int *cpup) 561void tick_shutdown_broadcast_oneshot(unsigned int *cpup)
562{ 562{
563 struct clock_event_device *bc;
564 unsigned long flags; 563 unsigned long flags;
565 unsigned int cpu = *cpup; 564 unsigned int cpu = *cpup;
566 565
567 spin_lock_irqsave(&tick_broadcast_lock, flags); 566 spin_lock_irqsave(&tick_broadcast_lock, flags);
568 567
569 bc = tick_broadcast_device.evtdev; 568 /*
569 * Clear the broadcast mask flag for the dead cpu, but do not
570 * stop the broadcast device!
571 */
570 cpu_clear(cpu, tick_broadcast_oneshot_mask); 572 cpu_clear(cpu, tick_broadcast_oneshot_mask);
571 573
572 if (tick_broadcast_device.mode == TICKDEV_MODE_ONESHOT) {
573 if (bc && cpus_empty(tick_broadcast_oneshot_mask))
574 clockevents_set_mode(bc, CLOCK_EVT_MODE_SHUTDOWN);
575 }
576
577 spin_unlock_irqrestore(&tick_broadcast_lock, flags); 574 spin_unlock_irqrestore(&tick_broadcast_lock, flags);
578} 575}
579 576