ARM: smp: Formalize an IPI for wakeup
PATCH 1/1 ARM: smp: Formalize an IPI for wakeup
Remove the offset from ipi_msg_type and assume that SGI0 is the wakeup interrupt now that all WFI hotplug users call gic_raise_softirq() with 0 instead of 1. This allows us to track how many wakeup interrupts are sent and also removes the unknown IPI printk message for WFI hotplug based systems.
Reviewed-by Nicolas Pitre <[email protected]>
Signed-off-by Stephen Boyd <[email protected]>
--- arch/arm/include/asm/hardirq.h | 2 +- arch/arm/kernel/smp.c | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-)
arch/arm/include/asm/hardirq.h +1 -1
@@ -5,7 +5,7 @@#include <linux/threads.h> #include <asm/irq.h> -#define NR_IPI 5 +#define NR_IPI 6 typedef struct { unsigned int __softirq_pending;
arch/arm/kernel/smp.c +9 -4
@@ -51,7 +51,8 @@struct secondary_data secondary_data;enum ipi_msg_type { -IPI_TIMER =2 , +IPI_WAKEUP , +IPI_TIMER ,IPI_RESCHEDULE ,IPI_CALL_FUNC ,IPI_CALL_FUNC_SINGLE ,
@@ -347,7 +348,8 @@ void arch_send_call_function_single_ipi(int cpu) }static const char *ipi_types[NR_IPI ] = { -#define S(x,s) [x - IPI_TIMER] = s +#define S(x,s) [x] = s +S (IPI_WAKEUP ,"CPU wakeup interrupts" ),S (IPI_TIMER ,"Timer broadcast interrupts" ),S (IPI_RESCHEDULE ,"Rescheduling interrupts" ),S (IPI_CALL_FUNC ,"Function call interrupts" ),
@@ -500,10 +502,13 @@ void handle_IPI(int ipinr, struct pt_regs *regs)unsigned int cpu =smp_processor_id ();struct pt_regs *old_regs =set_irq_regs (regs); -if (ipinr >=IPI_TIMER && ipinr <IPI_TIMER +NR_IPI ) -__inc_irq_stat (cpu, ipi_irqs[ipinr -IPI_TIMER ]); +if (ipinr <NR_IPI ) +__inc_irq_stat (cpu, ipi_irqs[ipinr]);switch (ipinr) { +case IPI_WAKEUP : +break ; +case IPI_TIMER :irq_enter ();ipi_timer ();
Signature · 2 lines
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, hosted by The Linux Foundation
Quoted 9 lines · Stephen Boyd
Remove the offset from
ipi_msg_typeand assume that SGI0 is the wakeup interrupt now that all WFI hotplug users callgic_raise_softirq()with 0 instead of 1. This allows us to track how many wakeup interrupts are sent and also removes the unknown IPI printk message for WFI hotplug based systems.Reviewed-by Nicolas Pitre <[email protected]>Signed-off-by Stephen Boyd <[email protected]>---
I'm going to put this into the patch tracker in a few hours if there are no further comments.
Signature · 2 lines
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation