diff mbox

[v2,1/2] PM / Domains: Remove redundant pm_runtime_get|put*() in pm_genpd_prepare()

Message ID 1461653238-3891-2-git-send-email-ulf.hansson@linaro.org (mailing list archive)
State Accepted, archived
Delegated to: Rafael Wysocki
Headers show

Commit Message

Ulf Hansson April 26, 2016, 6:47 a.m. UTC
The PM core increases and decreases the runtime PM usage count in the
system PM prepare phase. This makes some of the pm_runtime_get|put*()
calls in pm_gendp_prepare() redundant, so let's remove them.

Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Reviewed-by: Kevin Hilman <khilman@baylibre.com>
---

Changes in v2:
	Updated changlog and added Kevin's reviewed by.

---
 drivers/base/power/domain.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

Comments

Ulf Hansson April 26, 2016, 7:08 a.m. UTC | #1
On 26 April 2016 at 08:47, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> The PM core increases and decreases the runtime PM usage count in the
> system PM prepare phase. This makes some of the pm_runtime_get|put*()
> calls in pm_gendp_prepare() redundant, so let's remove them.

Huh, I noticed I missed to update pm_gendp_prepare() to pm_genpd_prepare().

Rafael, can you amend the patch or you want me to send a v3?

Kind regards
Uffe

>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> Reviewed-by: Kevin Hilman <khilman@baylibre.com>
> ---
>
> Changes in v2:
>         Updated changlog and added Kevin's reviewed by.
>
> ---
>  drivers/base/power/domain.c | 10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> index 4ce4ce0..60a3573 100644
> --- a/drivers/base/power/domain.c
> +++ b/drivers/base/power/domain.c
> @@ -730,14 +730,11 @@ static int pm_genpd_prepare(struct device *dev)
>          * at this point and a system wakeup event should be reported if it's
>          * set up to wake up the system from sleep states.
>          */
> -       pm_runtime_get_noresume(dev);
>         if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
>                 pm_wakeup_event(dev, 0);
>
> -       if (pm_wakeup_pending()) {
> -               pm_runtime_put(dev);
> +       if (pm_wakeup_pending())
>                 return -EBUSY;
> -       }
>
>         if (resume_needed(dev, genpd))
>                 pm_runtime_resume(dev);
> @@ -751,10 +748,8 @@ static int pm_genpd_prepare(struct device *dev)
>
>         mutex_unlock(&genpd->lock);
>
> -       if (genpd->suspend_power_off) {
> -               pm_runtime_put_noidle(dev);
> +       if (genpd->suspend_power_off)
>                 return 0;
> -       }
>
>         /*
>          * The PM domain must be in the GPD_STATE_ACTIVE state at this point,
> @@ -776,7 +771,6 @@ static int pm_genpd_prepare(struct device *dev)
>                 pm_runtime_enable(dev);
>         }
>
> -       pm_runtime_put(dev);
>         return ret;
>  }
>
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Laurent Pinchart April 26, 2016, 7:27 a.m. UTC | #2
Hi Ulrich,

Thank you for the patch.

On Tuesday 26 Apr 2016 08:47:17 Ulf Hansson wrote:
> The PM core increases and decreases the runtime PM usage count in the
> system PM prepare phase. This makes some of the pm_runtime_get|put*()
> calls in pm_gendp_prepare() redundant, so let's remove them.
> 
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> Reviewed-by: Kevin Hilman <khilman@baylibre.com>

Apart from the gendp typo,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
> 
> Changes in v2:
> 	Updated changlog and added Kevin's reviewed by.
> 
> ---
>  drivers/base/power/domain.c | 10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> index 4ce4ce0..60a3573 100644
> --- a/drivers/base/power/domain.c
> +++ b/drivers/base/power/domain.c
> @@ -730,14 +730,11 @@ static int pm_genpd_prepare(struct device *dev)
>  	 * at this point and a system wakeup event should be reported if it's
>  	 * set up to wake up the system from sleep states.
>  	 */
> -	pm_runtime_get_noresume(dev);
>  	if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
>  		pm_wakeup_event(dev, 0);
> 
> -	if (pm_wakeup_pending()) {
> -		pm_runtime_put(dev);
> +	if (pm_wakeup_pending())
>  		return -EBUSY;
> -	}
> 
>  	if (resume_needed(dev, genpd))
>  		pm_runtime_resume(dev);
> @@ -751,10 +748,8 @@ static int pm_genpd_prepare(struct device *dev)
> 
>  	mutex_unlock(&genpd->lock);
> 
> -	if (genpd->suspend_power_off) {
> -		pm_runtime_put_noidle(dev);
> +	if (genpd->suspend_power_off)
>  		return 0;
> -	}
> 
>  	/*
>  	 * The PM domain must be in the GPD_STATE_ACTIVE state at this point,
> @@ -776,7 +771,6 @@ static int pm_genpd_prepare(struct device *dev)
>  		pm_runtime_enable(dev);
>  	}
> 
> -	pm_runtime_put(dev);
>  	return ret;
>  }
Laurent Pinchart April 26, 2016, 7:27 a.m. UTC | #3
Hi Ulf,

Thank you for the patch.

On Tuesday 26 Apr 2016 08:47:17 Ulf Hansson wrote:
> The PM core increases and decreases the runtime PM usage count in the
> system PM prepare phase. This makes some of the pm_runtime_get|put*()
> calls in pm_gendp_prepare() redundant, so let's remove them.
> 
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> Reviewed-by: Kevin Hilman <khilman@baylibre.com>

Apart from the gendp typo,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
> 
> Changes in v2:
> 	Updated changlog and added Kevin's reviewed by.
> 
> ---
>  drivers/base/power/domain.c | 10 ++--------
>  1 file changed, 2 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
> index 4ce4ce0..60a3573 100644
> --- a/drivers/base/power/domain.c
> +++ b/drivers/base/power/domain.c
> @@ -730,14 +730,11 @@ static int pm_genpd_prepare(struct device *dev)
>  	 * at this point and a system wakeup event should be reported if it's
>  	 * set up to wake up the system from sleep states.
>  	 */
> -	pm_runtime_get_noresume(dev);
>  	if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
>  		pm_wakeup_event(dev, 0);
> 
> -	if (pm_wakeup_pending()) {
> -		pm_runtime_put(dev);
> +	if (pm_wakeup_pending())
>  		return -EBUSY;
> -	}
> 
>  	if (resume_needed(dev, genpd))
>  		pm_runtime_resume(dev);
> @@ -751,10 +748,8 @@ static int pm_genpd_prepare(struct device *dev)
> 
>  	mutex_unlock(&genpd->lock);
> 
> -	if (genpd->suspend_power_off) {
> -		pm_runtime_put_noidle(dev);
> +	if (genpd->suspend_power_off)
>  		return 0;
> -	}
> 
>  	/*
>  	 * The PM domain must be in the GPD_STATE_ACTIVE state at this point,
> @@ -776,7 +771,6 @@ static int pm_genpd_prepare(struct device *dev)
>  		pm_runtime_enable(dev);
>  	}
> 
> -	pm_runtime_put(dev);
>  	return ret;
>  }
Rafael J. Wysocki April 27, 2016, 9:28 p.m. UTC | #4
On Tuesday, April 26, 2016 09:08:22 AM Ulf Hansson wrote:
> On 26 April 2016 at 08:47, Ulf Hansson <ulf.hansson@linaro.org> wrote:
> > The PM core increases and decreases the runtime PM usage count in the
> > system PM prepare phase. This makes some of the pm_runtime_get|put*()
> > calls in pm_gendp_prepare() redundant, so let's remove them.
> 
> Huh, I noticed I missed to update pm_gendp_prepare() to pm_genpd_prepare().
> 
> Rafael, can you amend the patch or you want me to send a v3?

No worries, I've fixed it up.

This one and the [2/2] applied, thanks!

--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 4ce4ce0..60a3573 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -730,14 +730,11 @@  static int pm_genpd_prepare(struct device *dev)
 	 * at this point and a system wakeup event should be reported if it's
 	 * set up to wake up the system from sleep states.
 	 */
-	pm_runtime_get_noresume(dev);
 	if (pm_runtime_barrier(dev) && device_may_wakeup(dev))
 		pm_wakeup_event(dev, 0);
 
-	if (pm_wakeup_pending()) {
-		pm_runtime_put(dev);
+	if (pm_wakeup_pending())
 		return -EBUSY;
-	}
 
 	if (resume_needed(dev, genpd))
 		pm_runtime_resume(dev);
@@ -751,10 +748,8 @@  static int pm_genpd_prepare(struct device *dev)
 
 	mutex_unlock(&genpd->lock);
 
-	if (genpd->suspend_power_off) {
-		pm_runtime_put_noidle(dev);
+	if (genpd->suspend_power_off)
 		return 0;
-	}
 
 	/*
 	 * The PM domain must be in the GPD_STATE_ACTIVE state at this point,
@@ -776,7 +771,6 @@  static int pm_genpd_prepare(struct device *dev)
 		pm_runtime_enable(dev);
 	}
 
-	pm_runtime_put(dev);
 	return ret;
 }