]> Pileus Git - ~andy/linux/blobdiff - kernel/time/tick-broadcast.c
clockevents: Set dummy handler on CPU_DEAD shutdown
[~andy/linux] / kernel / time / tick-broadcast.c
index 6e23fde83dbeb21faeca1d5500003cd7e1a373e0..61d00a8cdf2f2140091f9ece92f004ee34aa273b 100644 (file)
@@ -66,6 +66,8 @@ static void tick_broadcast_start_periodic(struct clock_event_device *bc)
  */
 int tick_check_broadcast_device(struct clock_event_device *dev)
 {
+       struct clock_event_device *cur = tick_broadcast_device.evtdev;
+
        if ((dev->features & CLOCK_EVT_FEAT_DUMMY) ||
            (tick_broadcast_device.evtdev &&
             tick_broadcast_device.evtdev->rating >= dev->rating) ||
@@ -73,6 +75,8 @@ int tick_check_broadcast_device(struct clock_event_device *dev)
                return 0;
 
        clockevents_exchange_device(tick_broadcast_device.evtdev, dev);
+       if (cur)
+               cur->event_handler = clockevents_handle_noop;
        tick_broadcast_device.evtdev = dev;
        if (!cpumask_empty(tick_broadcast_mask))
                tick_broadcast_start_periodic(dev);