From: David Brownell <david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
To: linux-pm-qjLDD68F18O7TbgM5vRIOg@public.gmane.org
Subject: Re: Nested suspends; messages vs. states
Date: Wed, 23 Mar 2005 10:58:54 -0800 [thread overview]
Message-ID: <200503231058.54311.david-b@pacbell.net> (raw)
In-Reply-To: <1111465290.27490.34.camel@gaston>
[-- Attachment #1: Type: text/plain, Size: 4179 bytes --]
On Monday 21 March 2005 8:21 pm, Benjamin Herrenschmidt wrote:
>
> Yup, the model we are desinging now should allow for arbitrary
> transitions I suppose as long as the target state is legal vs. the
> dependencies.
Leading to the question: how are the dependencies identified and
enforced?
My current thought is that it's wrong to expect the PM core code to
do all this. Discussion on this list strongly suggests to me that
we'll never achieve a Grand Unified Theory of PM into which every
device, bus, platform, and board will fit ... unless we give up
on the notion that _everything_ be centrally controlled. The key
will be having good ways to delegate all the important issues.
So for example it would make sense to have device suspend() logic
verify any dependencies for the target state, and then just fail
cleanly if they're not satisfied.
That'll mostly be an issue for bridge drivers ... like PCI
bridges, host adapters for things like USB, hubs, and so on.
But it also shows a way to handle custom hardware, which may
not be as regular as the PC and server centric developers want
the world to be...
> > The simplest way of handling this is to allow explicitly for such
> > possibilities. When a device is asked to go from a very-low-power state
> > to a slightly-low-power state, it should be legal for the driver to leave
> > it in the very-low-power state.
>
> Well... I'm not sure about that one. If the power states represent some
> performance states, the system may want to raise the performance a bit
> at the expensve of power and would stay low perf unless a full
> transition to state "full on" is done ?
>
> I suspect it's a per driver responsibility here. I suppose common sense
> will dicate what can be allowed and what not.
I'm happy with per-driver responsibilities. Less so with the notion
of conflating power states and performance modes; they seem a bit more
orthogonal to me.
On the other hand, I've also described the role of a driver suspend()
call as just picking one of potentially many device power states that
are compatible with the target (system) state, and I think there's
common ground there. If the "very low" device power state is compatible,
nobody should care ... because the request to the driver should have been
"become compatible with this system power state", and only in unusual
cases (sysfs requests) "go into this device power state".
So, two types of request to drivers then. The main one would be to
become compatible with a given system power state; flexible. The
inflexible one would be to go into a specific device power state.
> One thing that is important if we deal with partial suspend and tree
> dependencies is the ordering...
>
> When a device is asked to enter a given state, the dependencies of the
> childs has to be checked in a different order if we are going to lower
> power than if we are going to higher power.
>
> If going to lower power (that is toward suspend), we must check the
> dependencies of childs and eventually low-power them before the parent
> is actually state changed.
>
> If going to higher power, it is the opposite.
The handful of drivers that deal with dependencies can be responsible
for that ordering. They should be able to delegate much of the work
to PM core code (else why have a PM core?).
> So I think we need to have the states in some sort of order at least so
> the core has a notion of what is "lower" and what is "higher" power to
> deal with that. Though I suppose we could also have optional hooks in
> driver (pre-parent-change and post-parent-change) for driver who want to
> be sneaky, but that gets nasty and complicated.
I suspect that having all device states in some sort of order like that
is a problem isomorphic with the Grand Unified Theory of PM, which I
said we shouldn't try to derive.
If the drivers that deal with dependencies -- "bridge" drivers, for
now -- can tell the PM core what to do with a given device (before
me, after me, skip it) the PM core could just ask those bridge drivers
to build a list, then walk the list issuing the right calls. Instead
of having a single global list, build it on demand.
- Dave
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2005-03-23 18:58 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-21 20:11 Nested suspends; messages vs. states Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503211436020.1241-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-21 20:20 ` Pavel Machek
[not found] ` <20050321202016.GI1390-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-21 21:14 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503211613010.2329-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-21 22:26 ` Pavel Machek
[not found] ` <20050321222609.GK1390-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-22 3:08 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503212140450.28689-100000-pYrvlCTfrz9XsRXLowluHWD2FQJk+8+b@public.gmane.org>
2005-03-22 11:08 ` Pavel Machek
[not found] ` <20050322110802.GA1751-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-22 17:24 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503221216430.954-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-23 23:49 ` Benjamin Herrenschmidt
2005-03-23 18:32 ` David Brownell
[not found] ` <200503231032.36164.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-23 21:00 ` Pavel Machek
2005-03-22 4:21 ` Benjamin Herrenschmidt
2005-03-22 17:04 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503221143460.954-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-22 23:36 ` Benjamin Herrenschmidt
2005-03-23 1:17 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503221709080.16154-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-23 19:02 ` David Brownell
[not found] ` <200503231102.27137.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-23 20:36 ` Nigel Cunningham
2005-03-23 21:08 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503231544550.631-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-24 2:35 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503231827310.15119-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 17:03 ` Alan Stern
[not found] ` <Pine.LNX.4.44L0.0503241149000.1345-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
2005-03-24 17:13 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503240904570.13683-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 17:46 ` David Brownell
2005-03-24 17:51 ` Patrick Mochel
2005-03-24 19:27 ` Alan Stern
2005-03-23 18:58 ` David Brownell [this message]
[not found] ` <200503231058.54311.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-23 19:37 ` Jordan Crouse
[not found] ` <20050323123725.201d8a67-aftB2sG12IhaqnLngUycEA@public.gmane.org>
2005-03-24 5:16 ` David Brownell
2005-03-23 23:24 ` Benjamin Herrenschmidt
2005-03-24 2:45 ` David Brownell
[not found] ` <200503231845.55392.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-24 5:03 ` Benjamin Herrenschmidt
2005-03-24 5:27 ` David Brownell
[not found] ` <200503232127.19576.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-24 6:02 ` Benjamin Herrenschmidt
2005-03-24 6:31 ` David Brownell
[not found] ` <200503232231.00561.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-24 6:36 ` Benjamin Herrenschmidt
2005-03-24 7:46 ` David Brownell
2005-03-23 0:52 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503221635130.16154-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-23 1:21 ` Benjamin Herrenschmidt
2005-03-23 1:46 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503221724550.16154-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-23 3:31 ` Benjamin Herrenschmidt
2005-03-23 18:20 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503231008340.17099-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-23 21:02 ` Pavel Machek
[not found] ` <20050323210204.GE30704-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-23 21:35 ` Nigel Cunningham
[not found] ` <1111613750.14853.117.camel-r49W/1Cwd2ff0s6lnCXPX/uOuaPYTxhvJwvTLr3MMZM@public.gmane.org>
2005-03-23 21:54 ` Pavel Machek
[not found] ` <20050323215416.GK30704-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-24 2:40 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503231838570.15119-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 3:16 ` Nigel Cunningham
[not found] ` <1111634182.3430.1.camel-r49W/1Cwd2ff0s6lnCXPX/uOuaPYTxhvJwvTLr3MMZM@public.gmane.org>
2005-03-24 8:19 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503240017460.15119-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 10:01 ` CPU local things [was Re: Nested suspends; messages vs. states] Pavel Machek
[not found] ` <20050324100153.GE1354-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-24 15:59 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503240749030.24692-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 17:14 ` Nathan Lynch
2005-03-24 20:59 ` Nigel Cunningham
2005-03-23 23:14 ` Nested suspends; messages vs. states Benjamin Herrenschmidt
2005-03-24 1:27 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503231724100.15119-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 9:59 ` Pavel Machek
[not found] ` <20050324095910.GD1354-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-03-24 15:48 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503240746290.24692-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 16:38 ` David Brownell
[not found] ` <200503240838.37628.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-24 17:00 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503240858200.13683-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 17:33 ` David Brownell
[not found] ` <200503240933.49123.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-24 17:41 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503240937150.13683-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 18:08 ` David Brownell
2005-03-24 1:41 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503231727220.15119-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 2:22 ` Benjamin Herrenschmidt
2005-03-24 2:05 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503231742090.15119-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 2:29 ` Benjamin Herrenschmidt
2005-03-24 5:02 ` David Brownell
[not found] ` <200503232102.51132.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-24 5:14 ` Benjamin Herrenschmidt
2005-03-24 5:31 ` David Brownell
2005-03-24 8:16 ` Patrick Mochel
2005-03-23 19:06 ` David Brownell
[not found] ` <200503231106.03160.david-b-yBeKhBN/0LDR7s880joybQ@public.gmane.org>
2005-03-23 20:29 ` Nigel Cunningham
[not found] ` <1111609769.14853.104.camel-r49W/1Cwd2ff0s6lnCXPX/uOuaPYTxhvJwvTLr3MMZM@public.gmane.org>
2005-03-23 20:55 ` David Brownell
2005-03-23 21:18 ` Alan Stern
2005-03-24 2:13 ` Patrick Mochel
[not found] ` <Pine.LNX.4.50.0503231810400.15119-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
2005-03-24 2:52 ` David Brownell
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=200503231058.54311.david-b@pacbell.net \
--to=david-b-ybekhbn/0ldr7s880joybq@public.gmane.org \
--cc=linux-pm-qjLDD68F18O7TbgM5vRIOg@public.gmane.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