diff options
author | Nicholas Piggin | 2018-05-05 03:19:35 +1000 |
---|---|---|
committer | Michael Ellerman | 2018-06-03 20:40:29 +1000 |
commit | e360cd37f0e9bac7b5f623132549e2d4b6417399 (patch) | |
tree | bbaa60cc53c21e1a5b7dd2efe18850e585712ec9 /arch/powerpc/kernel | |
parent | 21bfd6a8e9999f40f9eae09ca6ba33e7f75f0be4 (diff) |
powerpc/time: account broadcast timer event interrupts separately
These are not local timer interrupts but IPIs. It's good to be able
to see how timer offloading is behaving, so split these out into
their own category.
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/kernel')
-rw-r--r-- | arch/powerpc/kernel/irq.c | 6 | ||||
-rw-r--r-- | arch/powerpc/kernel/time.c | 5 |
2 files changed, 7 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index bbf7ec582d60..0682fef1f385 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c @@ -508,6 +508,11 @@ int arch_show_interrupts(struct seq_file *p, int prec) seq_printf(p, "%10u ", per_cpu(irq_stat, j).timer_irqs_event); seq_printf(p, " Local timer interrupts for timer event device\n"); + seq_printf(p, "%*s: ", prec, "BCT"); + for_each_online_cpu(j) + seq_printf(p, "%10u ", per_cpu(irq_stat, j).broadcast_irqs_event); + seq_printf(p, " Broadcast timer interrupts for timer event device\n"); + seq_printf(p, "%*s: ", prec, "LOC"); for_each_online_cpu(j) seq_printf(p, "%10u ", per_cpu(irq_stat, j).timer_irqs_others); @@ -567,6 +572,7 @@ u64 arch_irq_stat_cpu(unsigned int cpu) { u64 sum = per_cpu(irq_stat, cpu).timer_irqs_event; + sum += per_cpu(irq_stat, cpu).broadcast_irqs_event; sum += per_cpu(irq_stat, cpu).pmu_irqs; sum += per_cpu(irq_stat, cpu).mce_exceptions; sum += per_cpu(irq_stat, cpu).spurious_irqs; diff --git a/arch/powerpc/kernel/time.c b/arch/powerpc/kernel/time.c index 23921f7b6e67..ed6b2abdde15 100644 --- a/arch/powerpc/kernel/time.c +++ b/arch/powerpc/kernel/time.c @@ -647,13 +647,10 @@ EXPORT_SYMBOL(timer_interrupt); void timer_broadcast_interrupt(void) { u64 *next_tb = this_cpu_ptr(&decrementers_next_tb); - struct pt_regs *regs = get_irq_regs(); - trace_timer_interrupt_entry(regs); *next_tb = ~(u64)0; tick_receive_broadcast(); - __this_cpu_inc(irq_stat.timer_irqs_event); - trace_timer_interrupt_exit(regs); + __this_cpu_inc(irq_stat.broadcast_irqs_event); } #endif |