Merge tag 'fixes-v3.18-not-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / drivers / acpi / pci_irq.c
index 9c62340..6e6b80e 100644 (file)
@@ -481,6 +481,14 @@ void acpi_pci_irq_disable(struct pci_dev *dev)
        if (!pin)
                return;
 
+       /* Keep IOAPIC pin configuration when suspending */
+       if (dev->dev.power.is_prepared)
+               return;
+#ifdef CONFIG_PM_RUNTIME
+       if (dev->dev.power.runtime_status == RPM_SUSPENDING)
+               return;
+#endif
+
        entry = acpi_pci_irq_lookup(dev, pin);
        if (!entry)
                return;
@@ -498,5 +506,6 @@ void acpi_pci_irq_disable(struct pci_dev *dev)
         */
 
        dev_dbg(&dev->dev, "PCI INT %c disabled\n", pin_name(pin));
-       acpi_unregister_gsi(gsi);
+       if (gsi >= 0 && dev->irq > 0)
+               acpi_unregister_gsi(gsi);
 }