[PATCH] amba: bus: Drop dev_pm_domain_detach() call

Claudiu posted 1 patch 5 months, 2 weeks ago
drivers/amba/bus.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
[PATCH] amba: bus: Drop dev_pm_domain_detach() call
Posted by Claudiu 5 months, 2 weeks ago
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/amba/bus.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
index 74e34a07ef72..952c45ca6e48 100644
--- a/drivers/amba/bus.c
+++ b/drivers/amba/bus.c
@@ -291,15 +291,14 @@ static int amba_probe(struct device *dev)
 		if (ret < 0)
 			break;
 
-		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)
 			break;
 
 		ret = amba_get_enable_pclk(pcdev);
-		if (ret) {
-			dev_pm_domain_detach(dev, true);
+		if (ret)
 			break;
-		}
 
 		pm_runtime_get_noresume(dev);
 		pm_runtime_set_active(dev);
@@ -314,7 +313,6 @@ static int amba_probe(struct device *dev)
 		pm_runtime_put_noidle(dev);
 
 		amba_put_disable_pclk(pcdev);
-		dev_pm_domain_detach(dev, true);
 	} while (0);
 
 	return ret;
@@ -336,7 +334,6 @@ static void amba_remove(struct device *dev)
 	pm_runtime_put_noidle(dev);
 
 	amba_put_disable_pclk(pcdev);
-	dev_pm_domain_detach(dev, true);
 }
 
 static void amba_shutdown(struct device *dev)
-- 
2.43.0
Re: [PATCH] amba: bus: Drop dev_pm_domain_detach() call
Posted by Ulf Hansson 5 months, 2 weeks ago
On Wed, 27 Aug 2025 at 12:03, 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>

If it helps, let me know if you want me to pick this up via my pmdomain tree.

Kind regards
Uffe


> ---
>  drivers/amba/bus.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
> index 74e34a07ef72..952c45ca6e48 100644
> --- a/drivers/amba/bus.c
> +++ b/drivers/amba/bus.c
> @@ -291,15 +291,14 @@ static int amba_probe(struct device *dev)
>                 if (ret < 0)
>                         break;
>
> -               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)
>                         break;
>
>                 ret = amba_get_enable_pclk(pcdev);
> -               if (ret) {
> -                       dev_pm_domain_detach(dev, true);
> +               if (ret)
>                         break;
> -               }
>
>                 pm_runtime_get_noresume(dev);
>                 pm_runtime_set_active(dev);
> @@ -314,7 +313,6 @@ static int amba_probe(struct device *dev)
>                 pm_runtime_put_noidle(dev);
>
>                 amba_put_disable_pclk(pcdev);
> -               dev_pm_domain_detach(dev, true);
>         } while (0);
>
>         return ret;
> @@ -336,7 +334,6 @@ static void amba_remove(struct device *dev)
>         pm_runtime_put_noidle(dev);
>
>         amba_put_disable_pclk(pcdev);
> -       dev_pm_domain_detach(dev, true);
>  }
>
>  static void amba_shutdown(struct device *dev)
> --
> 2.43.0
>
Re: [PATCH] amba: bus: Drop dev_pm_domain_detach() call
Posted by Claudiu Beznea 3 months ago
Hi, Ulf,

On 8/27/25 14:35, Ulf Hansson wrote:
> On Wed, 27 Aug 2025 at 12:03, 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>
> 
> If it helps, let me know if you want me to pick this up via my pmdomain tree.

This wasn't picked up so far. Could you please take it through your tree if
everything looks good?

Thank you,
Claudiu

> 
> Kind regards
> Uffe
> 
> 
>> ---
>>  drivers/amba/bus.c | 9 +++------
>>  1 file changed, 3 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
>> index 74e34a07ef72..952c45ca6e48 100644
>> --- a/drivers/amba/bus.c
>> +++ b/drivers/amba/bus.c
>> @@ -291,15 +291,14 @@ static int amba_probe(struct device *dev)
>>                 if (ret < 0)
>>                         break;
>>
>> -               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)
>>                         break;
>>
>>                 ret = amba_get_enable_pclk(pcdev);
>> -               if (ret) {
>> -                       dev_pm_domain_detach(dev, true);
>> +               if (ret)
>>                         break;
>> -               }
>>
>>                 pm_runtime_get_noresume(dev);
>>                 pm_runtime_set_active(dev);
>> @@ -314,7 +313,6 @@ static int amba_probe(struct device *dev)
>>                 pm_runtime_put_noidle(dev);
>>
>>                 amba_put_disable_pclk(pcdev);
>> -               dev_pm_domain_detach(dev, true);
>>         } while (0);
>>
>>         return ret;
>> @@ -336,7 +334,6 @@ static void amba_remove(struct device *dev)
>>         pm_runtime_put_noidle(dev);
>>
>>         amba_put_disable_pclk(pcdev);
>> -       dev_pm_domain_detach(dev, true);
>>  }
>>
>>  static void amba_shutdown(struct device *dev)
>> --
>> 2.43.0
>>
> 
>
Re: [PATCH] amba: bus: Drop dev_pm_domain_detach() call
Posted by Ulf Hansson 3 months ago
On Tue, 4 Nov 2025 at 15:04, Claudiu Beznea <claudiu.beznea@tuxon.dev> wrote:
>
> Hi, Ulf,
>
> On 8/27/25 14:35, Ulf Hansson wrote:
> > On Wed, 27 Aug 2025 at 12:03, 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>
> >
> > If it helps, let me know if you want me to pick this up via my pmdomain tree.
>
> This wasn't picked up so far. Could you please take it through your tree if
> everything looks good?
>
> Thank you,
> Claudiu

Okay, I have picked this up via my pmdomain tree and queued it for
v6.19 on my next branch.

If anyone has objections, please let me know.

Kind regards
Uffe


> >
> > Kind regards
> > Uffe
> >
> >
> >> ---
> >>  drivers/amba/bus.c | 9 +++------
> >>  1 file changed, 3 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
> >> index 74e34a07ef72..952c45ca6e48 100644
> >> --- a/drivers/amba/bus.c
> >> +++ b/drivers/amba/bus.c
> >> @@ -291,15 +291,14 @@ static int amba_probe(struct device *dev)
> >>                 if (ret < 0)
> >>                         break;
> >>
> >> -               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)
> >>                         break;
> >>
> >>                 ret = amba_get_enable_pclk(pcdev);
> >> -               if (ret) {
> >> -                       dev_pm_domain_detach(dev, true);
> >> +               if (ret)
> >>                         break;
> >> -               }
> >>
> >>                 pm_runtime_get_noresume(dev);
> >>                 pm_runtime_set_active(dev);
> >> @@ -314,7 +313,6 @@ static int amba_probe(struct device *dev)
> >>                 pm_runtime_put_noidle(dev);
> >>
> >>                 amba_put_disable_pclk(pcdev);
> >> -               dev_pm_domain_detach(dev, true);
> >>         } while (0);
> >>
> >>         return ret;
> >> @@ -336,7 +334,6 @@ static void amba_remove(struct device *dev)
> >>         pm_runtime_put_noidle(dev);
> >>
> >>         amba_put_disable_pclk(pcdev);
> >> -       dev_pm_domain_detach(dev, true);
> >>  }
> >>
> >>  static void amba_shutdown(struct device *dev)
> >> --
> >> 2.43.0
> >>
> >
> >
>