[IA64] Fix breakage from irq change
authorTony Luck <tony.luck@intel.com>
Fri, 6 Oct 2006 17:09:41 +0000 (10:09 -0700)
committerTony Luck <tony.luck@intel.com>
Fri, 6 Oct 2006 17:09:41 +0000 (10:09 -0700)
A few missed spots in ia64-land from this gigantic commit:

7d12e780e003f93433d49ce78cfedf4b4c52adc5

Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/kernel/irq.c
arch/ia64/kernel/irq_ia64.c
arch/ia64/sn/kernel/sn2/timer_interrupt.c
drivers/serial/sn_console.c

index 7852382de2fa6666a67383086f0014c93ddce43a..f07c0864b0b424bd7743b310e89ee1868fe1af12 100644 (file)
@@ -194,8 +194,11 @@ void fixup_irqs(void)
         */
        for (irq=0; irq < NR_IRQS; irq++) {
                if (vectors_in_migration[irq]) {
+                       struct pt_regs *old_regs = set_irq_regs(NULL);
+
                        vectors_in_migration[irq]=0;
-                       __do_IRQ(irq, NULL);
+                       __do_IRQ(irq);
+                       set_irq_regs(old_regs);
                }
        }
 
index 7fd3ef9e064dedc2f4c07214e6f217a3c2d540cf..68339dd0c9e2045c22bbdbf028595114118b6521 100644 (file)
@@ -226,6 +226,8 @@ void ia64_process_pending_intr(void)
          */
        while (vector != IA64_SPURIOUS_INT_VECTOR) {
                if (!IS_RESCHEDULE(vector)) {
+                       struct pt_regs *old_regs = set_irq_regs(NULL);
+
                        ia64_setreg(_IA64_REG_CR_TPR, vector);
                        ia64_srlz_d();
 
@@ -236,7 +238,8 @@ void ia64_process_pending_intr(void)
                         * Probably could shared code.
                         */
                        vectors_in_migration[local_vector_to_irq(vector)]=0;
-                       __do_IRQ(local_vector_to_irq(vector), NULL);
+                       __do_IRQ(local_vector_to_irq(vector));
+                       set_irq_regs(old_regs);
 
                        /*
                         * Disable interrupts and send EOI
@@ -253,7 +256,7 @@ void ia64_process_pending_intr(void)
 
 
 #ifdef CONFIG_SMP
-extern irqreturn_t handle_IPI (int irq, void *dev_id, struct pt_regs *regs);
+extern irqreturn_t handle_IPI (int irq, void *dev_id);
 
 static struct irqaction ipi_irqaction = {
        .handler =      handle_IPI,
index fa7f69945917dd4b80ae5a5d6dc9897b19d1a9b8..103d6ea8e94b55bb4b7341bf2b43278bee8f0d75 100644 (file)
@@ -36,7 +36,7 @@ extern irqreturn_t timer_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 
 #define SN_LB_INT_WAR_INTERVAL 100
 
-void sn_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+void sn_timer_interrupt(int irq, void *dev_id)
 {
        /* LED blinking */
        if (!pda->hb_count--) {
index 709f93a6c18c6efb8715c1065dfb5f2fa85d590c..956b2cf08e1e09f39d90f0a4d12df15b93817979 100644 (file)
@@ -674,7 +674,7 @@ static void sn_sal_timer_poll(unsigned long data)
        if (!port->sc_port.irq) {
                spin_lock_irqsave(&port->sc_port.lock, flags);
                if (sn_process_input)
-                       sn_receive_chars(port, NULL, flags);
+                       sn_receive_chars(port, flags);
                sn_transmit_chars(port, TRANSMIT_RAW);
                spin_unlock_irqrestore(&port->sc_port.lock, flags);
                mod_timer(&port->sc_timer,