aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/sn
diff options
context:
space:
mode:
authorMike Habeck <habeck@sgi.com>2007-08-13 18:13:08 -0400
committerTony Luck <tony.luck@intel.com>2007-08-13 18:24:35 -0400
commit352b0ef50d98049bf022a31eaf2272f52e2f5219 (patch)
tree4071bc60e1b514a2a058f01829ac3f440a47fde5 /arch/ia64/sn
parent709ae9309102875f9798349b64849b6743e25193 (diff)
[IA64] SGI Altix : fix a force_interrupt bug on altix
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>
Diffstat (limited to 'arch/ia64/sn')
-rw-r--r--arch/ia64/sn/kernel/irq.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c
index bfa43e4c7ef7..360047389449 100644
--- a/arch/ia64/sn/kernel/irq.c
+++ b/arch/ia64/sn/kernel/irq.c
@@ -405,7 +405,10 @@ sn_call_force_intr_provider(struct sn_irq_info *sn_irq_info)
405 struct sn_pcibus_provider *pci_provider; 405 struct sn_pcibus_provider *pci_provider;
406 406
407 pci_provider = sn_pci_provider[sn_irq_info->irq_bridge_type]; 407 pci_provider = sn_pci_provider[sn_irq_info->irq_bridge_type];
408 if (pci_provider && pci_provider->force_interrupt) 408
409 /* Don't force an interrupt if the irq has been disabled */
410 if (!(irq_desc[sn_irq_info->irq_irq].status & IRQ_DISABLED) &&
411 pci_provider && pci_provider->force_interrupt)
409 (*pci_provider->force_interrupt)(sn_irq_info); 412 (*pci_provider->force_interrupt)(sn_irq_info);
410} 413}
411 414