Message ID | 20241111180659.3321671-1-kbusch@meta.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | pci: always clear pme on stop | expand |
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 --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);