]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/x86/kernel/irq_64.c
x86: move kstat_irqs from kstat to irq_desc
[linux-2.6-omap-h63xx.git] / arch / x86 / kernel / irq_64.c
index f065fe9071b9f65dcaf1d519c0063065c43cce62..4a0a4eb44dcb3d37c306b771cc015e422484e16e 100644 (file)
@@ -81,17 +81,18 @@ int show_interrupts(struct seq_file *p, void *v)
                seq_putc(p, '\n');
        }
 
-       if (i < NR_IRQS) {
+       if (i < nr_irqs) {
                unsigned any_count = 0;
+               struct irq_desc *desc = irq_to_desc(i);
 
-               spin_lock_irqsave(&irq_desc[i].lock, flags);
+               spin_lock_irqsave(&desc->lock, flags);
 #ifndef CONFIG_SMP
                any_count = kstat_irqs(i);
 #else
                for_each_online_cpu(j)
-                       any_count |= kstat_cpu(j).irqs[i];
+                       any_count |= kstat_irqs_cpu(i, j);
 #endif
-               action = irq_desc[i].action;
+               action = desc->action;
                if (!action && !any_count)
                        goto skip;
                seq_printf(p, "%3d: ",i);
@@ -99,10 +100,10 @@ int show_interrupts(struct seq_file *p, void *v)
                seq_printf(p, "%10u ", kstat_irqs(i));
 #else
                for_each_online_cpu(j)
-                       seq_printf(p, "%10u ", kstat_cpu(j).irqs[i]);
+                       seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
 #endif
-               seq_printf(p, " %8s", irq_desc[i].chip->name);
-               seq_printf(p, "-%-8s", irq_desc[i].name);
+               seq_printf(p, " %8s", desc->chip->name);
+               seq_printf(p, "-%-8s", desc->name);
 
                if (action) {
                        seq_printf(p, "  %s", action->name);
@@ -111,8 +112,8 @@ int show_interrupts(struct seq_file *p, void *v)
                }
                seq_putc(p, '\n');
 skip:
-               spin_unlock_irqrestore(&irq_desc[i].lock, flags);
-       } else if (i == NR_IRQS) {
+               spin_unlock_irqrestore(&desc->lock, flags);
+       } else if (i == nr_irqs) {
                seq_printf(p, "NMI: ");
                for_each_online_cpu(j)
                        seq_printf(p, "%10u ", cpu_pda(j)->__nmi_count);
@@ -201,7 +202,7 @@ asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
        stack_overflow_check(regs);
 #endif
 
-       if (likely(irq < NR_IRQS))
+       if (likely(irq < nr_irqs))
                generic_handle_irq(irq);
        else {
                if (!disable_apic)
@@ -224,41 +225,43 @@ void fixup_irqs(cpumask_t map)
        unsigned int irq;
        static int warned;
 
-       for (irq = 0; irq < NR_IRQS; irq++) {
+       for (irq = 0; irq < nr_irqs; irq++) {
                cpumask_t mask;
                int break_affinity = 0;
                int set_affinity = 1;
+               struct irq_desc *desc;
 
                if (irq == 2)
                        continue;
 
+               desc = irq_to_desc(irq);
                /* interrupt's are disabled at this point */
-               spin_lock(&irq_desc[irq].lock);
+               spin_lock(&desc->lock);
 
                if (!irq_has_action(irq) ||
-                   cpus_equal(irq_desc[irq].affinity, map)) {
-                       spin_unlock(&irq_desc[irq].lock);
+                   cpus_equal(desc->affinity, map)) {
+                       spin_unlock(&desc->lock);
                        continue;
                }
 
-               cpus_and(mask, irq_desc[irq].affinity, map);
+               cpus_and(mask, desc->affinity, map);
                if (cpus_empty(mask)) {
                        break_affinity = 1;
                        mask = map;
                }
 
-               if (irq_desc[irq].chip->mask)
-                       irq_desc[irq].chip->mask(irq);
+               if (desc->chip->mask)
+                       desc->chip->mask(irq);
 
-               if (irq_desc[irq].chip->set_affinity)
-                       irq_desc[irq].chip->set_affinity(irq, mask);
+               if (desc->chip->set_affinity)
+                       desc->chip->set_affinity(irq, mask);
                else if (!(warned++))
                        set_affinity = 0;
 
-               if (irq_desc[irq].chip->unmask)
-                       irq_desc[irq].chip->unmask(irq);
+               if (desc->chip->unmask)
+                       desc->chip->unmask(irq);
 
-               spin_unlock(&irq_desc[irq].lock);
+               spin_unlock(&desc->lock);
 
                if (break_affinity && set_affinity)
                        printk("Broke affinity for irq %i\n", irq);