public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Linux-pm mailing list <linux-pm@lists.linux-foundation.org>,
	huang ying <huang.ying.caritas@gmail.com>
Subject: Re: Re: [RFC][PATCH 1/2 -mm] kexec based hibernation -v3: kexec jump
Date: Fri, 21 Sep 2007 17:27:34 +0200	[thread overview]
Message-ID: <200709211727.34867.rjw@sisk.pl> (raw)
In-Reply-To: <Pine.LNX.4.44L0.0709211040201.4167-100000@iolanthe.rowland.org>

On Friday, 21 September 2007 16:45, Alan Stern wrote:
> [CC: list trimmed]
> 
> On Fri, 21 Sep 2007, Rafael J. Wysocki wrote:
> 
> > Well, the problem is that apparently some systems (eg. my HP nx6325) expect us
> > to execute the _PTS ACPI global control method before creating the image _and_
> > to execute acpi_enter_sleep_state(ACPI_STATE_S4) in order to finally put the
> > system into the sleep state.  In particular, on nx6325, if we don't do that,
> > then after the restore the status of the AC power will not be reported
> > correctly (and if you replace the battery while in the sleep state, the
> > battery status will not be updated correctly after the restore).  Similar
> > issues have been reported for other machines.
> > 
> > Now, the ACPI specification requires us to put devices into low power states
> > before executing _PTS and that's exactly what we're doing before a suspend to
> > RAM.  Thus, it seems that in general we need to do the same for hibernation on
> > ACPI systems.
> 
> I'm confused.  You seem to be saying that for hibernation the required 
> sequence of steps is:
> 
> 	1. Put devices into low-power states
> 	2. Execute _PTS method
> 	3. Create and write out the image
> 	4. Execute acpi_enter_sleep_state()
> 
> Am I missing something -- a step to put devices back in their 
> full-power states before writing out the image?  After all, you can't 
> write an image if the disk drive isn't at full power.

Well, of course we put devices into the full power states in order to create
the image and we put them back into low power states (or switch them off,
depending on the kernel version) before executing
acpi_enter_sleep_state(ACPI_STATE_S4).

However, all of that seems to be irrelevant for the above problem.  Namely, it
follows from my tests that if we don't execute _PTS before creating the image
or we don't use acpi_enter_sleep_state(ACPI_STATE_S4) to finally go to sleep,
the system will be semi-functional after the restore and the steps done in
between don't actually matter.

> Also, how exactly does this conflict with the requirements of the 
> kexec-based approach?

I'm not sure whether or not this really conflicts with them, but the point is
that if we have to put devices into low power states before executing _PTS,
which is exactly what we do before a suspend to RAM, then separate
hibernation methods for device drivers are not needed (*).

> At what point in the above sequence would the kexec call be made?

I think that kexec would have to be made after executing _PTS and
acpi_enter_sleep_state(ACPI_STATE_S4) would have to be called by the
image-saving kernel.

However, I think that what we really should be doing is to:

1) put devices into low power states
2) execute _PTS
3) create the image
4) resume _only_ those devices that are needed to save the image
5) save the image
6) finalize the transition to the sleep state

(please note that I've omitted some details, like the handling of the nonboot
CPUs etc., which are difficult by themselves, but don't seem to be relevant
here).

(*) I think we'll need some hibernation-specific methods in order to carry out
step 4) above, ie. to resume devices needed for saving the image.

Greetings,
Rafael

  reply	other threads:[~2007-09-21 15:27 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1190266447.21818.17.camel@caritas-dev.intel.com>
2007-09-20 10:09 ` [RFC][PATCH 1/2 -mm] kexec based hibernation -v3: kexec jump Pavel Machek
     [not found] ` <20070920100941.GA12157@atrey.karlin.mff.cuni.cz>
2007-09-21  0:24   ` Nigel Cunningham
     [not found]   ` <200709211024.35991.nigel@nigel.suspend2.net>
2007-09-21  1:06     ` Andrew Morton
2007-09-21  1:19       ` Nigel Cunningham
     [not found]       ` <200709211120.00448.ncunningham@crca.org.au>
2007-09-21  1:41         ` Andrew Morton
     [not found]         ` <20070920184106.79e1858a.akpm@linux-foundation.org>
2007-09-21  1:57           ` Nigel Cunningham
     [not found]           ` <200709211157.28622.nigel@nigel.suspend2.net>
2007-09-21  2:18             ` Huang, Ying
     [not found]             ` <1190341137.21818.52.camel@caritas-dev.intel.com>
2007-09-21  2:25               ` Nigel Cunningham
     [not found]               ` <200709211225.25874.nigel@nigel.suspend2.net>
2007-09-21  2:45                 ` Huang, Ying
     [not found]                 ` <1190342757.21818.75.camel@caritas-dev.intel.com>
2007-09-21  2:58                   ` Nigel Cunningham
     [not found]                   ` <200709211259.00195.nigel@nigel.suspend2.net>
2007-09-21  4:46                     ` Eric W. Biederman
     [not found]                     ` <m1r6ksiq27.fsf@ebiederm.dsl.xmission.com>
2007-09-21  9:45                       ` Pavel Machek
     [not found]                       ` <20070921094512.GA20149@elf.ucw.cz>
2007-09-26 20:30                         ` Joseph Fannin
     [not found]                         ` <20070926203036.GF31759@nineveh.local>
2007-09-26 20:52                           ` Nigel Cunningham
2007-09-27  6:33                           ` Huang, Ying
     [not found]                           ` <1190874834.21818.300.camel@caritas-dev.intel.com>
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  4:16             ` Andrew Morton
     [not found]             ` <m18x70ofp3.fsf@ebiederm.dsl.xmission.com>
2007-09-21 12:09               ` Rafael J. Wysocki
     [not found]               ` <200709211409.25008.rjw@sisk.pl>
2007-09-21 13:14                 ` huang ying
     [not found]                 ` <851fc09e0709210614q33cf3c81u1441fda17a66a6fd@mail.gmail.com>
2007-09-21 14:31                   ` Rafael J. Wysocki
     [not found]                   ` <200709211631.19130.rjw@sisk.pl>
2007-09-21 14:45                     ` Alan Stern
2007-09-21 15:27                       ` Rafael J. Wysocki [this message]
2007-09-21 15:02                     ` huang ying
     [not found]                     ` <851fc09e0709210802o3be2789s8e93410fa07f7066@mail.gmail.com>
2007-09-21 15:50                       ` Rafael J. Wysocki
2007-09-21 18:11                     ` Jeremy Maitin-Shepard
     [not found]                     ` <87sl576g8q.fsf@jbms.ath.cx>
2007-09-21 19:00                       ` Rafael J. Wysocki
2007-09-21 19:45                         ` Alan Stern
2007-09-21 11:56           ` Rafael J. Wysocki
     [not found]           ` <200709211356.30291.rjw@sisk.pl>
2007-09-21 11:58             ` Nigel Cunningham
2007-09-21 13:25             ` huang ying
2007-09-24 17:37       ` Thomas Meyer
2007-09-21  9:49     ` Pavel Machek
     [not found]     ` <20070921094908.GB20149@elf.ucw.cz>
2007-09-21 12:10       ` Rafael J. Wysocki
2007-09-21  2:55 ` Eric W. Biederman
2007-09-21  4:01 ` Eric W. Biederman
     [not found] ` <m1fy18sp5c.fsf@ebiederm.dsl.xmission.com>
2007-09-21  7:27   ` Huang, Ying
     [not found] ` <m1y7f0k6p4.fsf@ebiederm.dsl.xmission.com>
2007-09-21  8:42   ` Huang, Ying
     [not found] ` <200709212158.50538.nigel@nigel.suspend2.net>
     [not found]   ` <200709211418.20358.rjw@sisk.pl>
2007-09-21 12:15     ` Nigel Cunningham
2007-09-21 12:18   ` Rafael J. Wysocki
     [not found] <Pine.LNX.4.44L0.0709211540100.5816-100000@iolanthe.rowland.org>
2007-09-21 20:15 ` Rafael J. Wysocki
     [not found] ` <200709212215.26978.rjw@sisk.pl>
2007-09-21 20:26   ` Jeremy Maitin-Shepard
     [not found]   ` <87hcln69zv.fsf@jbms.ath.cx>
2007-09-21 20:53     ` Rafael J. Wysocki
     [not found]     ` <200709212253.02158.rjw@sisk.pl>
2007-09-21 21:08       ` Jeremy Maitin-Shepard
     [not found]       ` <87d4wb680u.fsf@jbms.ath.cx>
     [not found]         ` <200709212325.39599.rjw@sisk.pl>
2007-09-21 21:16           ` Jeremy Maitin-Shepard
     [not found]           ` <878x6z67n8.fsf@jbms.ath.cx>
2007-09-21 23:19             ` Kyle Moffett
     [not found]             ` <BF08447B-234F-4851-89BF-92A57EA801C6@mac.com>
2007-09-21 23:47               ` Nigel Cunningham
2007-09-22 10:34               ` Rafael J. Wysocki
     [not found]               ` <200709220947.58872.nigel@nigel.suspend2.net>
2007-09-22 10:40                 ` Rafael J. Wysocki
     [not found]                 ` <200709221240.25614.rjw@sisk.pl>
2007-10-11 20:54                   ` Pavel Machek
     [not found]                   ` <20071011205445.GA3975@ucw.cz>
2007-10-24 20:38                     ` Rafael J. Wysocki
     [not found]               ` <200709221234.18426.rjw@sisk.pl>
2007-09-22 18:00                 ` Kyle Moffett
     [not found]                 ` <3BCF760C-D77D-417A-809A-B20D04DD01D3@mac.com>
2007-09-22 21:51                   ` Rafael J. Wysocki
     [not found]                   ` <200709222351.32137.rjw@sisk.pl>
2007-09-26 20:52                     ` Joseph Fannin
2007-09-21 21:25         ` 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=200709211727.34867.rjw@sisk.pl \
    --to=rjw@sisk.pl \
    --cc=huang.ying.caritas@gmail.com \
    --cc=linux-pm@lists.linux-foundation.org \
    --cc=stern@rowland.harvard.edu \
    /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