diff options
author | Mike Habeck <habeck@sgi.com> | 2007-08-13 17:13:08 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2007-08-13 15:24:35 -0700 |
commit | 352b0ef50d98049bf022a31eaf2272f52e2f5219 (patch) | |
tree | 4071bc60e1b514a2a058f01829ac3f440a47fde5 /arch | |
parent | 709ae9309102875f9798349b64849b6743e25193 (diff) | |
download | op-kernel-dev-352b0ef50d98049bf022a31eaf2272f52e2f5219.zip op-kernel-dev-352b0ef50d98049bf022a31eaf2272f52e2f5219.tar.gz |
[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')
-rw-r--r-- | arch/ia64/sn/kernel/irq.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/ia64/sn/kernel/irq.c b/arch/ia64/sn/kernel/irq.c index bfa43e4..3600473 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) 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); } |