From: Kevin Hilman <khilman@baylibre.com>
To: Ulf Hansson <ulf.hansson@linaro.org>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
linux-pm@vger.kernel.org, Len Brown <len.brown@intel.com>,
Pavel Machek <pavel@ucw.cz>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Lina Iyer <lina.iyer@linaro.org>,
Axel Haslam <ahaslam@baylibre.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Jon Hunter <jonathanh@nvidia.com>,
Andy Gross <andy.gross@linaro.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: [PATCH 4/4] PM / Runtime: Defer resuming of the device in pm_runtime_force_resume()
Date: Mon, 23 May 2016 16:15:07 -0700 [thread overview]
Message-ID: <m2iny4icxw.fsf@baylibre.com> (raw)
In-Reply-To: <1463485296-22742-5-git-send-email-ulf.hansson@linaro.org> (Ulf Hansson's message of "Tue, 17 May 2016 13:41:36 +0200")
Ulf Hansson <ulf.hansson@linaro.org> writes:
> When the pm_runtime_force_suspend|resume() helpers were invented, we still
> had CONFIG_PM_RUNTIME and CONFIG_PM_SLEEP as separate Kconfig options.
>
> To make sure these helpers worked for all combinations and without
> introducing too much of complexity, the device was always resumed in
> pm_runtime_force_resume().
>
> More precisely, when CONFIG_PM_SLEEP was set and CONFIG_PM_RUNTIME was
> unset, we needed to resume the device as the subsystem/driver couldn't
> rely on using runtime PM to do it.
>
> As the CONFIG_PM_RUNTIME option was merged into CONFIG_PM a while ago, it
> removed this combination, of using CONFIG_PM_SLEEP without the earlier
> CONFIG_PM_RUNTIME.
>
> For this reason we can now rely on the subsystem/driver to use runtime PM
> to resume the device, instead of forcing that to be done in all cases. In
> other words, let's defer this to a later point when it's actually needed.
s/this/the runtime resume/
>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> ---
> drivers/base/power/runtime.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/base/power/runtime.c b/drivers/base/power/runtime.c
> index 09e4eb1..1db7b46 100644
> --- a/drivers/base/power/runtime.c
> +++ b/drivers/base/power/runtime.c
> @@ -1509,6 +1509,17 @@ int pm_runtime_force_resume(struct device *dev)
> if (!pm_runtime_status_suspended(dev))
> goto out;
>
> + /*
> + * The PM core increases the runtime PM usage count in the system PM
> + * prepare phase. If the count is greather than 1 at this point, someone
s/greather/greater/
> + * else has also increased it. In that case, invoke the runtime resume
> + * callback for the device as that is likely what is expected. In other
Instead of "someone else..."
...a real user (such as a driver or subsystem) has also increased it,
indicating that the device was active (RPM_ACTIVE) when system suspend
was invoked. Since the device was active on suspend, it's expected to
be used on resume as well, so invoke runtime resume for that device
ensuring that it is RPM_ACTIVE during system resume.
Kevin
> + * case we trust the subsystem/driver to runtime resume the device when
> + * it's actually needed.
> + */
> + if (atomic_read(&dev->power.usage_count) < 2)
> + goto out;
> +
> ret = pm_runtime_set_active(dev);
> if (ret)
> goto out;
next prev parent reply other threads:[~2016-05-23 23:15 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-17 11:41 [PATCH 0/4] PM / Domains / Runtime: Optimize device system PM when using genpd Ulf Hansson
2016-05-17 11:41 ` [PATCH 1/4] PM / Domains: Remove redundant call to pm_request_idle() in genpd Ulf Hansson
2016-05-23 21:25 ` Kevin Hilman
2016-05-24 6:19 ` Ulf Hansson
2016-05-17 11:41 ` [PATCH 2/4] PM / Runtime: Prevent re-resuming devices in pm_runtime_force_resume() Ulf Hansson
2016-05-23 21:30 ` Kevin Hilman
2016-05-24 6:30 ` Ulf Hansson
2016-05-24 18:31 ` Kevin Hilman
2016-05-17 11:41 ` [PATCH 3/4] PM / Domains: Allow runtime PM during system PM phases Ulf Hansson
2016-05-23 23:06 ` Kevin Hilman
2016-05-24 6:40 ` Ulf Hansson
2016-05-17 11:41 ` [PATCH 4/4] PM / Runtime: Defer resuming of the device in pm_runtime_force_resume() Ulf Hansson
2016-05-23 23:15 ` Kevin Hilman [this message]
2016-05-24 6:51 ` Ulf Hansson
2016-05-24 18:34 ` Kevin Hilman
2016-06-28 16:26 ` Geert Uytterhoeven
2016-06-29 0:26 ` Rafael J. Wysocki
2016-06-29 17:30 ` Ulf Hansson
2016-07-04 13:57 ` Geert Uytterhoeven
2016-06-30 22:40 ` Kevin Hilman
2016-07-04 13:53 ` Geert Uytterhoeven
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=m2iny4icxw.fsf@baylibre.com \
--to=khilman@baylibre.com \
--cc=ahaslam@baylibre.com \
--cc=andy.gross@linaro.org \
--cc=geert+renesas@glider.be \
--cc=jonathanh@nvidia.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=len.brown@intel.com \
--cc=lina.iyer@linaro.org \
--cc=linux-pm@vger.kernel.org \
--cc=m.szyprowski@samsung.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.