linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lina Iyer <lina.iyer@linaro.org>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Kevin Hilman <khilman@kernel.org>,
	linux-pm@vger.kernel.org, Len Brown <len.brown@intel.com>,
	Pavel Machek <pavel@ucw.cz>,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	Krzysztof Kozlowski <k.kozlowski.k@gmail.com>
Subject: Re: [PATCH 1/2] PM / Domains: Don't measure ->start|stop() latency in system PM callbacks
Date: Thu, 15 Oct 2015 14:39:45 -0600	[thread overview]
Message-ID: <20151015203945.GJ921@linaro.org> (raw)
In-Reply-To: <1444921326-22574-1-git-send-email-ulf.hansson@linaro.org>

On Thu, Oct 15 2015 at 09:02 -0600, Ulf Hansson wrote:
>Measure latency does by itself contribute to an increased latency, thus we
>should avoid it when it isn't needed.
>
>Genpd measures latencies in the system PM phase for the ->start|stop()
>callbacks and is thus affecting the system PM suspend/resume time.
>Moreover these latencies are validated only at runtime PM suspend/resume.
>
>To this reasoning, let's decide to leave these measurements out of the
>system PM phase. There should be plenty of occasions during runtime PM to
>perform these measurements anyway.
>
>Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>

Reviewed-by: Lina Iyer <lina.iyer@linaro.org>

Thanks,
Lina

>---
> drivers/base/power/domain.c | 19 ++++++++++++-------
> 1 file changed, 12 insertions(+), 7 deletions(-)
>
>diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
>index 6e1bcde..a1c3ec4 100644
>--- a/drivers/base/power/domain.c
>+++ b/drivers/base/power/domain.c
>@@ -90,8 +90,12 @@ static struct generic_pm_domain *dev_to_genpd(struct device *dev)
> 	return pd_to_genpd(dev->pm_domain);
> }
>
>-static int genpd_stop_dev(struct generic_pm_domain *genpd, struct device *dev)
>+static int genpd_stop_dev(struct generic_pm_domain *genpd, struct device *dev,
>+			bool timed)
> {
>+	if (!timed)
>+		return GENPD_DEV_CALLBACK(genpd, int, stop, dev);
>+
> 	return GENPD_DEV_TIMED_CALLBACK(genpd, int, stop, dev,
> 					stop_latency_ns, "stop");
> }
>@@ -434,7 +438,7 @@ static int pm_genpd_runtime_suspend(struct device *dev)
> 	if (ret)
> 		return ret;
>
>-	ret = genpd_stop_dev(genpd, dev);
>+	ret = genpd_stop_dev(genpd, dev, true);
> 	if (ret) {
> 		genpd_restore_dev(genpd, dev, true);
> 		return ret;
>@@ -779,7 +783,7 @@ static int pm_genpd_suspend_noirq(struct device *dev)
> 	    || (dev->power.wakeup_path && genpd_dev_active_wakeup(genpd, dev)))
> 		return 0;
>
>-	genpd_stop_dev(genpd, dev);
>+	genpd_stop_dev(genpd, dev, false);
>
> 	/*
> 	 * Since all of the "noirq" callbacks are executed sequentially, it is
>@@ -820,7 +824,7 @@ static int pm_genpd_resume_noirq(struct device *dev)
> 	pm_genpd_sync_poweron(genpd, true);
> 	genpd->suspended_count--;
>
>-	return genpd_start_dev(genpd, dev, true);
>+	return genpd_start_dev(genpd, dev, false);
> }
>
> /**
>@@ -928,7 +932,7 @@ static int pm_genpd_freeze_noirq(struct device *dev)
> 	if (IS_ERR(genpd))
> 		return -EINVAL;
>
>-	return genpd->suspend_power_off ? 0 : genpd_stop_dev(genpd, dev);
>+	return genpd->suspend_power_off ? 0 : genpd_stop_dev(genpd, dev, false);
> }
>
> /**
>@@ -948,7 +952,8 @@ static int pm_genpd_thaw_noirq(struct device *dev)
> 	if (IS_ERR(genpd))
> 		return -EINVAL;
>
>-	return genpd->suspend_power_off ? 0 : genpd_start_dev(genpd, dev, true);
>+	return genpd->suspend_power_off ?
>+		0 : genpd_start_dev(genpd, dev, false);
> }
>
> /**
>@@ -1042,7 +1047,7 @@ static int pm_genpd_restore_noirq(struct device *dev)
>
> 	pm_genpd_sync_poweron(genpd, true);
>
>-	return genpd_start_dev(genpd, dev, true);
>+	return genpd_start_dev(genpd, dev, false);
> }
>
> /**
>-- 
>1.9.1
>

  reply	other threads:[~2015-10-15 20:39 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-15 15:02 [PATCH 1/2] PM / Domains: Don't measure ->start|stop() latency in system PM callbacks Ulf Hansson
2015-10-15 20:39 ` Lina Iyer [this message]
2015-10-21 10:31 ` Pavel Machek
2015-10-21 12:47   ` Ulf Hansson
2015-10-21 23:47     ` Rafael J. Wysocki
2015-10-23 18:48 ` Kevin Hilman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151015203945.GJ921@linaro.org \
    --to=lina.iyer@linaro.org \
    --cc=geert+renesas@glider.be \
    --cc=k.kozlowski.k@gmail.com \
    --cc=khilman@kernel.org \
    --cc=len.brown@intel.com \
    --cc=linux-pm@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=rjw@rjwysocki.net \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).