aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Galbraith <efault@gmx.de>2009-02-09 01:38:50 -0500
committerIngo Molnar <mingo@elte.hu>2009-02-09 07:03:38 -0500
commitd278c48435625cb6b7edcf6a547620768b175709 (patch)
tree692d7e14aaafec9e924525373f03474cf10c7989
parent23a185ca8abbeef64b6ffc33059b1d630e43ec10 (diff)
perf_counters: account NMI interrupts
I noticed that kerneltop interrupts were accounted as NMI, but not their perf counter origin. Account NMI performance counter interrupts. Signed-off-by: Mike Galbraith <efault@gmx.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> arch/x86/kernel/cpu/perf_counter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
-rw-r--r--arch/x86/kernel/cpu/perf_counter.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/perf_counter.c b/arch/x86/kernel/cpu/perf_counter.c
index 8bb213323fe8..9901e46998d1 100644
--- a/arch/x86/kernel/cpu/perf_counter.c
+++ b/arch/x86/kernel/cpu/perf_counter.c
@@ -495,6 +495,7 @@ static void __smp_perf_counter_interrupt(struct pt_regs *regs, int nmi)
495 goto out; 495 goto out;
496 496
497again: 497again:
498 inc_irq_stat(apic_perf_irqs);
498 ack = status; 499 ack = status;
499 for_each_bit(bit, (unsigned long *)&status, X86_PMC_IDX_MAX) { 500 for_each_bit(bit, (unsigned long *)&status, X86_PMC_IDX_MAX) {
500 struct perf_counter *counter = cpuc->counters[bit]; 501 struct perf_counter *counter = cpuc->counters[bit];
@@ -570,7 +571,6 @@ void perf_counter_unthrottle(void)
570void smp_perf_counter_interrupt(struct pt_regs *regs) 571void smp_perf_counter_interrupt(struct pt_regs *regs)
571{ 572{
572 irq_enter(); 573 irq_enter();
573 inc_irq_stat(apic_perf_irqs);
574 apic_write(APIC_LVTPC, LOCAL_PERF_VECTOR); 574 apic_write(APIC_LVTPC, LOCAL_PERF_VECTOR);
575 __smp_perf_counter_interrupt(regs, 0); 575 __smp_perf_counter_interrupt(regs, 0);
576 576