aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/include/asm/hardirq.h2
-rw-r--r--arch/arm/kernel/smp.c13
2 files changed, 10 insertions, 5 deletions
diff --git a/arch/arm/include/asm/hardirq.h b/arch/arm/include/asm/hardirq.h
index 436e60b2cf7a..2740c2a2df63 100644
--- a/arch/arm/include/asm/hardirq.h
+++ b/arch/arm/include/asm/hardirq.h
@@ -5,7 +5,7 @@
5#include <linux/threads.h> 5#include <linux/threads.h>
6#include <asm/irq.h> 6#include <asm/irq.h>
7 7
8#define NR_IPI 5 8#define NR_IPI 6
9 9
10typedef struct { 10typedef struct {
11 unsigned int __softirq_pending; 11 unsigned int __softirq_pending;
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index ebd8ad274d76..d98c37e97d9d 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -51,7 +51,8 @@
51struct secondary_data secondary_data; 51struct secondary_data secondary_data;
52 52
53enum ipi_msg_type { 53enum ipi_msg_type {
54 IPI_TIMER = 2, 54 IPI_WAKEUP,
55 IPI_TIMER,
55 IPI_RESCHEDULE, 56 IPI_RESCHEDULE,
56 IPI_CALL_FUNC, 57 IPI_CALL_FUNC,
57 IPI_CALL_FUNC_SINGLE, 58 IPI_CALL_FUNC_SINGLE,
@@ -347,7 +348,8 @@ void arch_send_call_function_single_ipi(int cpu)
347} 348}
348 349
349static const char *ipi_types[NR_IPI] = { 350static const char *ipi_types[NR_IPI] = {
350#define S(x,s) [x - IPI_TIMER] = s 351#define S(x,s) [x] = s
352 S(IPI_WAKEUP, "CPU wakeup interrupts"),
351 S(IPI_TIMER, "Timer broadcast interrupts"), 353 S(IPI_TIMER, "Timer broadcast interrupts"),
352 S(IPI_RESCHEDULE, "Rescheduling interrupts"), 354 S(IPI_RESCHEDULE, "Rescheduling interrupts"),
353 S(IPI_CALL_FUNC, "Function call interrupts"), 355 S(IPI_CALL_FUNC, "Function call interrupts"),
@@ -500,10 +502,13 @@ void handle_IPI(int ipinr, struct pt_regs *regs)
500 unsigned int cpu = smp_processor_id(); 502 unsigned int cpu = smp_processor_id();
501 struct pt_regs *old_regs = set_irq_regs(regs); 503 struct pt_regs *old_regs = set_irq_regs(regs);
502 504
503 if (ipinr >= IPI_TIMER && ipinr < IPI_TIMER + NR_IPI) 505 if (ipinr < NR_IPI)
504 __inc_irq_stat(cpu, ipi_irqs[ipinr - IPI_TIMER]); 506 __inc_irq_stat(cpu, ipi_irqs[ipinr]);
505 507
506 switch (ipinr) { 508 switch (ipinr) {
509 case IPI_WAKEUP:
510 break;
511
507 case IPI_TIMER: 512 case IPI_TIMER:
508 irq_enter(); 513 irq_enter();
509 ipi_timer(); 514 ipi_timer();