diff options
Diffstat (limited to 'arch/arm/kernel/smp.c')
| -rw-r--r-- | arch/arm/kernel/smp.c | 13 | 
1 files changed, 9 insertions, 4 deletions
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index ebd8ad274d7..d98c37e97d9 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -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();  |