* [PATCH] PM / Domains: Convert to dev_to_genpd_safe() in genpd_syscore_switch()
@ 2019-10-16 14:16 Ulf Hansson
2019-11-13 11:05 ` Rafael J. Wysocki
0 siblings, 1 reply; 2+ messages in thread
From: Ulf Hansson @ 2019-10-16 14:16 UTC (permalink / raw)
To: Rafael J . Wysocki, linux-pm
Cc: Geert Uytterhoeven, Ulf Hansson, Kevin Hilman
The intent with walking the gpd_list via calling genpd_present() from
genpd_syscore_switch(), is to make sure the dev->pm_domain pointer belongs
to a registered genpd. However, as a genpd can't be removed if there is a
device attached to it, let's convert to use the quicker dev_to_genpd_safe()
instead.
Due to the above change, this allows us to cleanup genpd_present() and move
it inside CONFIG_PM_GENERIC_DOMAINS_OF, so let's do that as well.
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
---
drivers/base/power/domain.c | 32 ++++++++++++--------------------
1 file changed, 12 insertions(+), 20 deletions(-)
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index cc85e87eaf05..600ea78d6b71 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -922,24 +922,6 @@ static int __init genpd_power_off_unused(void)
}
late_initcall(genpd_power_off_unused);
-#if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM_GENERIC_DOMAINS_OF)
-
-static bool genpd_present(const struct generic_pm_domain *genpd)
-{
- const struct generic_pm_domain *gpd;
-
- if (IS_ERR_OR_NULL(genpd))
- return false;
-
- list_for_each_entry(gpd, &gpd_list, gpd_list_node)
- if (gpd == genpd)
- return true;
-
- return false;
-}
-
-#endif
-
#ifdef CONFIG_PM_SLEEP
/**
@@ -1354,8 +1336,8 @@ static void genpd_syscore_switch(struct device *dev, bool suspend)
{
struct generic_pm_domain *genpd;
- genpd = dev_to_genpd(dev);
- if (!genpd_present(genpd))
+ genpd = dev_to_genpd_safe(dev);
+ if (!genpd)
return;
if (suspend) {
@@ -2020,6 +2002,16 @@ static int genpd_add_provider(struct device_node *np, genpd_xlate_t xlate,
return 0;
}
+static bool genpd_present(const struct generic_pm_domain *genpd)
+{
+ const struct generic_pm_domain *gpd;
+
+ list_for_each_entry(gpd, &gpd_list, gpd_list_node)
+ if (gpd == genpd)
+ return true;
+ return false;
+}
+
/**
* of_genpd_add_provider_simple() - Register a simple PM domain provider
* @np: Device node pointer associated with the PM domain provider.
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] PM / Domains: Convert to dev_to_genpd_safe() in genpd_syscore_switch()
2019-10-16 14:16 [PATCH] PM / Domains: Convert to dev_to_genpd_safe() in genpd_syscore_switch() Ulf Hansson
@ 2019-11-13 11:05 ` Rafael J. Wysocki
0 siblings, 0 replies; 2+ messages in thread
From: Rafael J. Wysocki @ 2019-11-13 11:05 UTC (permalink / raw)
To: Ulf Hansson; +Cc: linux-pm, Geert Uytterhoeven, Kevin Hilman
On Wednesday, October 16, 2019 4:16:49 PM CET Ulf Hansson wrote:
> The intent with walking the gpd_list via calling genpd_present() from
> genpd_syscore_switch(), is to make sure the dev->pm_domain pointer belongs
> to a registered genpd. However, as a genpd can't be removed if there is a
> device attached to it, let's convert to use the quicker dev_to_genpd_safe()
> instead.
>
> Due to the above change, this allows us to cleanup genpd_present() and move
> it inside CONFIG_PM_GENERIC_DOMAINS_OF, so let's do that as well.
>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> ---
> drivers/base/power/domain.c | 32 ++++++++++++--------------------
> 1 file changed, 12 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> index cc85e87eaf05..600ea78d6b71 100644
> --- a/drivers/base/power/domain.c
> +++ b/drivers/base/power/domain.c
> @@ -922,24 +922,6 @@ static int __init genpd_power_off_unused(void)
> }
> late_initcall(genpd_power_off_unused);
>
> -#if defined(CONFIG_PM_SLEEP) || defined(CONFIG_PM_GENERIC_DOMAINS_OF)
> -
> -static bool genpd_present(const struct generic_pm_domain *genpd)
> -{
> - const struct generic_pm_domain *gpd;
> -
> - if (IS_ERR_OR_NULL(genpd))
> - return false;
> -
> - list_for_each_entry(gpd, &gpd_list, gpd_list_node)
> - if (gpd == genpd)
> - return true;
> -
> - return false;
> -}
> -
> -#endif
> -
> #ifdef CONFIG_PM_SLEEP
>
> /**
> @@ -1354,8 +1336,8 @@ static void genpd_syscore_switch(struct device *dev, bool suspend)
> {
> struct generic_pm_domain *genpd;
>
> - genpd = dev_to_genpd(dev);
> - if (!genpd_present(genpd))
> + genpd = dev_to_genpd_safe(dev);
> + if (!genpd)
> return;
>
> if (suspend) {
> @@ -2020,6 +2002,16 @@ static int genpd_add_provider(struct device_node *np, genpd_xlate_t xlate,
> return 0;
> }
>
> +static bool genpd_present(const struct generic_pm_domain *genpd)
> +{
> + const struct generic_pm_domain *gpd;
> +
> + list_for_each_entry(gpd, &gpd_list, gpd_list_node)
> + if (gpd == genpd)
> + return true;
> + return false;
> +}
> +
> /**
> * of_genpd_add_provider_simple() - Register a simple PM domain provider
> * @np: Device node pointer associated with the PM domain provider.
>
Applying as 5.5 material, thanks!
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-11-13 11:05 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-16 14:16 [PATCH] PM / Domains: Convert to dev_to_genpd_safe() in genpd_syscore_switch() Ulf Hansson
2019-11-13 11:05 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).