x86: hardirq: introduce inc_irq_stat()
PATCH 1/1 x86: hardirq: introduce inc_irq_stat()
From: Hiroshi Shimamoto <[email protected]>
Impact: cleanup
Introduce inc_irq_stat() macro and unify irq_stat accounting code.
Signed-off-by Hiroshi Shimamoto <[email protected]>
--- arch/x86/include/asm/hardirq_32.h | 2 ++ arch/x86/include/asm/hardirq_64.h | 2 ++ arch/x86/kernel/apic.c | 13 +++---------- arch/x86/kernel/cpu/perf_counter.c | 6 +----- arch/x86/kernel/smp.c | 18 +++--------------- arch/x86/kernel/traps.c | 6 +----- 6 files changed, 12 insertions(+), 35 deletions(-)
arch/x86/include/asm/hardirq_32.h +2 -0
@@ -23,6 +23,8 @@ DECLARE_PER_CPU(irq_cpustat_t, irq_stat);#define __ARCH_IRQ_STAT#define __IRQ_STAT (cpu, member) (per_cpu(irq_stat, cpu).member) +#define inc_irq_stat (member) (__get_cpu_var(irq_stat).member++) +void ack_bad_irq (unsigned int irq);#include <linux/irq_cpustat.h>
arch/x86/include/asm/hardirq_64.h +2 -0
@@ -11,6 +11,8 @@#define __ARCH_IRQ_STAT 1 +#define inc_irq_stat (member) add_pda(member, 1) +#define local_softirq_pending () read_pda(__softirq_pending)#define __ARCH_SET_SOFTIRQ_PENDING 1
arch/x86/kernel/apic.c +3 -10
@@ -778,11 +778,7 @@ static void local_apic_timer_interrupt(void)/* * the NMI deadlock-detector uses this. */ -#ifdef CONFIG_X86_64 -add_pda (apic_timer_irqs,1 ); -#else -per_cpu (irq_stat, cpu).apic_timer_irqs++; -#endif +inc_irq_stat (apic_timer_irqs); evt->event_handler (evt); }
@@ -1679,14 +1675,11 @@ void smp_spurious_interrupt(struct pt_regs *regs)if (v & (1 << (SPURIOUS_APIC_VECTOR &0x1f )))ack_APIC_irq (); -#ifdef CONFIG_X86_64 -add_pda (irq_spurious_count,1 ); -#else +inc_irq_stat (irq_spurious_count); +/* see sw-dev-man vol 3, chapter 7.4.13.5 */ pr_info ("spurious APIC interrupt on CPU#%d, " "should never happen.\n" ,smp_processor_id ()); -__get_cpu_var (irq_stat).irq_spurious_count++; -#endif irq_exit (); }
arch/x86/kernel/cpu/perf_counter.c +1 -5
@@ -449,11 +449,7 @@ out:void smp_perf_counter_interrupt (struct pt_regs *regs) {irq_enter (); -#ifdef CONFIG_X86_64 -add_pda (apic_perf_irqs,1 ); -#else -per_cpu (irq_stat,smp_processor_id ()).apic_perf_irqs++; -#endif +inc_irq_stat (apic_perf_irqs);apic_write (APIC_LVTPC ,LOCAL_PERF_VECTOR );__smp_perf_counter_interrupt (regs,0 );
arch/x86/kernel/smp.c +3 -15
@@ -165,11 +165,7 @@ static void native_smp_send_stop(void)void smp_reschedule_interrupt (struct pt_regs *regs) {ack_APIC_irq (); -#ifdef CONFIG_X86_32 -__get_cpu_var (irq_stat).irq_resched_count++; -#else -add_pda (irq_resched_count,1 ); -#endif +inc_irq_stat (irq_resched_count); }void smp_call_function_interrupt (struct pt_regs *regs)
@@ -177,11 +173,7 @@ void smp_call_function_interrupt(struct pt_regs *regs)ack_APIC_irq ();irq_enter ();generic_smp_call_function_interrupt (); -#ifdef CONFIG_X86_32 -__get_cpu_var (irq_stat).irq_call_count++; -#else -add_pda (irq_call_count,1 ); -#endif +inc_irq_stat (irq_call_count);irq_exit (); }
@@ -190,11 +182,7 @@ void smp_call_function_single_interrupt(struct pt_regs *regs)ack_APIC_irq ();irq_enter ();generic_smp_call_function_single_interrupt (); -#ifdef CONFIG_X86_32 -__get_cpu_var (irq_stat).irq_call_count++; -#else -add_pda (irq_call_count,1 ); -#endif +inc_irq_stat (irq_call_count);irq_exit (); }
arch/x86/kernel/traps.c +1 -5
@@ -482,11 +482,7 @@ do_nmi(struct pt_regs *regs, long error_code) {nmi_enter (); -#ifdef CONFIG_X86_32 - {int cpu; cpu =smp_processor_id (); ++nmi_count (cpu); } -#else -add_pda (__nmi_count,1 ); -#endif +inc_irq_stat (__nmi_count);if (!ignore_nmis)default_do_nmi (regs);
Signature · 1 line
1.6.0.4
Ingo Molnar
AppliedQuoted 7 lines · Hiroshi Shimamoto
From: Hiroshi Shimamoto <[email protected]>
Impact: cleanup
Introduce
inc_irq_stat()macro and unifyirq_stataccounting code.Signed-off-by Hiroshi Shimamoto <[email protected]>
Quoted 8 lines
--- arch/x86/include/asm/hardirq_32.h | 2 ++ arch/x86/include/asm/hardirq_64.h | 2 ++ arch/x86/kernel/apic.c | 13 +++---------- arch/x86/kernel/cpu/perf_counter.c | 6 +----- arch/x86/kernel/smp.c | 18 +++--------------- arch/x86/kernel/traps.c | 6 +----- 6 files changed, 12 insertions(+), 35 deletions(-)
applied to tip/x86/irq, thanks!
This is a very nice cleanup - those #ifdefs were very ugly.
Ingo