diff options
Diffstat (limited to 'drivers/acpi/pci_irq.c')
| -rw-r--r-- | drivers/acpi/pci_irq.c | 11 | 
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c index 9c62340c2360..6e6b80eb0bba 100644 --- a/drivers/acpi/pci_irq.c +++ b/drivers/acpi/pci_irq.c @@ -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);  }  |