From: Bjorn Helgaas <bhelgaas@xxxxxxxxxx> Dexuan, the important thing here is the first patch, which is your [1], which I modified by doing pci_restore_state() as well as setting to D0: pci_set_power_state(pci_dev, PCI_D0); pci_restore_state(pci_dev); I'm proposing some more patches on top. None are relevant to the problem you're solving; they're just minor doc and other updates in the same area. Rafael, if you have a chance to look at these, I'd appreciate it. I tried to make the doc match the code, but I'm no PM expert. [1] https://lore.kernel.org/r/KU1P153MB016637CAEAD346F0AA8E3801BFAD0@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Dexuan Cui (1): PCI/PM: Always return devices to D0 when thawing Bjorn Helgaas (6): PCI/PM: Correct pci_pm_thaw_noirq() documentation PCI/PM: Clear PCIe PME Status even for legacy power management PCI/PM: Run resume fixups before disabling wakeup events PCI/PM: Make power management op coding style consistent PCI/PM: Wrap long lines in documentation PCI/MSI: Move power state check out of pci_msi_supported() Documentation/power/pci.rst | 38 +++++++------- drivers/pci/msi.c | 6 +-- drivers/pci/pci-driver.c | 99 ++++++++++++++++++------------------- 3 files changed, 71 insertions(+), 72 deletions(-) -- 2.23.0.700.g56cf767bdb-goog