[RFC PATCH] powerpc: tick broadcast handler should call tick_receive_broadcast
From: Nicholas Piggin <npiggin@gmail.com>
Date: 2017-09-01 05:25:21
Subsystem:
linux for powerpc (32-bit and 64-bit), the rest · Maintainers:
Madhavan Srinivasan, Linus Torvalds
Recently looking through the broadcast timers code, and I wonder if we should be calling tick_receive_broadcast() here? Our __timer_interrupt() works on the decrementer clockevent device, but we should be working on the broadcast device I think? We must get away with it somehow, but I see most other archs doing this and it seems to work, so I wonder if we should take broadcasts this way? --- arch/powerpc/include/asm/time.h | 1 - arch/powerpc/kernel/smp.c | 4 ++-- arch/powerpc/kernel/time.c | 9 --------- 3 files changed, 2 insertions(+), 12 deletions(-)
diff --git a/arch/powerpc/include/asm/time.h b/arch/powerpc/include/asm/time.h
index b240666b7bc1..13b5d768c761 100644
--- a/arch/powerpc/include/asm/time.h
+++ b/arch/powerpc/include/asm/time.h@@ -28,7 +28,6 @@ extern struct clock_event_device decrementer_clockevent; struct rtc_time; extern void to_tm(int tim, struct rtc_time * tm); -extern void tick_broadcast_ipi_handler(void); extern void generic_calibrate_decr(void);
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 8d3320562c70..101e4476e1d6 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c@@ -155,7 +155,7 @@ static irqreturn_t reschedule_action(int irq, void *data) static irqreturn_t tick_broadcast_ipi_action(int irq, void *data) { - tick_broadcast_ipi_handler(); + tick_receive_broadcast(); return IRQ_HANDLED; }
@@ -276,7 +276,7 @@ irqreturn_t smp_ipi_demux_relaxed(void) if (all & IPI_MESSAGE(PPC_MSG_RESCHEDULE)) scheduler_ipi(); if (all & IPI_MESSAGE(PPC_MSG_TICK_BROADCAST)) - tick_broadcast_ipi_handler(); + tick_receive_broadcast(); #ifdef CONFIG_NMI_IPI if (all & IPI_MESSAGE(PPC_MSG_NMI_IPI)) nmi_ipi_action(0, NULL);
diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c
index fe6f3a285455..6f291a99ce04 100644
--- a/arch/powerpc/kernel/time.c
+++ b/arch/powerpc/kernel/time.c@@ -968,15 +968,6 @@ static int decrementer_shutdown(struct clock_event_device *dev) return 0; } -/* Interrupt handler for the timer broadcast IPI */ -void tick_broadcast_ipi_handler(void) -{ - u64 *next_tb = this_cpu_ptr(&decrementers_next_tb); - - *next_tb = get_tb_or_rtc(); - __timer_interrupt(); -} - static void register_decrementer_clockevent(int cpu) { struct clock_event_device *dec = &per_cpu(decrementers, cpu);
--
2.13.3