clockevents: prevent mode mismatch on cpu online
[firefly-linux-kernel-4.4.55.git] / kernel / time / tick-common.c
index b523d095decf02a603defd2057466aa80859720a..df12434b43ca09ec5ea9b0c48d679b842feddc9e 100644 (file)
@@ -109,7 +109,8 @@ void tick_setup_periodic(struct clock_event_device *dev, int broadcast)
        if (!tick_device_is_functional(dev))
                return;
 
-       if (dev->features & CLOCK_EVT_FEAT_PERIODIC) {
+       if ((dev->features & CLOCK_EVT_FEAT_PERIODIC) &&
+           !tick_broadcast_oneshot_active()) {
                clockevents_set_mode(dev, CLOCK_EVT_MODE_PERIODIC);
        } else {
                unsigned long seq;