Merge branch 'irq-final-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / arch / mips / kernel / smtc.c
index 39c0825..5a88cc4 100644 (file)
@@ -677,8 +677,9 @@ void smtc_set_irq_affinity(unsigned int irq, cpumask_t affinity)
         */
 }
 
-void smtc_forward_irq(unsigned int irq)
+void smtc_forward_irq(struct irq_data *d)
 {
+       unsigned int irq = d->irq;
        int target;
 
        /*
@@ -692,7 +693,7 @@ void smtc_forward_irq(unsigned int irq)
         * and efficiency, we just pick the easiest one to find.
         */
 
-       target = cpumask_first(irq_desc[irq].affinity);
+       target = cpumask_first(d->affinity);
 
        /*
         * We depend on the platform code to have correctly processed
@@ -707,12 +708,10 @@ void smtc_forward_irq(unsigned int irq)
         */
 
        /* If no one is eligible, service locally */
-       if (target >= NR_CPUS) {
+       if (target >= NR_CPUS)
                do_IRQ_no_affinity(irq);
-               return;
-       }
-
-       smtc_send_ipi(target, IRQ_AFFINITY_IPI, irq);
+       else
+               smtc_send_ipi(target, IRQ_AFFINITY_IPI, irq);
 }
 
 #endif /* CONFIG_MIPS_MT_SMTC_IRQAFF */
@@ -1147,7 +1146,7 @@ static void setup_cross_vpe_interrupts(unsigned int nvpe)
 
        setup_irq_smtc(cpu_ipi_irq, &irq_ipi, (0x100 << MIPS_CPU_IPI_IRQ));
 
-       set_irq_handler(cpu_ipi_irq, handle_percpu_irq);
+       irq_set_handler(cpu_ipi_irq, handle_percpu_irq);
 }
 
 /*