Skip to content

Commit

Permalink
ARM: SMP: collect IPI and local timer IRQs for /proc/stat
Browse files Browse the repository at this point in the history
The IPI and local timer interrupts weren't being properly accounted
for in /proc/stat.  Collect them from the irq_stat structure, and
return their sum.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King committed Dec 20, 2010
1 parent 4a88abd commit b54992f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
8 changes: 8 additions & 0 deletions arch/arm/include/asm/hardirq.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ typedef struct {
#define __inc_irq_stat(cpu, member) __IRQ_STAT(cpu, member)++
#define __get_irq_stat(cpu, member) __IRQ_STAT(cpu, member)

#ifdef CONFIG_SMP
u64 smp_irq_stat_cpu(unsigned int cpu);
#else
#define smp_irq_stat_cpu(cpu) 0
#endif

#define arch_irq_stat_cpu smp_irq_stat_cpu

#if NR_IRQS > 512
#define HARDIRQ_BITS 10
#elif NR_IRQS > 256
Expand Down
15 changes: 15 additions & 0 deletions arch/arm/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,21 @@ void show_ipi_list(struct seq_file *p, int prec)
}
}

u64 smp_irq_stat_cpu(unsigned int cpu)
{
u64 sum = 0;
int i;

for (i = 0; i < NR_IPI; i++)
sum += __get_irq_stat(cpu, ipi_irqs[i]);

#ifdef CONFIG_LOCAL_TIMERS
sum += __get_irq_stat(cpu, local_timer_irqs);
#endif

return sum;
}

/*
* Timer (local or broadcast) support
*/
Expand Down

0 comments on commit b54992f

Please sign in to comment.