From: Benjamin Herrenschmidt <benh-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>
To: Patrick Mochel
<mochel-og82NyAXoxR0I81aPRRTmR2eb7JE58TQ@public.gmane.org>
Cc: Linux-pm mailing list <linux-pm-qjLDD68F18O7TbgM5vRIOg@public.gmane.org>
Subject: Re: Nested suspends; messages vs. states
Date: Thu, 24 Mar 2005 10:14:15 +1100 [thread overview]
Message-ID: <1111619655.16201.98.camel@gaston> (raw)
In-Reply-To: <Pine.LNX.4.50.0503231008340.17099-100000-x8k/2hhmB0w5etPau2IXcQ@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2221 bytes --]
On Wed, 2005-03-23 at 10:20 -0800, Patrick Mochel wrote:
> I wasn't disputing that. What I was trying to say was the core could
> effectively do:
>
> for each device {
> device->suspend(); /* Stop Device */
> device->enter_state(); /* Power Down */
> }
Where is room in the above for suspend() to be the one deciding what
state to enter ? suspend() has no way to do it with your example. I'd
rather have suspend optionally call device_enter_state() itself (and not
device->enter_state if we decide to have a function pointer per state in
the state array, those won't be pointers in struct device, which is
probably better since enter_state() would end up just switch/casing on
them anyway).
> The reason I'm going down this road is because I think it could possibly
> be split into such a way like this:
>
> device->class->stop(dev, system_state);
> device->bus->save_state(dev, system_state);
> device->bus->enter_state(dev, system_state);
>
>
> The first would perform functional-level suspension - stopping current
> transactions and preventing future ones.
It's up to the driver's suspend() to do those. I would keep that policy
in there, really. I agree that a class->stop() may be useful for putting
the "common" code, but I'd rather have it seen as a "helper" that the
driver can call.
> The second would call down to the device driver and save the device
> context for the system state being entered.
>
> The third would call down to the device driver and actually enter the low
> power state.
save_state would be nop most of the time. enter_state may have to save
things too... I think the distinction between those is very academic and
makes little sense in practice.
> Functionally, this is what happens. Do you see a reason to/not to break it
> up programmatically?
Because I think it's a lot more flexible not to do it :) That is,
breaking it up _imposes_ a structure on driver that I'd rather avoid in
this case. Just let them have suspend(), that can eventually use the
state mecanism and maybe a class "stop" helper, but some drivers will
want to do tricks etc... or do things before stopping the class, you
can't even imagine now :) So I'd rather not have the core do that.
Ben.
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
next prev parent reply other threads:[~2005-03-23 23:14 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
[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 ` Benjamin Herrenschmidt [this message]
2005-03-24 1:27 ` Nested suspends; messages vs. states 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=1111619655.16201.98.camel@gaston \
--to=benh-xvmvhmargas8u2djnn8i7kb+6bgklq7r@public.gmane.org \
--cc=linux-pm-qjLDD68F18O7TbgM5vRIOg@public.gmane.org \
--cc=mochel-og82NyAXoxR0I81aPRRTmR2eb7JE58TQ@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