The pci_save_state call in vmd_suspend can be performed by pci_pm_suspend_irq. This allows the call to pci_prepare_to_sleep into ASPM flow. The pci_restore_state call in vmd_resume was restoring state after pci_pm_resume->pci_restore_standard_config had already restored state. It's also been suspected that the config state should be restored before re-requesting IRQs. Remove the pci_{save,restore}_state calls in vmd_{suspend,resume} in order to allow proper flow through PCI core power management ASPM code. Cc: Kai-Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> Cc: You-Sheng Yang <vicamo.yang@xxxxxxxxxxxxx> Signed-off-by: Jon Derrick <jonathan.derrick@xxxxxxxxx> --- drivers/pci/controller/vmd.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/pci/controller/vmd.c b/drivers/pci/controller/vmd.c index 76d8acbee7d5..15c1d85d8780 100644 --- a/drivers/pci/controller/vmd.c +++ b/drivers/pci/controller/vmd.c @@ -719,7 +719,6 @@ static int vmd_suspend(struct device *dev) for (i = 0; i < vmd->msix_count; i++) devm_free_irq(dev, pci_irq_vector(pdev, i), &vmd->irqs[i]); - pci_save_state(pdev); return 0; } @@ -737,7 +736,6 @@ static int vmd_resume(struct device *dev) return err; } - pci_restore_state(pdev); return 0; } #endif -- 2.18.1