diff -urNp --exclude CVS --exclude BitKeeper x-ref/arch/i386/kernel/apic.c x/arch/i386/kernel/apic.c --- x-ref/arch/i386/kernel/apic.c 2003-09-23 01:51:35.000000000 +0200 +++ x/arch/i386/kernel/apic.c 2003-09-23 01:51:37.000000000 +0200 @@ -1086,7 +1086,6 @@ inline void smp_local_timer_interrupt(st * [ if a single-CPU system runs an SMP kernel then we call the local * interrupt as well. Thus we cannot inline the local irq ... ] */ -unsigned int apic_timer_irqs [NR_CPUS]; void smp_apic_timer_interrupt(struct pt_regs * regs) { @@ -1095,7 +1094,7 @@ void smp_apic_timer_interrupt(struct pt_ /* * the NMI deadlock-detector uses this. */ - apic_timer_irqs[cpu]++; + irq_stat[cpu].apic_timer_irqs++; /* * NOTE! We'd better ACK the irq immediately, diff -urNp --exclude CVS --exclude BitKeeper x-ref/arch/i386/kernel/irq.c x/arch/i386/kernel/irq.c --- x-ref/arch/i386/kernel/irq.c 2003-09-23 01:51:33.000000000 +0200 +++ x/arch/i386/kernel/irq.c 2003-09-23 01:52:07.000000000 +0200 @@ -170,7 +170,7 @@ int show_interrupts(struct seq_file *p, seq_printf(p, "LOC: "); for (j = 0; j < smp_num_cpus; j++) seq_printf(p, "%10u ", - apic_timer_irqs[cpu_logical_map(j)]); + irq_stat[cpu_logical_map(j)].apic_timer_irqs); seq_printf(p, "\n"); #endif seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); diff -urNp --exclude CVS --exclude BitKeeper x-ref/arch/i386/kernel/nmi.c x/arch/i386/kernel/nmi.c --- x-ref/arch/i386/kernel/nmi.c 2003-06-13 22:07:23.000000000 +0200 +++ x/arch/i386/kernel/nmi.c 2003-09-23 01:51:37.000000000 +0200 @@ -346,7 +346,7 @@ void nmi_watchdog_tick (struct pt_regs * */ int sum, cpu = smp_processor_id(); - sum = apic_timer_irqs[cpu]; + sum = irq_stat[cpu].apic_timer_irqs; if (last_irq_sums[cpu] == sum) { /* diff -urNp --exclude CVS --exclude BitKeeper x-ref/arch/ia64/kernel/irq.c x/arch/ia64/kernel/irq.c --- x-ref/arch/ia64/kernel/irq.c 2003-09-23 01:51:33.000000000 +0200 +++ x/arch/ia64/kernel/irq.c 2003-09-23 01:51:37.000000000 +0200 @@ -193,7 +193,7 @@ int get_irq_list(char *buf) p += sprintf(p, "LOC: "); for (j = 0; j < smp_num_cpus; j++) p += sprintf(p, "%10u ", - apic_timer_irqs[cpu_logical_map(j)]); + irq_stat[cpu_logical_map(j)].apic_timer_irqs); p += sprintf(p, "\n"); #endif p += sprintf(p, "ERR: %10u\n", atomic_read(&irq_err_count)); diff -urNp --exclude CVS --exclude BitKeeper x-ref/include/asm-i386/apic.h x/include/asm-i386/apic.h --- x-ref/include/asm-i386/apic.h 2003-07-18 06:07:45.000000000 +0200 +++ x/include/asm-i386/apic.h 2003-09-23 01:51:37.000000000 +0200 @@ -85,7 +85,6 @@ extern void enable_APIC_timer(void); extern struct pm_dev *apic_pm_register(pm_dev_t, unsigned long, pm_callback); extern void apic_pm_unregister(struct pm_dev*); -extern unsigned int apic_timer_irqs [NR_CPUS]; extern int check_nmi_watchdog (void); extern unsigned int nmi_watchdog; diff -urNp --exclude CVS --exclude BitKeeper x-ref/include/asm-i386/hardirq.h x/include/asm-i386/hardirq.h --- x-ref/include/asm-i386/hardirq.h 2003-09-22 08:05:01.000000000 +0200 +++ x/include/asm-i386/hardirq.h 2003-09-23 01:51:37.000000000 +0200 @@ -13,6 +13,9 @@ typedef struct { unsigned int __syscall_count; struct task_struct * __ksoftirqd_task; /* waitqueue is too large */ unsigned int __nmi_count; /* arch dependent */ +#if CONFIG_X86_LOCAL_APIC + unsigned int apic_timer_irqs; /* arch dependent */ +#endif } ____cacheline_aligned irq_cpustat_t; #include /* Standard mappings for irq_cpustat_t above */