[v2] PCI: vmd: Update VMD PM to correctly use generic PCI PM
diff mbox series

Message ID 20200806210017.5654-1-jonathan.derrick@intel.com
State Accepted
Delegated to: Lorenzo Pieralisi
Headers show
Series
  • [v2] PCI: vmd: Update VMD PM to correctly use generic PCI PM
Related show

Commit Message

Derrick, Jonathan Aug. 6, 2020, 9 p.m. UTC
The pci_save_state() call in vmd_suspend() can be performed by
pci_pm_suspend_irq(). This also allows VMD to benefit from the call into
pci_prepare_to_sleep().

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 have been
restored before re-requesting IRQs instead of afterwards.

This patch removes the pci_save_state()/pci_restore_state() calls in
vmd_suspend()/vmd_resume() in order to allow proper flow through generic
PCI core Power Management code.

Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
Cc: You-Sheng Yang <vicamo.yang@canonical.com>
Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
---
v1->v2: Commit message cleanup

 drivers/pci/controller/vmd.c | 2 --
 1 file changed, 2 deletions(-)

Comments

Lorenzo Pieralisi Sept. 7, 2020, 4:59 p.m. UTC | #1
On Thu, Aug 06, 2020 at 05:00:17PM -0400, Jon Derrick wrote:
> The pci_save_state() call in vmd_suspend() can be performed by
> pci_pm_suspend_irq(). This also allows VMD to benefit from the call into
> pci_prepare_to_sleep().
> 
> 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 have been
> restored before re-requesting IRQs instead of afterwards.
> 
> This patch removes the pci_save_state()/pci_restore_state() calls in
> vmd_suspend()/vmd_resume() in order to allow proper flow through generic
> PCI core Power Management code.
> 
> Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
> Cc: You-Sheng Yang <vicamo.yang@canonical.com>
> Signed-off-by: Jon Derrick <jonathan.derrick@intel.com>
> ---
> v1->v2: Commit message cleanup
> 
>  drivers/pci/controller/vmd.c | 2 --
>  1 file changed, 2 deletions(-)

Applied to pci/vmd, thanks.

Lorenzo

> 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
>

Patch
diff mbox series

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