diff options
-rw-r--r-- | arch/arm/include/asm/hardirq.h | 2 | ||||
-rw-r--r-- | arch/arm/kernel/smp.c | 13 |
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 | ||
10 | typedef struct { | 10 | typedef 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 @@ | |||
51 | struct secondary_data secondary_data; | 51 | struct secondary_data secondary_data; |
52 | 52 | ||
53 | enum ipi_msg_type { | 53 | enum 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 | ||
349 | static const char *ipi_types[NR_IPI] = { | 350 | static 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(); |