diff mbox series

pci: always clear pme on stop

Message ID 20241111180659.3321671-1-kbusch@meta.com
State New
Headers show
Series pci: always clear pme on stop | expand

Commit Message

Keith Busch Nov. 11, 2024, 6:06 p.m. UTC
From: Keith Busch <kbusch@kernel.org>

This used to be called unconditionally, but was inadvertently changed to
call it only once. Restore the previously existing behavior.

Fixes: 6d6d962a8dc2 ("pci: make pci_stop_dev concurrent safe")
Suggested-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
---
 drivers/pci/remove.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Bjorn Helgaas Nov. 11, 2024, 7:06 p.m. UTC | #1
On Mon, Nov 11, 2024 at 10:06:59AM -0800, Keith Busch wrote:
> From: Keith Busch <kbusch@kernel.org>
> 
> This used to be called unconditionally, but was inadvertently changed to
> call it only once. Restore the previously existing behavior.
> 
> Fixes: 6d6d962a8dc2 ("pci: make pci_stop_dev concurrent safe")
> Suggested-by: Lukas Wunner <lukas@wunner.de>
> Signed-off-by: Keith Busch <kbusch@kernel.org>

Squashed into 6d6d962a8dc2, thanks!

> ---
>  drivers/pci/remove.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
> index 2e940101ce1bf..36467558c0144 100644
> --- a/drivers/pci/remove.c
> +++ b/drivers/pci/remove.c
> @@ -31,10 +31,10 @@ static int pci_pwrctl_unregister(struct device *dev, void *data)
>  
>  static void pci_stop_dev(struct pci_dev *dev)
>  {
> +	pci_pme_active(dev, false);
> +
>  	if (!pci_dev_test_and_clear_added(dev))
>  		return;
> -
> -	pci_pme_active(dev, false);
>  	device_for_each_child(dev->dev.parent, dev_of_node(&dev->dev),
>  			      pci_pwrctl_unregister);
>  	device_release_driver(&dev->dev);
> -- 
> 2.43.5
>
diff mbox series

Patch

diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
index 2e940101ce1bf..36467558c0144 100644
--- a/drivers/pci/remove.c
+++ b/drivers/pci/remove.c
@@ -31,10 +31,10 @@  static int pci_pwrctl_unregister(struct device *dev, void *data)
 
 static void pci_stop_dev(struct pci_dev *dev)
 {
+	pci_pme_active(dev, false);
+
 	if (!pci_dev_test_and_clear_added(dev))
 		return;
-
-	pci_pme_active(dev, false);
 	device_for_each_child(dev->dev.parent, dev_of_node(&dev->dev),
 			      pci_pwrctl_unregister);
 	device_release_driver(&dev->dev);