diff --git a/arch/powerpc/include/asm/hardirq.h b/arch/powerpc/include/asm/hardirq.h index 5986d473722b5eef58530689f488d129c1669589..20b01897ea5d4eafa4e5421cf91c4938040ba10e 100644 --- a/arch/powerpc/include/asm/hardirq.h +++ b/arch/powerpc/include/asm/hardirq.h @@ -8,6 +8,7 @@ typedef struct { unsigned int __softirq_pending; unsigned int timer_irqs_event; + unsigned int broadcast_irqs_event; unsigned int timer_irqs_others; unsigned int pmu_irqs; unsigned int mce_exceptions; diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index bbf7ec582d6012ea0c3feb8249f10f01982b934e..0682fef1f38599d6e63fdac97812d8c3ef4ffa59 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 23921f7b6e6744cf30c0e64c70ed098f644ea963..ed6b2abdde15fa7336c43cc6b85314a085368a32 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