Pārlūkot izejas kodu

[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>
Mike Habeck 18 gadi atpakaļ
vecāks
revīzija
352b0ef50d
1 mainītis faili ar 4 papildinājumiem un 1 dzēšanām
  1. 4 1
      arch/ia64/sn/kernel/irq.c

+ 4 - 1
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;
 	struct sn_pcibus_provider *pci_provider;
 
 
 	pci_provider = sn_pci_provider[sn_irq_info->irq_bridge_type];
 	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);
 		(*pci_provider->force_interrupt)(sn_irq_info);
 }
 }