Move irq_thermal_count over to irq_stat like i386 Makes some code sharing easier Signed-off-by: Andi Kleen --- arch/x86/kernel/cpu/mcheck/mce_amd_64.c | 2 +- arch/x86/kernel/cpu/mcheck/mce_intel_64.c | 2 +- arch/x86/kernel/irq_64.c | 5 ++++- include/asm-x86/hardirq_64.h | 6 ++++++ 4 files changed, 12 insertions(+), 3 deletions(-) Index: linux/include/asm-x86/hardirq_64.h =================================================================== --- linux.orig/include/asm-x86/hardirq_64.h +++ linux/include/asm-x86/hardirq_64.h @@ -6,6 +6,12 @@ #include #include +typedef struct { + unsigned int irq_thermal_count; +} /* ____cacheline_aligned */ irq_cpustat_t; + +DECLARE_PER_CPU(irq_cpustat_t, irq_stat); + /* We can have at most NR_VECTORS irqs routed to a cpu at a time */ #define MAX_HARDIRQS_PER_CPU NR_VECTORS Index: linux/arch/x86/kernel/cpu/mcheck/mce_amd_64.c =================================================================== --- linux.orig/arch/x86/kernel/cpu/mcheck/mce_amd_64.c +++ linux/arch/x86/kernel/cpu/mcheck/mce_amd_64.c @@ -250,7 +250,7 @@ asmlinkage void mce_threshold_interrupt( } } out: - add_pda(irq_threshold_count, 1); + __get_cpu_var(irq_stat).irq_thermal_count++; irq_exit(); } Index: linux/arch/x86/kernel/cpu/mcheck/mce_intel_64.c =================================================================== --- linux.orig/arch/x86/kernel/cpu/mcheck/mce_intel_64.c +++ linux/arch/x86/kernel/cpu/mcheck/mce_intel_64.c @@ -21,7 +21,7 @@ void intel_smp_thermal_interrupt(void) if (therm_throt_process(msr_val & 1)) mce_log_therm_throt_event(smp_processor_id(), msr_val); - add_pda(irq_thermal_count, 1); + __get_cpu_var(irq_stat).irq_thermal_count++; } static void __cpuinit intel_init_thermal(struct cpuinfo_x86 *c) Index: linux/arch/x86/kernel/irq_64.c =================================================================== --- linux.orig/arch/x86/kernel/irq_64.c +++ linux/arch/x86/kernel/irq_64.c @@ -18,6 +18,8 @@ #include #include +DEFINE_PER_CPU(irq_cpustat_t, irq_stat); + atomic_t irq_err_count; /* @@ -137,7 +139,8 @@ skip: #endif seq_printf(p, "TRM: "); for_each_online_cpu(j) - seq_printf(p, "%10u ", cpu_pda(j)->irq_thermal_count); + seq_printf(p, "%10u ", + per_cpu(irq_stat, j).irq_thermal_count); seq_printf(p, " Thermal event interrupts\n"); seq_printf(p, "THR: "); for_each_online_cpu(j)