[IA64] SGI Altix : fix a force_interrupt bug on altix
authorMike Habeck <habeck@sgi.com>
Mon, 13 Aug 2007 22:13:08 +0000 (17:13 -0500)
committerTony Luck <tony.luck@intel.com>
Mon, 13 Aug 2007 22:24:35 +0000 (15:24 -0700)
If the interrupt has been disabled, don't call the force_interrupt provider.
Doing so can result in an infinite runaway interrupt loop.

Signed-off-by: Mike Habeck <habeck@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
arch/ia64/sn/kernel/irq.c

index bfa43e4c7ef7546713241d7d62acbf4f02afefba..3600473894491baea82a5579398a5d29f52d802d 100644 (file)
@@ -405,7 +405,10 @@ sn_call_force_intr_provider(struct sn_irq_info *sn_irq_info)
        struct sn_pcibus_provider *pci_provider;
 
        pci_provider = sn_pci_provider[sn_irq_info->irq_bridge_type];
-       if (pci_provider && pci_provider->force_interrupt)
+
+       /* Don't force an interrupt if the irq has been disabled */
+       if (!(irq_desc[sn_irq_info->irq_irq].status & IRQ_DISABLED) &&
+           pci_provider && pci_provider->force_interrupt)
                (*pci_provider->force_interrupt)(sn_irq_info);
 }