]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/x86/pci/irq.c
Revert "PCI, x86: Implement pcibios_alloc_irq() and pcibios_free_irq()"
[karo-tx-linux.git] / arch / x86 / pci / irq.c
index 72108f0b66b10f8a2bd099d8e47aac7b05150b11..9bd115484745703791c6515b289938546d2478ab 100644 (file)
@@ -1257,9 +1257,22 @@ static int pirq_enable_irq(struct pci_dev *dev)
        return 0;
 }
 
+bool mp_should_keep_irq(struct device *dev)
+{
+       if (dev->power.is_prepared)
+               return true;
+#ifdef CONFIG_PM
+       if (dev->power.runtime_status == RPM_SUSPENDING)
+               return true;
+#endif
+
+       return false;
+}
+
 static void pirq_disable_irq(struct pci_dev *dev)
 {
-       if (io_apic_assign_pci_irqs && dev->irq_managed && dev->irq) {
+       if (io_apic_assign_pci_irqs && !mp_should_keep_irq(&dev->dev) &&
+           dev->irq_managed && dev->irq) {
                mp_unmap_irq(dev->irq);
                dev->irq = 0;
                dev->irq_managed = 0;