drivers/spi/spi.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-)
From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Starting with commit f99508074e78 ("PM: domains: Detach on
device_unbind_cleanup()"), there is no longer a need to call
dev_pm_domain_detach() in the bus remove function. The
device_unbind_cleanup() function now handles this to avoid
invoking devres cleanup handlers while the PM domain is
powered off, which could otherwise lead to failures as
described in the above-mentioned commit.
Drop the explicit dev_pm_domain_detach() call and rely instead
on the flags passed to dev_pm_domain_attach() to power off the
domain.
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
---
drivers/spi/spi.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index a388f372b27a..f95c4304df8e 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -427,15 +427,13 @@ static int spi_probe(struct device *dev)
if (spi->irq < 0)
spi->irq = 0;
- ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON);
+ ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON |
+ PD_FLAG_DETACH_POWER_OFF);
if (ret)
return ret;
- if (sdrv->probe) {
+ if (sdrv->probe)
ret = sdrv->probe(spi);
- if (ret)
- dev_pm_domain_detach(dev, true);
- }
return ret;
}
@@ -446,8 +444,6 @@ static void spi_remove(struct device *dev)
if (sdrv->remove)
sdrv->remove(to_spi_device(dev));
-
- dev_pm_domain_detach(dev, true);
}
static void spi_shutdown(struct device *dev)
--
2.43.0
On Wed, 27 Aug 2025 13:16:12 +0300, Claudiu wrote: > Starting with commit f99508074e78 ("PM: domains: Detach on > device_unbind_cleanup()"), there is no longer a need to call > dev_pm_domain_detach() in the bus remove function. The > device_unbind_cleanup() function now handles this to avoid > invoking devres cleanup handlers while the PM domain is > powered off, which could otherwise lead to failures as > described in the above-mentioned commit. > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next Thanks! [1/1] spi: Drop dev_pm_domain_detach() call commit: c42e36a488c7e01f833fc9f4814f735b66b2d494 All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark
On Wed, 27 Aug 2025 at 12:16, Claudiu <claudiu.beznea@tuxon.dev> wrote: > > From: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> > > Starting with commit f99508074e78 ("PM: domains: Detach on > device_unbind_cleanup()"), there is no longer a need to call > dev_pm_domain_detach() in the bus remove function. The > device_unbind_cleanup() function now handles this to avoid > invoking devres cleanup handlers while the PM domain is > powered off, which could otherwise lead to failures as > described in the above-mentioned commit. > > Drop the explicit dev_pm_domain_detach() call and rely instead > on the flags passed to dev_pm_domain_attach() to power off the > domain. > > Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com> Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org> Kind regards Uffe > --- > drivers/spi/spi.c | 10 +++------- > 1 file changed, 3 insertions(+), 7 deletions(-) > > diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c > index a388f372b27a..f95c4304df8e 100644 > --- a/drivers/spi/spi.c > +++ b/drivers/spi/spi.c > @@ -427,15 +427,13 @@ static int spi_probe(struct device *dev) > if (spi->irq < 0) > spi->irq = 0; > > - ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON); > + ret = dev_pm_domain_attach(dev, PD_FLAG_ATTACH_POWER_ON | > + PD_FLAG_DETACH_POWER_OFF); > if (ret) > return ret; > > - if (sdrv->probe) { > + if (sdrv->probe) > ret = sdrv->probe(spi); > - if (ret) > - dev_pm_domain_detach(dev, true); > - } > > return ret; > } > @@ -446,8 +444,6 @@ static void spi_remove(struct device *dev) > > if (sdrv->remove) > sdrv->remove(to_spi_device(dev)); > - > - dev_pm_domain_detach(dev, true); > } > > static void spi_shutdown(struct device *dev) > -- > 2.43.0 >
© 2016 - 2025 Red Hat, Inc.