From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: david@lang.hm
Cc: LKML <linux-kernel@vger.kernel.org>,
Kyle Moffett <mrmacman_g4@mac.com>, Al Boldi <a1426z@gawab.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Pavel Machek <pavel@ucw.cz>, "Huang, Ying" <ying.huang@intel.com>,
Andrew Morton <akpm@linux-foundation.org>,
pm list <linux-pm@lists.linux-foundation.org>,
Jeremy Maitin-Shepard <jbms@cmu.edu>
Subject: Re: Hibernation considerations
Date: Tue, 17 Jul 2007 22:57:21 +0200 [thread overview]
Message-ID: <200707172257.22959.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.64.0707171302430.2467@asgard.lang.hm>
On Tuesday, 17 July 2007 22:18, david@lang.hm wrote:
> On Tue, 17 Jul 2007, Rafael J. Wysocki wrote:
>
> > On Tuesday, 17 July 2007 19:06, david@lang.hm wrote:
> >> On Tue, 17 Jul 2007, Rafael J. Wysocki wrote:
> >>
> >>> On Tuesday, 17 July 2007 17:29, david@lang.hm wrote:
> >>>> On Tue, 17 Jul 2007, Rafael J. Wysocki wrote:
> >>>>
> >>>>> On Tuesday, 17 July 2007 16:15, Alan Stern wrote:
> >>>>>> On Mon, 16 Jul 2007 david@lang.hm wrote:
> >>>>>>
> >>>>>>>> I agree, it would be good to have a non-ACPI-specific hibernation mode,
> >>>>>>>> something which would look to ACPI like a normal shutdown. But I'm not
> >>>>>>>> so sure this is possible.
> >>>>>>>
> >>>>>>> why would it not be possible?
> >>>>>>
> >>>>>>> I can't think of anything much more frustrating then thinking that I
> >>>>>>> suspended a system and then discovering that becouse the battery went dead
> >>>>>>> (a complete power loss) that the system wouldn't boot up properly. to me
> >>>>>>> this would be a fairly common condition (when I'm mobile I use the machine
> >>>>>>> until I am out of battery, then stop and it may be a long time (days)
> >>>>>>> before I can charge the thing up again) this would not be a reliable
> >>>>>>> suspend as far as I'm concerned.
> >>>>>>>
> >>>>>>> for suspend-to-ram you have to worry about ACPI states and what you are
> >>>>>>> doing with them, for suspend-to-disk you can ignore them and completely
> >>>>>>> power the system off instead.
> >>>>>>
> >>>>>> If the only problem with doing this would be lack of wakeup support
> >>>>>> then I'm all for it. There must be a lot of people who would like
> >>>>>> their computers to hibernate with power drain as close to 0 as possible
> >>>>>> and who don't care about remote wakeup. In fact they might even prefer
> >>>>>> not to have wakeup support, so the computer doesn't resume at
> >>>>>> unexpected times.
> >>>>>
> >>>>> I'm afraid of one thing, though.
> >>>>>
> >>>>> If we create a framework without ACPI (well, ACPI needs to be enabled in the
> >>>>> kernel anyway for other reasons, like the ability to suspend to RAM) and then
> >>>>> it turns out that we have to add some ACPI hooks to it, that might be difficult
> >>>>> to do cleanly.
> >>>>
> >>>> doing suspend-to-ram should be orthoginal to doing hibernate-to-disk. some
> >>>> people will want both, some won't.
> >>>>
> >>>> at the moment kexec doesn't work with ACPI, that is a limitation that
> >>>> should be fixed, but makeing it able to work with ACPI enabled doesn't
> >>>> mean that it needs to be changed to depend on ACPI and it especially
> >>>> doesn't mean that it should pick up the limitations of the existing ACPI
> >>>> based hibernation approaches.
> >>>>
> >>>> if there is no ACPI on the system it should work, if ther is ACPI on the
> >>>> system it should still work.
> >>>>
> >>>>> Thus, it seems reasonable to think of the ACPI handling in advance.
> >>>>
> >>>> but don't become dependant on ACPI.
> >>>
> >>> Not dependent, but with the possibility of ACPI support taken into account.
> >>>
> >>> Arguably you can create a framework that, for example, will not allow the user
> >>> to adjust the size of the image, but then adding such a functionality may
> >>> require you to change the entire design. Same thing with ACPI.
> >>>
> >>> I would rather avoid such pitfalls, if I could.
> >>
> >> Ok, what is it that you think ACPI fundamentally changes in this process?
> >>
> >> keep in mind that we are not makeing the assumption that the hardware
> >> will remain powered (even a little bit), or the assumption that nothing
> >> else will run on the hardware (eliminating any possibility that the
> >> hardware is in a known ACPI state)
> >
> > Well, first, the fact is that _some_ systems _will_ be powered while in
> > hibernation (the majority of notebooks, for example) and you should assume
> > that the platform _may_ retain some information accross the hibernation/restore
> > cycle. In that case you _should_ _not_ trash the information retained by the
> > platform.
>
> no, systems that remain powered while asleep are a different type of
> suspend then ones that don't.
>
> > Now, with that in mind, ACPI requires us to make the system enter the S4 sleep
> > state as a result of the hibernation procedure. In my opinion this may be done
> > after saving the image, but still this means, for example, that the
> > image-saving kernel needs to support ACPI.
> >
> > Next, during the restore, we should first check if the image is present (and
> > valid) _without_ turning ACPI on (note that this is not done by the current
> > hibernation code and that leads to strange problems on some systems). Then,
> > if the image is present (and valid), we should first load it, jump to the
> > hibernated kernel and _then_ turn ACPI on and execute the _BFS and
> > _WAK ACPI global methods (again, this is not done by the current code in that
> > order, which is wrong). Only after that is the hibernated kernel supposed to
> > continue.
> >
> > [Please refer to section 15.3 of the 3.0b ACPI spec for details.]
>
> you are starting from the assumption that ACPI S4 mode should be used.
>
> I'm saying that a suspend that uses ACPI S4 mode is fundamentally
> different from one that does a power off instead.
It is different, but not fundamentally.
> from my point of view the ACPI S4 sleep mode has far more in common with
> suspend-to-ram then with the suspend-to-disk that I'm talking about
>
> non-ACPI hibernate
>
> since the box powers off
> it uses zero power while suspended
> another OS could be run before a resume
> hardware can be swapped, suspend image could be sent around the world to be restored on another system.
> restore makes no assumptions about the state of the hardware when it is restored
> restore is slower (full BIOS boot is required)
> should be able to work on just about any hardware (the limit is the ability to initialize the devices)
>
>
> ACPI suspends
>
> since the box never completely powers off:
> a complete power failure breaks the suspend
> the OS must remain in control so other uses must be prevented.
> hardware must remain in the ACPI state from suspend until restore.
> restore can be faster (some initialization may be able to be skipped)
> requires ACPI hardware support
>
> under the catagory of ACPI suspends you have
>
> fast suspend-to-ram (stop scheduling, put the CPU to sleep, as long as
> the memory keeps getting refreshed)
> slow suspend-to-ram (stop scheduling, put as much of the hardware as
> possible to sleep, including spinning down disks and other things that
> take a while to undo)
> suspend-to-disk (stop scheduleing, copy the ram somewhere so that it
> doesn't need to be refreshed, put everything into low-power mode)
>
> and there are probably quite a few others as well. but they are all in
> the same family in that you have to worry about ACPI states, and they all
> have the same restrictions on what can happen between suspend and resume
>
> the non-ACPI hibernate behaves very differently, and for some people (and
> I think I am one of them) it will meet their needs better then _any_ of
> the ACPI suspends.
OTOH, there are many people who would want the ACPI suspends to be handled
and they don't really care for the power-off-only hibernation.
If you aren't going to support the ACPI hibernation, your framework will be
incomplete and therefore not generally useful.
Greetings,
Rafael
--
"Premature optimization is the root of all evil." - Donald Knuth
next prev parent reply other threads:[~2007-07-17 20:57 UTC|newest]
Thread overview: 110+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <Pine.LNX.4.64.0707151633240.25614@asgard.lang.hm>
2007-07-16 14:21 ` Hibernation considerations Alan Stern
2007-07-17 4:45 ` david
2007-07-17 14:15 ` Alan Stern
2007-07-17 14:40 ` Rafael J. Wysocki
[not found] ` <200707171640.39955.rjw@sisk.pl>
2007-07-17 15:29 ` david
2007-07-17 16:02 ` Rafael J. Wysocki
[not found] ` <200707171802.30903.rjw@sisk.pl>
2007-07-17 17:06 ` david
[not found] ` <Pine.LNX.4.64.0707170959160.2467@asgard.lang.hm>
2007-07-17 19:50 ` Rafael J. Wysocki
[not found] ` <200707172150.44417.rjw@sisk.pl>
2007-07-17 20:18 ` david
2007-07-17 20:39 ` Jeremy Maitin-Shepard
2007-07-17 20:57 ` Rafael J. Wysocki [this message]
2007-07-17 20:53 ` david
2007-07-17 21:37 ` Rafael J. Wysocki
[not found] ` <200707172337.24683.rjw@sisk.pl>
2007-07-17 21:42 ` david
2007-07-17 21:53 ` Jeremy Maitin-Shepard
[not found] ` <87k5syg3yi.fsf@jbms.ath.cx>
2007-07-17 20:39 ` david
2007-07-17 20:58 ` Rafael J. Wysocki
2007-07-21 10:25 ` Pavel Machek
[not found] ` <20070721102520.GE1902@elf.ucw.cz>
2007-07-21 15:35 ` Jeremy Maitin-Shepard
2007-07-21 17:56 ` Pavel Machek
[not found] ` <20070721175639.GA3701@elf.ucw.cz>
2007-07-21 19:35 ` david
2007-07-21 19:49 ` Pavel Machek
[not found] ` <20070721194906.GC3701@elf.ucw.cz>
2007-07-21 22:14 ` david
2007-08-01 16:58 ` Stefan Seyfried
2007-07-17 20:24 ` Jeremy Maitin-Shepard
2007-07-17 20:44 ` david
2007-07-17 21:00 ` Rafael J. Wysocki
2007-07-17 16:09 ` Jeremy Maitin-Shepard
2007-07-17 18:32 ` Alan Stern
[not found] ` <87hco3ypt5.fsf@jbms.ath.cx>
2007-07-17 19:54 ` Rafael J. Wysocki
2007-07-21 10:17 ` Pavel Machek
[not found] <Pine.LNX.4.44L0.0707171835560.8690-100000@iolanthe.rowland.org>
2007-07-17 22:37 ` david
2007-07-18 14:29 ` Alan Stern
2007-07-18 14:47 ` Rafael J. Wysocki
[not found] ` <200707181647.32620.rjw@sisk.pl>
2007-07-20 4:40 ` Al Boldi
[not found] ` <200707200740.38158.a1426z@gawab.com>
2007-07-20 10:59 ` Rafael J. Wysocki
[not found] <Pine.LNX.4.44L0.0707171416120.3728-100000@iolanthe.rowland.org>
2007-07-17 20:17 ` Rafael J. Wysocki
2007-07-17 20:27 ` david
2007-07-17 21:20 ` Rafael J. Wysocki
2007-07-17 22:38 ` Alan Stern
[not found] ` <200707172217.01890.rjw@sisk.pl>
2007-07-17 20:34 ` david
2007-07-17 20:54 ` Jeremy Maitin-Shepard
[not found] ` <87fy3mg39r.fsf@jbms.ath.cx>
2007-07-17 21:04 ` david
[not found] ` <200707172323.51702.rjw@sisk.pl>
2007-07-17 21:17 ` david
[not found] ` <871wf6g1q1.fsf@jbms.ath.cx>
2007-07-17 21:27 ` david
2007-07-17 21:54 ` Rafael J. Wysocki
2007-07-17 21:45 ` Rafael J. Wysocki
2007-07-17 21:27 ` Jeremy Maitin-Shepard
2007-07-17 21:43 ` Rafael J. Wysocki
2007-07-17 21:23 ` Rafael J. Wysocki
2007-07-17 20:34 ` Jeremy Maitin-Shepard
[not found] ` <87odiag45q.fsf@jbms.ath.cx>
2007-07-17 20:37 ` david
2007-07-17 20:56 ` Jeremy Maitin-Shepard
[not found] ` <87bqeag369.fsf@jbms.ath.cx>
2007-07-17 21:06 ` david
[not found] ` <Pine.LNX.4.64.0707171404330.2467@asgard.lang.hm>
2007-07-17 21:40 ` Rafael J. Wysocki
2007-07-17 21:24 ` Rafael J. Wysocki
2007-07-17 21:11 ` Rafael J. Wysocki
[not found] <Pine.LNX.4.44L0.0707161045520.3410-100000@iolanthe.rowland.org>
2007-07-16 16:51 ` Al Boldi
[not found] ` <200707161951.35225.a1426z@gawab.com>
2007-07-17 4:37 ` david
[not found] <Pine.LNX.4.44L0.0707161013440.3410-100000@iolanthe.rowland.org>
2007-07-16 15:25 ` Rafael J. Wysocki
[not found] <200707160938.16037.nigel@nigel.suspend2.net>
2007-07-16 14:15 ` Alan Stern
[not found] <Pine.LNX.4.44L0.0707151918340.30402-100000@netrider.rowland.org>
2007-07-15 23:58 ` david
2007-07-16 5:02 ` Al Boldi
[not found] ` <200707160802.46567.a1426z@gawab.com>
2007-07-16 6:49 ` david
2007-07-16 13:32 ` Al Boldi
[not found] ` <200707161632.02334.a1426z@gawab.com>
2007-07-17 4:33 ` david
2007-07-17 12:08 ` Al Boldi
[not found] ` <200707171508.06921.a1426z@gawab.com>
2007-07-17 14:18 ` Rafael J. Wysocki
2007-07-17 15:23 ` david
2007-07-16 14:53 ` Alan Stern
[not found] <Pine.LNX.4.44L0.0707151915570.28934-100000@netrider.rowland.org>
2007-07-15 23:53 ` david
2007-07-16 5:18 ` Jeremy Maitin-Shepard
[not found] <Pine.LNX.4.44L0.0707151914450.28934-100000@netrider.rowland.org>
2007-07-15 23:38 ` Nigel Cunningham
2007-07-15 23:41 ` david
[not found] <200707152040.33836.a1426z@gawab.com>
2007-07-15 23:28 ` Alan Stern
[not found] <Pine.LNX.4.44L0.0707151220570.24011-100000@netrider.rowland.org>
2007-07-15 17:40 ` Al Boldi
2007-07-15 19:52 ` david
[not found] <200707151433.34625.rjw@sisk.pl>
2007-07-15 12:51 ` Nigel Cunningham
2007-07-15 12:58 ` Dr. David Alan Gilbert
[not found] ` <200707151810.33554.a1426z@gawab.com>
2007-07-15 15:35 ` jimmy bahuleyan
2007-07-15 16:29 ` Alan Stern
[not found] ` <469A3EB9.8000304@gmail.com>
2007-07-15 17:40 ` Al Boldi
[not found] ` <469A8515.3080109@gmx.de>
2007-07-15 19:46 ` david
2007-07-15 20:13 ` david
[not found] ` <200707160047.28420.rjw@sisk.pl>
2007-07-15 22:42 ` david
2007-07-15 23:15 ` Alan Stern
2007-07-15 23:22 ` Rafael J. Wysocki
[not found] ` <200707160122.09840.rjw@sisk.pl>
2007-07-15 23:49 ` david
2007-07-16 12:06 ` Rafael J. Wysocki
2007-07-16 12:38 ` Jim Crilly
2007-07-16 15:29 ` Rafael J. Wysocki
[not found] ` <200707161729.16440.rjw@sisk.pl>
2007-07-17 4:28 ` david
2007-07-17 10:42 ` Matthew Garrett
[not found] ` <20070717104231.GA32486@srcf.ucam.org>
2007-07-17 15:19 ` david
[not found] ` <Pine.LNX.4.64.0707170818460.19248@asgard.lang.hm>
2007-07-18 2:18 ` Matthew Garrett
[not found] ` <20070718021817.GA13502@srcf.ucam.org>
2007-07-18 3:54 ` david
2007-07-18 11:10 ` Matthew Garrett
[not found] ` <20070718111016.GA18716@srcf.ucam.org>
2007-07-18 12:56 ` david
2007-07-15 22:47 ` Rafael J. Wysocki
2007-07-15 23:17 ` Alan Stern
2007-07-15 20:35 ` Cornelius Riemenschneider
[not found] ` <20070715125855.GA1737@gallifrey>
[not found] ` <200707160038.12943.rjw@sisk.pl>
2007-07-15 22:27 ` david
[not found] ` <Pine.LNX.4.64.0707151526080.25614@asgard.lang.hm>
2007-07-17 17:40 ` Dr. David Alan Gilbert
[not found] ` <20070717174044.GA11212@gallifrey>
2007-07-17 17:49 ` david
2007-07-29 6:53 ` Vojtech Pavlik
[not found] ` <20070729065352.GB17084@suse.cz>
2007-07-29 9:56 ` Rafael J. Wysocki
2007-07-15 22:38 ` Rafael J. Wysocki
2007-07-16 0:51 ` Matthew Garrett
[not found] ` <20070716005135.GB8140@srcf.ucam.org>
2007-07-16 0:51 ` david
2007-07-15 12:33 Rafael J. Wysocki
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=200707172257.22959.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=a1426z@gawab.com \
--cc=akpm@linux-foundation.org \
--cc=david@lang.hm \
--cc=ebiederm@xmission.com \
--cc=jbms@cmu.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=mrmacman_g4@mac.com \
--cc=pavel@ucw.cz \
--cc=ying.huang@intel.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