|
@@ -1012,7 +1012,12 @@ static int pci_pm_thaw_noirq(struct device *dev)
|
|
|
if (pci_has_legacy_pm_support(pci_dev))
|
|
|
return pci_legacy_resume_early(dev);
|
|
|
|
|
|
- pci_update_current_state(pci_dev, PCI_D0);
|
|
|
+ /*
|
|
|
+ * pci_restore_state() requires the device to be in D0 (because of MSI
|
|
|
+ * restoration among other things), so force it into D0 in case the
|
|
|
+ * driver's "freeze" callbacks put it into a low-power state directly.
|
|
|
+ */
|
|
|
+ pci_set_power_state(pci_dev, PCI_D0);
|
|
|
pci_restore_state(pci_dev);
|
|
|
|
|
|
if (drv && drv->pm && drv->pm->thaw_noirq)
|