return tick_broadcast_oneshot_mask;
 }
 
-static int tick_broadcast_set_event(ktime_t expires, int force)
+static int tick_broadcast_set_event(struct clock_event_device *bc,
+                                   ktime_t expires, int force)
 {
-       struct clock_event_device *bc = tick_broadcast_device.evtdev;
-
        if (bc->mode != CLOCK_EVT_MODE_ONESHOT)
                clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT);
 
                 * Rearm the broadcast device. If event expired,
                 * repeat the above
                 */
-               if (tick_broadcast_set_event(next_event, 0))
+               if (tick_broadcast_set_event(dev, next_event, 0))
                        goto again;
        }
        raw_spin_unlock(&tick_broadcast_lock);
                if (!cpumask_test_and_set_cpu(cpu, tick_broadcast_oneshot_mask)) {
                        clockevents_set_mode(dev, CLOCK_EVT_MODE_SHUTDOWN);
                        if (dev->next_event.tv64 < bc->next_event.tv64)
-                               tick_broadcast_set_event(dev->next_event, 1);
+                               tick_broadcast_set_event(bc, dev->next_event, 1);
                }
        } else {
                if (cpumask_test_and_clear_cpu(cpu, tick_broadcast_oneshot_mask)) {
                        clockevents_set_mode(bc, CLOCK_EVT_MODE_ONESHOT);
                        tick_broadcast_init_next_event(tmpmask,
                                                       tick_next_period);
-                       tick_broadcast_set_event(tick_next_period, 1);
+                       tick_broadcast_set_event(bc, tick_next_period, 1);
                } else
                        bc->next_event.tv64 = KTIME_MAX;
        } else {