Merge branches 'devel-stable', 'fixes' and 'mmci' into for-linus
[firefly-linux-kernel-4.4.55.git] / arch / arm / kernel / smp.c
index 58af91c2a2f79de57df7bb09a25b773f3618c279..87d30e704feca4edddf821d2268569b41ef35c53 100644 (file)
@@ -475,19 +475,11 @@ u64 smp_irq_stat_cpu(unsigned int cpu)
  */
 static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent);
 
-static void ipi_timer(void)
-{
-       struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
-       evt->event_handler(evt);
-}
-
 #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
-static void smp_timer_broadcast(const struct cpumask *mask)
+void tick_broadcast(const struct cpumask *mask)
 {
        smp_cross_call(mask, IPI_TIMER);
 }
-#else
-#define smp_timer_broadcast    NULL
 #endif
 
 static void broadcast_timer_set_mode(enum clock_event_mode mode,
@@ -530,7 +522,6 @@ static void __cpuinit percpu_timer_setup(void)
        struct clock_event_device *evt = &per_cpu(percpu_clockevent, cpu);
 
        evt->cpumask = cpumask_of(cpu);
-       evt->broadcast = smp_timer_broadcast;
 
        if (!lt_ops || lt_ops->setup(evt))
                broadcast_timer_setup(evt);
@@ -596,11 +587,13 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
        case IPI_WAKEUP:
                break;
 
+#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
        case IPI_TIMER:
                irq_enter();
-               ipi_timer();
+               tick_receive_broadcast();
                irq_exit();
                break;
+#endif
 
        case IPI_RESCHEDULE:
                scheduler_ipi();