diff options
-rw-r--r-- | arch/arm/include/asm/hardirq.h | 8 | ||||
-rw-r--r-- | arch/arm/kernel/smp.c | 15 |
2 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/include/asm/hardirq.h b/arch/arm/include/asm/hardirq.h index c52e2507c9e0..89ad1805e579 100644 --- a/arch/arm/include/asm/hardirq.h +++ b/arch/arm/include/asm/hardirq.h | |||
@@ -22,6 +22,14 @@ typedef struct { | |||
22 | #define __inc_irq_stat(cpu, member) __IRQ_STAT(cpu, member)++ | 22 | #define __inc_irq_stat(cpu, member) __IRQ_STAT(cpu, member)++ |
23 | #define __get_irq_stat(cpu, member) __IRQ_STAT(cpu, member) | 23 | #define __get_irq_stat(cpu, member) __IRQ_STAT(cpu, member) |
24 | 24 | ||
25 | #ifdef CONFIG_SMP | ||
26 | u64 smp_irq_stat_cpu(unsigned int cpu); | ||
27 | #else | ||
28 | #define smp_irq_stat_cpu(cpu) 0 | ||
29 | #endif | ||
30 | |||
31 | #define arch_irq_stat_cpu smp_irq_stat_cpu | ||
32 | |||
25 | #if NR_IRQS > 512 | 33 | #if NR_IRQS > 512 |
26 | #define HARDIRQ_BITS 10 | 34 | #define HARDIRQ_BITS 10 |
27 | #elif NR_IRQS > 256 | 35 | #elif NR_IRQS > 256 |
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index fa0c5f6e1587..1de3e13a42a1 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -406,6 +406,21 @@ void show_ipi_list(struct seq_file *p, int prec) | |||
406 | } | 406 | } |
407 | } | 407 | } |
408 | 408 | ||
409 | u64 smp_irq_stat_cpu(unsigned int cpu) | ||
410 | { | ||
411 | u64 sum = 0; | ||
412 | int i; | ||
413 | |||
414 | for (i = 0; i < NR_IPI; i++) | ||
415 | sum += __get_irq_stat(cpu, ipi_irqs[i]); | ||
416 | |||
417 | #ifdef CONFIG_LOCAL_TIMERS | ||
418 | sum += __get_irq_stat(cpu, local_timer_irqs); | ||
419 | #endif | ||
420 | |||
421 | return sum; | ||
422 | } | ||
423 | |||
409 | /* | 424 | /* |
410 | * Timer (local or broadcast) support | 425 | * Timer (local or broadcast) support |
411 | */ | 426 | */ |