public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
* Nested suspends; messages vs. states
@ 2005-03-21 20:11 Alan Stern
       [not found] ` <Pine.LNX.4.44L0.0503211436020.1241-100000-3WpdWqXrU/qjv4eRiOYp3g@public.gmane.org>
  0 siblings, 1 reply; 72+ messages in thread
From: Alan Stern @ 2005-03-21 20:11 UTC (permalink / raw)
  To: Linux-pm mailing list

[-- Attachment #1: Type: TEXT/PLAIN, Size: 3162 bytes --]

Here are a couple of issues I want to raise before the next IRC session.


Nested suspends:  We know that the PM core tries to avoid increasing a
device's suspend level (i.e., FREEZE -> SUSPEND) as part of a system
sleep.  However...  The core won't have a very good idea of a device's
initial state, and a device may already be suspended when the system sleep
begins.  We have decided that devices' power states are represented by
pointers to structures defined at the bus or device level; the PM core
won't know how to interpret them.  So it won't know whether a device is
already suspended.

There's also the possibility that as part of runtime power management, a
user might tell an already-suspended device to go to a different, but
still suspended, power state.  The core can't filter out such requests
because it doesn't understand the states.  It's not even clear that such
requests _should_ be filtered out.  PM-aware PCI devices, for example,
have no trouble moving from D1 to D2.

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.  It should also be legal for the driver to
go to full power temporarily, then down to the requested power level.  In
particular, if a device is already suspended then it should be okay for
the driver to do nothing and still return Success for a FREEZE or SUSPEND
request -- and this fact should be documented.

Another way to handle this is to include a generic "low power" flag as a
standard part of the new power-state structures.  That way the core would
at least know whether a device was at full power.  (Maybe include a
"quiescent" flag too, since some devices can be operational while at low
power.)  While this isn't a bad idea, I rather favor the other approach.
of course we can always do both.


Messages vs. states:  At the moment the PM core seems to be pretty
confused over this distinction.  Right in the definition of struct
dev_pm_info we have:

	pm_message_t		power_state;

Obviously a message isn't the same thing as a state.  This looks like 
something that will need to be changed in a lot of drivers when we 
introduce the new notion of a power state.

As a corollary we have the problem of what to include in the argument
passed to a suspend callback.  It should be a message, clearly, and 
part of the message should be an indication of which state to go to.  The
question is, how is this state represented?  For device power management
we will want to provide a genuine power state (i.e., pointer to bus- or
device-specific structure).  For system power management we will want to
provide a generic code -- PMSG_ON, PMSG_FREEZE, or PMSG_SUSPEND -- which
the driver will map to a real power state.

It seems to me the best way to do this is to let pm_message_t include both
a generic code and a power-state pointer.  There should be a new code
added (PMSG_RUNTIME? or maybe PMSG_DEVICE?), meaning that the driver
should use the state pointer.  Otherwise the driver maps the generic code.

Alan Stern


[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



^ permalink raw reply	[flat|nested] 72+ messages in thread

end of thread, other threads:[~2005-03-24 20:59 UTC | newest]

Thread overview: 72+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
     [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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox