X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=drivers%2Fpci%2Fpci-driver.c;h=6b54b23b990be0be03dddb49f5e02b55e5272c56;hb=6b8212a313dae341ef3a2e413dfec5c4dea59617;hp=8d9616b821ca272c9770b4471ca6b5da2325fbd4;hpb=c7c66c0cb0c77b1a8edf09bca57d922312d58030;p=~andy%2Flinux diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index 8d9616b821c..6b54b23b990 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -419,6 +419,16 @@ static void pci_device_shutdown(struct device *dev) drv->shutdown(pci_dev); pci_msi_shutdown(pci_dev); pci_msix_shutdown(pci_dev); + + /* + * Devices may be enabled to wake up by runtime PM, but they need not + * be supposed to wake up the system from its "power off" state (e.g. + * ACPI S5). Therefore disable wakeup for all devices that aren't + * supposed to wake up the system at this point. The state argument + * will be ignored by pci_enable_wake(). + */ + if (!device_may_wakeup(dev)) + pci_enable_wake(pci_dev, PCI_UNKNOWN, false); } #ifdef CONFIG_PM