From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Linus Torvalds <torvalds@transmeta.com>
Cc: Patrick Mochel <mochel@osdl.org>,
Jeff Garzik <jgarzik@mandrakesoft.com>,
<linux-kernel@vger.kernel.org>
Subject: Re: [RFC] New Driver Model for 2.5
Date: Sat, 20 Oct 2001 11:28:34 +0200 [thread overview]
Message-ID: <20011020092834.24454@smtp.wanadoo.fr> (raw)
In-Reply-To: <Pine.LNX.4.33.0110191708220.2646-100000@penguin.transmeta.com>
In-Reply-To: <Pine.LNX.4.33.0110191708220.2646-100000@penguin.transmeta.com>
>Why?
>
>If there is some ordering inherent in the bus, that has to be shown in the
>bus structure. Why would you EVER care about order between devices that
>are independent?
The power tree layout isn't necessarily identical to the bus tree layout.
On some macs, for example, we have some ASICs that can control some other
chip's clock and power lines, without having a direct parent relationchip.
So I like having the ability to reorder the power tree layout from
arch code. But I can work around if this ability is not provided by
the struct device. In fact, my main issue here is with Apple's big
"mac-io" ASIC (combo of several devices along with various IO lines
and clocks), and I beleive I will have to handle it as a special
case anyway for other reason (it must really be shut down last as
once down, I can't even talk to the power manager chip ;) I think
all other devices I have to deal with follow the physical bus
ordering.
The problem of suspend-to-disk, which requires, I beleive, that the
device used for the memory backup, to be state-saved last, is still
a problem I don't know how to solve. Maybe using flags in the device
structure indicating it's deferred. That would cause it's parents
to be deferred as well. The presence of the flag would prevent the
actual "suspend" state to be entered during step 3. Once all devices
are suspended, we then know that the bus path to the disk used for
suspend-to-disk is still powered and perform the actual suspend-to
disk operation.
However, I beleive that requires using non-generic IO functions (as
IO queues for the controller have already been blocked by step 2, and
the driver would have to deal with it's own saved state carefuly as
it can't obviously save state to RAM after it has been used to backup
the RAM itself). Maybe that could be a separate message (suspend_to_disk)
sent instead of step 3 (suspend) to this device.
That would give us the following scenario:
- The device for suspend-to-disk is identified and a flag is set
in it's device structure. This flag (or a different one to make
things clear eventually) is "broadcast" all the way up the tree
so it's parent brigdes/controllers are marked as well.
- All devices get "suspend_prepare".
- All devices get "suspend_save_state" and block normal IOs
- All devices not marked above get "suspend"
- Last housecleaning is done by the kernel.
- The device marked above get a special "suspend_to_disk" message
during which it can perform the actual memory backup and suspend
itself.
- The machine is put to sleep.
I currently don't implement suspend-to-disks on Mac, so I may have
overlooked something. Also, I'm not too sure about the requirements
of x86 laptops regarding those features. I'm lucky, Mac laptops
keep the RAM content during suspend ;)
Note also that if not doing suspend-to-disk, I think we should also
make sure to sync all buffers after suspend_prepare and before sending
the suspend_save_state messages. I noticed that recent 2.4 versions
are more sensible about power fail during suspend (that is battery
getting empty, or whatever causing lose of RAM content). I used to
call fsync_devs(0) between those 2 steps in the Mac PM scheme, but
it appears that with recent 2.4's, this doesn't prevent fsck from
finding inconsistencies.
Ben.
next prev parent reply other threads:[~2001-10-20 9:28 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-19 23:33 Benjamin Herrenschmidt
2001-10-20 0:09 ` Linus Torvalds
2001-10-20 9:28 ` Benjamin Herrenschmidt [this message]
2001-10-21 17:09 ` Pavel Machek
2001-10-23 0:19 ` Patrick Mochel
2001-10-23 0:31 ` Alan Cox
2001-10-23 0:29 ` Patrick Mochel
2001-10-23 7:53 ` Alan Cox
2001-10-23 15:10 ` Jonathan Lundell
2001-10-23 15:49 ` Alan Cox
2001-10-23 20:22 ` Benjamin Herrenschmidt
2001-10-23 20:54 ` Alan Cox
2001-10-24 0:26 ` Benjamin Herrenschmidt
2001-10-24 9:57 ` Alan Cox
2001-10-24 10:34 ` Benjamin Herrenschmidt
2001-10-24 10:54 ` Alan Cox
2001-10-24 13:04 ` Benjamin Herrenschmidt
2001-10-24 13:25 ` Alan Cox
2001-10-24 16:19 ` Linus Torvalds
2001-10-24 16:36 ` Michael H. Warfield
2001-10-24 16:45 ` Linus Torvalds
2001-10-24 22:48 ` Alan Cox
2001-10-24 16:15 ` Linus Torvalds
2001-10-24 16:46 ` Xavier Bestel
2001-10-24 16:54 ` Patrick Mochel
2001-10-24 16:55 ` Linus Torvalds
2001-10-24 22:45 ` Alan Cox
2001-10-24 17:33 ` Benjamin Herrenschmidt
2001-10-24 22:41 ` Alan Cox
2001-10-24 22:41 ` Linus Torvalds
2001-10-25 7:58 ` Benjamin Herrenschmidt
2001-10-25 12:22 ` Alan Cox
2001-10-25 14:57 ` Benjamin Herrenschmidt
2001-10-25 8:03 ` Benjamin Herrenschmidt
2001-10-25 8:09 ` Benjamin Herrenschmidt
2001-10-25 12:20 ` Alan Cox
2001-10-25 21:47 ` Pavel Machek
2001-10-24 22:50 ` Alan Cox
2001-10-25 4:14 ` Linus Torvalds
2001-10-25 12:42 ` Alan Cox
2001-10-25 21:52 ` Xavier Bestel
2001-10-25 23:53 ` Benjamin Herrenschmidt
2001-10-25 23:53 ` Alan Cox
2001-10-26 11:35 ` Helge Hafting
2001-10-26 12:38 ` Alan Cox
2001-10-25 8:27 ` Rob Turk
2001-10-25 10:01 ` Benjamin Herrenschmidt
2001-10-25 10:02 ` Helge Hafting
2001-10-25 14:20 ` Victor Yodaiken
2001-10-25 14:44 ` Jeff Garzik
2001-10-25 14:45 ` Jeff Garzik
2001-10-25 15:22 ` Rob Turk
2001-10-25 15:44 ` Jonathan Lundell
2001-10-25 16:26 ` David Lang
2001-10-25 21:59 ` Pavel Machek
2001-10-25 21:32 ` Rob Turk
2001-10-24 17:01 ` Mike Anderson
2001-10-25 9:02 ` Eric W. Biederman
2001-10-25 9:29 ` Linus Torvalds
2001-10-25 9:47 ` Benjamin Herrenschmidt
2001-10-25 10:11 ` Eric W. Biederman
2001-10-25 10:59 ` Linus Torvalds
2001-10-24 15:18 ` Jonathan Lundell
2001-10-24 15:41 ` Linus Torvalds
2001-10-24 15:59 ` Alan Cox
2001-10-24 15:56 ` Linus Torvalds
2001-10-23 9:44 ` Pavel Machek
2001-10-23 11:03 ` Benjamin Herrenschmidt
2001-10-23 11:49 ` Benjamin Herrenschmidt
2001-10-23 10:54 ` Benjamin Herrenschmidt
-- strict thread matches above, loose matches on Subject: below --
2001-10-24 17:56 Grover, Andrew
2001-10-24 18:45 ` Benjamin Herrenschmidt
2001-10-19 21:43 Grover, Andrew
2001-10-19 17:01 Kevin Easton
2001-10-19 18:40 ` Patrick Mochel
2001-10-17 23:52 Patrick Mochel
2001-10-18 6:23 ` Jeff Garzik
2001-10-18 12:13 ` Benjamin Herrenschmidt
2001-10-18 16:19 ` Patrick Mochel
2001-10-18 17:38 ` Tim Jansen
2001-10-18 22:06 ` Benjamin Herrenschmidt
2001-10-19 17:09 ` Kai Henningsen
2001-10-18 22:10 ` Kai Henningsen
2001-10-19 18:26 ` Patrick Mochel
2001-10-19 19:02 ` Tim Jansen
2001-10-19 19:21 ` Mike Fedyk
2001-10-19 20:07 ` Tim Jansen
2001-10-19 20:24 ` Mike Fedyk
2001-10-19 22:25 ` Tim Jansen
2001-10-20 13:47 ` Kai Henningsen
2001-10-20 1:41 ` john slee
2001-10-20 13:52 ` Kai Henningsen
2001-10-22 11:02 ` Padraig Brady
2001-10-27 11:01 ` Kai Henningsen
2001-10-19 7:57 ` Henning P. Schmiedehausen
2001-10-19 8:09 ` Jeff Garzik
2001-10-19 8:31 ` Keith Owens
2001-10-19 8:43 ` Jeff Garzik
2001-10-19 18:50 ` Tim Jansen
2001-10-19 15:21 ` Taral
2001-10-19 23:30 ` Benjamin Herrenschmidt
2001-10-19 23:54 ` Benjamin Herrenschmidt
2001-10-18 15:17 ` Patrick Mochel
2001-10-18 16:08 ` Taral
2001-10-18 16:52 ` Jonathan Lundell
2001-10-18 17:38 ` Patrick Mochel
2001-10-18 17:41 ` Patrick Mochel
2001-10-18 18:28 ` Jonathan Lundell
2001-10-18 19:49 ` Patrick Mochel
2001-10-18 20:40 ` Jeff Garzik
2001-10-18 21:32 ` John Alvord
2001-10-18 22:23 ` Benjamin Herrenschmidt
2001-10-18 22:26 ` Jeff Garzik
2001-10-18 22:18 ` Benjamin Herrenschmidt
2001-10-18 23:30 ` Patrick Mochel
2001-10-18 23:44 ` Benjamin Herrenschmidt
2001-10-18 23:52 ` Jeff Garzik
2001-10-19 17:12 ` Jonathan Lundell
2001-10-18 17:05 ` Jonathan Corbet
2001-10-18 17:33 ` Patrick Mochel
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=20011020092834.24454@smtp.wanadoo.fr \
--to=benh@kernel.crashing.org \
--cc=jgarzik@mandrakesoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mochel@osdl.org \
--cc=torvalds@transmeta.com \
/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
all inboxes | Powered by JetHome®