From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Kyle Moffett <mrmacman_g4@mac.com>
Cc: Jeremy Maitin-Shepard <jbms@cmu.edu>,
Alan Stern <stern@rowland.harvard.edu>,
Nigel Cunningham <nigel@nigel.suspend2.net>,
nigel@suspend2.net,
Kexec Mailing List <kexec@lists.infradead.org>,
linux-kernel@vger.kernel.org,
"Eric W. Biederman" <ebiederm@xmission.com>,
"Huang, Ying" <ying.huang@intel.com>,
linux-pm@lists.linux-foundation.org,
huang ying <huang.ying.caritas@gmail.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [linux-pm] Re: [RFC][PATCH 1/2 -mm] kexec based hibernation -v3: kexec jump
Date: Sat, 22 Sep 2007 23:51:30 +0200 [thread overview]
Message-ID: <200709222351.32137.rjw@sisk.pl> (raw)
In-Reply-To: <3BCF760C-D77D-417A-809A-B20D04DD01D3@mac.com>
On Saturday, 22 September 2007 20:00, Kyle Moffett wrote:
> On Sep 22, 2007, at 06:34:17, Rafael J. Wysocki wrote:
> > On Saturday, 22 September 2007 01:19, Kyle Moffett wrote:
> >> On Sep 21, 2007, at 17:16:59, Jeremy Maitin-Shepard wrote:
> >>> "Rafael J. Wysocki" <rjw@sisk.pl> writes:
> >>>> The ACPI platform firmware is allowed to preserve information
> >>>> accross the hibernation-resume cycle, so this need not be the same.
> >>>
> >>> All of my comments related to the case where S4 is not being used
> >>> (instead the system is just powered off normally), and a boot
> >>> kernel that does not initialize ACPI is used. In that case, the
> >>> ACPI platform firmware should not be able to distinguish a normal
> >>> boot from a resume from hibernation.
> >>
> >> I think that in order for this to work, there would need to be
> >> some ABI whereby the resume-ing kernel can pass its entire ACPI
> >> state and a bunch of other ACPI-related device details to the
> >> resume-ed kernel, which I believe it does not do at the moment.
> >
> > In fact we don't need to do this.
> >
> > The solution is not to touch ACPI in the boot kernel (ie. the one
> > that loads the image) and pass control to the image kernel. This
> > is how it's supposed to work according to the spec, more or less
> > (well, there are some ugly details that need handling, like the
> > restoration of the NVS area).
>
> First of all, we will need to make the resumed kernel throw away
> *ALL* of its ACPI state on S5 and completely reinitialize ACPI as
> though it was booting for the first time on resume.
Yes, if we entered S5 in the last step of the hibernation sequence, the right
thing to do would be to make the resumed kernel reinitialize ACPI from
scratch.
> From what I can tell, we "throw away" all the ACPI state in the boot kernel
> and reinitialize it there, but then the reinitialized state is
> overwritten with the resumed kernel's state and the two don't always
> happen to be the same. (Like if a battery got replaced or AC status
> changed).
Usually it goes like that. Still, you can pass "acpi=off" to the boot kernel,
in which case it won't reinitialize ACPI.
> Umm, I don't see how that can possibly work properly. For a laptop,
> for example, the restore kernel will need to access the disk, the LCD
> display, and possibly the AC/battery and current CPU frequency. From
> what I understand of ACPI, both of the former may need ACPI code to
> operate properly (Isn't there an ATA taskfile object of some kind?)
> and the latter two almost definitely need ACPI.
Well, this is not the case on any systems that I have access to, including
two quite modern notebooks. Apparently, everything works without ACPI on
these machines.
Besides, in theory, it's possible to use an "intelligent" boot loader to read
the hibernation image and that doesn't need ACPI for anything.
> Ergo the boot kernel may need to initialize and use ACPI just to run an ATA
> taskfile so it can read from the HDD efficiently.
It is possible, but I haven't seen that yet.
> >> I believe that what causes problems is the ACPI state data that
> >> the kernel stores is *different* between identical sequential
> >> boots, especially when you add/remove/replace batteries, AC, etc.
> >
> > Rather the ACPI state data that the platform firmware stores may be
> > different, depending on whether you enter S4 or S5 during "power
> > off" and that determines the interactions between the kernel and
> > the firmware after the next boot.
>
> That's not what he was talking about. The problem discussed was:
> (A) You hibernate your box, entering S5 (IE: power off)
> (B) You resume the box and the boot kernel inits all the ACPI stuff.
> (C) The boot kernel's ACPI state is completely replaced by the
> resumed kernel's state.
> (D) Hardware stops working mysteriously because of ACPI problems.
>
> The only possible conclusion is that the state between the boot
> kernel and the resume kernel was *different* and so the device failed
> because the ACPI state in the resume kernel doesn't match the actual
> state of the hardware.
I think it's even more complicated. The ACPI state of the resumed kernel
has to match whatever is preserved by the platform.
Well, my impression is that our current ACPI resume code actually expects
the platform to preserve something and if that's missing the devices in
question are not handled properly. If that really is the case, there is the
question whether we can do something about it in a reasonable way and I can't
answer it right now.
Besides, I really think that we should use the ACPI S4 state, because machines
generally support that.
Greetings,
Rafael
next prev parent reply other threads:[~2007-09-22 21:38 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-09-20 5:34 [RFC][PATCH 1/2 -mm] kexec based hibernation -v3: kexec jump Huang, Ying
2007-09-20 10:09 ` Pavel Machek
2007-09-21 0:24 ` Nigel Cunningham
2007-09-21 1:06 ` Andrew Morton
2007-09-21 1:19 ` Nigel Cunningham
2007-09-21 1:41 ` Andrew Morton
2007-09-21 1:57 ` Nigel Cunningham
2007-09-21 2:18 ` Huang, Ying
2007-09-21 2:25 ` Nigel Cunningham
2007-09-21 2:45 ` Huang, Ying
2007-09-21 2:58 ` Nigel Cunningham
2007-09-21 4:46 ` Eric W. Biederman
2007-09-21 9:45 ` Pavel Machek
2007-09-26 20:30 ` Joseph Fannin
2007-09-26 20:52 ` Nigel Cunningham
2007-09-27 6:33 ` Huang, Ying
2007-09-27 6:35 ` Nigel Cunningham
2007-09-22 22:02 ` Alon Bar-Lev
2007-09-21 3:33 ` Eric W. Biederman
2007-09-21 12:09 ` [linux-pm] " Rafael J. Wysocki
2007-09-21 13:14 ` huang ying
2007-09-21 14:31 ` Rafael J. Wysocki
2007-09-21 15:02 ` huang ying
2007-09-21 15:50 ` Rafael J. Wysocki
2007-09-21 18:11 ` Jeremy Maitin-Shepard
2007-09-21 19:00 ` Rafael J. Wysocki
2007-09-21 19:45 ` Alan Stern
2007-09-21 20:15 ` Rafael J. Wysocki
2007-09-21 20:26 ` Jeremy Maitin-Shepard
2007-09-21 20:53 ` Rafael J. Wysocki
2007-09-21 21:08 ` Jeremy Maitin-Shepard
2007-09-21 21:25 ` Rafael J. Wysocki
2007-09-21 21:16 ` Jeremy Maitin-Shepard
2007-09-21 23:19 ` Kyle Moffett
2007-09-21 23:47 ` Nigel Cunningham
2007-09-22 10:40 ` Rafael J. Wysocki
2007-10-11 20:54 ` Pavel Machek
2007-10-24 20:38 ` Rafael J. Wysocki
2007-09-22 10:34 ` Rafael J. Wysocki
2007-09-22 18:00 ` Kyle Moffett
2007-09-22 21:51 ` Rafael J. Wysocki [this message]
2007-09-26 20:52 ` Joseph Fannin
2007-09-21 4:16 ` Andrew Morton
2007-09-21 11:56 ` Rafael J. Wysocki
2007-09-21 11:58 ` Nigel Cunningham
2007-09-21 12:18 ` Rafael J. Wysocki
2007-09-21 12:15 ` Nigel Cunningham
2007-09-21 13:25 ` huang ying
2007-09-24 17:37 ` Thomas Meyer
2007-09-21 9:49 ` Pavel Machek
2007-09-21 12:10 ` [linux-pm] " Rafael J. Wysocki
2007-09-21 2:55 ` Eric W. Biederman
2007-09-21 7:27 ` Huang, Ying
2007-09-21 4:01 ` Eric W. Biederman
2007-09-21 8:42 ` Huang, Ying
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=200709222351.32137.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=akpm@linux-foundation.org \
--cc=ebiederm@xmission.com \
--cc=huang.ying.caritas@gmail.com \
--cc=jbms@cmu.edu \
--cc=kexec@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@lists.linux-foundation.org \
--cc=mrmacman_g4@mac.com \
--cc=nigel@nigel.suspend2.net \
--cc=nigel@suspend2.net \
--cc=stern@rowland.harvard.edu \
--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