Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b54992fe authored by Russell King's avatar Russell King
Browse files

ARM: SMP: collect IPI and local timer IRQs for /proc/stat



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: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 4a88abd7
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -22,6 +22,14 @@ typedef struct {
#define __inc_irq_stat(cpu, member)	__IRQ_STAT(cpu, member)++
#define __inc_irq_stat(cpu, member)	__IRQ_STAT(cpu, member)++
#define __get_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
#if NR_IRQS > 512
#define HARDIRQ_BITS	10
#define HARDIRQ_BITS	10
#elif NR_IRQS > 256
#elif NR_IRQS > 256
+15 −0
Original line number Original line Diff line number Diff line
@@ -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
 * Timer (local or broadcast) support
 */
 */