Commit 6f9f0eef authored by Rafael J. Wysocki's avatar Rafael J. Wysocki
Browse files

PCI: PM: Fix ordering of operations in pci_back_from_sleep()



The ordering of operations in pci_back_from_sleep() is incorrect,
because the device may be in D3cold when it runs and pci_enable_wake()
needs to access the device's configuration space which cannot be
done in D3cold.

Fix this by calling pci_set_power_state() to put the device into D0
before calling pci_enable_wake() for it.

Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
parent fa1a25c5
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -2638,8 +2638,13 @@ EXPORT_SYMBOL(pci_prepare_to_sleep);
 */
int pci_back_from_sleep(struct pci_dev *dev)
{
	int ret = pci_set_power_state(dev, PCI_D0);

	if (ret)
		return ret;

	pci_enable_wake(dev, PCI_D0, false);
	return pci_set_power_state(dev, PCI_D0);
	return 0;
}
EXPORT_SYMBOL(pci_back_from_sleep);