From: Mayuresh Kulkarni <mkulkarni@nvidia.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: "linux-pm@vger.kernel.org" <linux-pm@vger.kernel.org>,
"len.brown@intel.com" <len.brown@intel.com>,
"pavel@ucw.cz" <pavel@ucw.cz>, "rjw@sisk.pl" <rjw@sisk.pl>,
Peter De Schrijver <pdeschrijver@nvidia.com>,
Mayuresh Kulkarni <mkulkarni@nvidia.com>
Subject: Re: [PATCH] PM/domains: add delayed power off capability
Date: Tue, 12 Mar 2013 20:26:08 +0530 [thread overview]
Message-ID: <513F4208.4040207@nvidia.com> (raw)
In-Reply-To: <20130312134913.GD3514@kroah.com>
On Tuesday 12 March 2013 07:19 PM, Greg KH wrote:
> On Tue, Mar 12, 2013 at 02:19:19PM +0530, Mayuresh Kulkarni wrote:
>> - this commit adds a capability to delay the powering off
>> of the domain
>
> Why?
>
- As I mentioned below (sorry for mentioning below rather than at
start), powering off a domain means the context save needs to be done &&
it needs to be restored during power on.
- It often observed that saving and restoring of context is expensive in
terms of power consumed as well as overall system response.
>> - callers can use pm_genpd_set_poweroff_delay to set the
>> power off delay for a domain
>
> Why?
>
So, the idea is to delay the powering off a domain to some time in
future with the anticipation that the domain would be really needed
(starting from now till power off delay).
>> - it expects the delay in milli-seconds
>
> Why?
>
For Tegra we found that a delay in terms of milli-seconds is good in
terms of power as well as system response.
>> - it also adds a pm_notifier per pm domain which cancels
>> the delayed power off work when system suspend is invoked
>
> Why?
>
- This patch uses pm_wq which is freezable during system suspend.
- It is observed that sometimes the work queued *before* system suspend
is never canceled before system suspend is invoked. As a result, the
pm_wq gets frozen and work is scheduled after the system resumes causing
unwanted issues (like messed up ref-counts etc).
- So, I wanted a notification which tells that system suspend is invoked
&& it happens *before* work queue is frozen. Hence, I used the
pm_notifier which is executed before freeze of work queue to cancel any
pending work associated for a domain which implements delayed power off.
> Come on, please tell us why something is needed and not what it does in
> a changelog comment.
>
>> Signed-off-by: Mayuresh Kulkarni <mkulkarni@nvidia.com>
>> ---
>>
>> - The idea here is to avoid the powering off of a domain if use cases causes
>> it to turn on within specific time in coming future
>
> What use case?
- We use this concept in downstream kernel for Tegra and have observed
that delayed power off reduces the number of oscillations between
on->off->on of a domain.
- A typical use case could be boot-Android-to-home-screen. This helps to
reduces the 3d power partition turning on->off->on when user space is
waiting for something other than 3d && it needs to use 3d after it gets
that event.
- The delayed used here has to be tuned by someone who is working on
power optimization for the various use cases.
>
>> - This seems to save power and better response by avoiding context save/restore
>> which are heavy operations in most of the cases
>
> Now these four lines are bit better, why are you hiding it down here?
>
> Who is going to use this code? Where is those callers? We don't add
> new infrastructure without in-kernel users, unless there is a very good
> reason.
>
- The downstream kernel has a graphics-host (host1x) driver which has a
home grown power management framework called ACM
(auto-clock-management). We implement both delayed clock and power
partition off functionality in it.
- With preliminary host1x driver getting up-stream, the next logical
step for us is to add power management feature(s) to it. However, the
home grown ACM framework will not be acceptable upstream when runtime pm
(for clock management) & pm domain (power partition management) are
available to do the same tasks.
- The runtime pm supports auto-suspend concept so we exploit it to
implement delayed clock off. However, pm domain doesn't have concept of
delayed power off. And hence this patch adds this functionality.
- Having said that, there is no in-kernel component that uses this API
as of now. But we anticipate that it will have one in near future,
at-least for Tegra (specifically host1x driver).
> greg k-h
>
P.S.: All the above information is available in Tegra TRM and
http://nv-tegra.nvidia.com/gitweb/?p=linux-2.6.git;a=summary (public git
repository for NV released kernels).
next prev parent reply other threads:[~2013-03-12 14:55 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-12 8:49 [PATCH] PM/domains: add delayed power off capability Mayuresh Kulkarni
2013-03-12 13:49 ` Greg KH
2013-03-12 14:56 ` Mayuresh Kulkarni [this message]
2013-03-12 15:19 ` Greg KH
2013-03-12 15:24 ` Peter De Schrijver
2013-03-12 15:44 ` Greg KH
2013-03-13 19:27 ` Kevin Hilman
2013-03-14 8:59 ` Peter De Schrijver
2013-03-14 14:12 ` Mayuresh Kulkarni
2013-03-15 18:04 ` Kevin Hilman
2013-03-18 10:07 ` Peter De Schrijver
2013-03-22 16:58 ` Kevin Hilman
2013-03-14 14:59 ` Alan Stern
-- strict thread matches above, loose matches on Subject: below --
2013-03-11 15:50 Mayuresh Kulkarni
[not found] ` <1363017028-16164-1-git-send-email-mkulkarni-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-03-11 17:47 ` Stephen Warren
2013-03-12 14:29 ` Peter De Schrijver
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=513F4208.4040207@nvidia.com \
--to=mkulkarni@nvidia.com \
--cc=gregkh@linuxfoundation.org \
--cc=len.brown@intel.com \
--cc=linux-pm@vger.kernel.org \
--cc=pavel@ucw.cz \
--cc=pdeschrijver@nvidia.com \
--cc=rjw@sisk.pl \
/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.