sparc64: Use a seperate counter for timer interrupts
David Miller
maintainerPATCH 5/7 sparc64: Use a seperate counter for timer interrupts
This keeps us from having to use kstat_irqs_cpu() from the NMI handler, the former of which is a profiled function.
Instead we use a currently empty slot in the cpu_data
Signed-off-by David S. Miller <[email protected]>
--- arch/sparc/include/asm/cpudata_64.h | 2 +- arch/sparc/kernel/nmi.c | 3 +-- arch/sparc/kernel/time_64.c | 1 + 3 files changed, 3 insertions(+), 3 deletions(-)
arch/sparc/include/asm/cpudata_64.h +1 -1
@@ -17,7 +17,7 @@ typedef struct {unsigned int __nmi_count;unsigned long clock_tick;/* %tick's per second */ unsigned long __pad; -unsigned int __pad1; +unsigned int irq0_irqs;unsigned int __pad2;/* Dcache line 2, rarely used */
arch/sparc/kernel/nmi.c +1 -2
@@ -92,7 +92,6 @@ static void die_nmi(const char *str, struct pt_regs *regs, int do_panic) notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs) {unsigned int sum, touched =0 ; -int cpu =smp_processor_id ();clear_softint (1 << irq);
@@ -106,7 +105,7 @@ notrace __kprobes void perfctr_irq(int irq, struct pt_regs *regs)else pcr_ops->write (PCR_PIC_PRIV ); - sum =kstat_irqs_cpu (0 , cpu); + sum =local_cpu_data ().irq0_irqs;if (__get_cpu_var (nmi_touch)) {__get_cpu_var (nmi_touch) =0 ; touched =1 ;
arch/sparc/kernel/time_64.c +1 -0
@@ -728,6 +728,7 @@ void timer_interrupt(int irq, struct pt_regs *regs)irq_enter (); +local_cpu_data ().irq0_irqs++;kstat_incr_irqs_this_cpu (0 ,irq_to_desc (0 ));if (unlikely (!evt->event_handler)) {
Signature · 1 line
1.7.0.4