Re: Hibernation considerations

Rafael J. Wysocki
2007-07-16T12:06:27Z

On Monday, 16 July 2007 01:49, david@lang.hm wrote:
> On Mon, 16 Jul 2007, Rafael J. Wysocki wrote:
>
> > On Monday, 16 July 2007 00:42, david@lang.hm wrote:
> >> On Mon, 16 Jul 2007, Rafael J. Wysocki wrote:
> >>
> >>> On Sunday, 15 July 2007 22:13, david@lang.hm wrote:
> >>>> On Sun, 15 Jul 2007, Rafael J. Wysocki wrote:
> >>>>
> >>>>> The ACPI specification requires us to invoke some global ACPI methods
> >>>>> during the hibernation and during the restore. Moreover, the ordering of
> >>>>> code related to these ACPI methods may not be arbitrary (eg. some of
> >>>>> them have to be executed after devices are put into low power states etc.).
> >>>>
> >>>> for a pure hibernate mode, you will be powering off the box after saving
> >>>> the suspend image. why are there any special ACPI modes involved?
> >>>
> >>> Because, for example, on my machine the status of power supply (present
> >>> vs not present) is not updated correctly after the restore if ACPI callbacks
> >>> aren't used during the hibernation. That's just experience and it's in line
> >>> with the ACPI spec.
> >>
> >> so if a machine is actually powered off the /dev/suspend process won't
> >> work?
> >
> > No, it sort of works as usual, but after the restore the platform is not in the
> > correct state.
>
> this is not hibernate as I and many others are thinking of it.
>
> hibernate as we are thinking would work on basicly any hardware, including
> things with no ACPI or power savings support. and the system could be in
> hibernate mode for any time period.
>
> for that matter, after a system is put into hibernate mode the system
> could be completely disassembled and any components replaced and the
> system would work after a resume (assuming you still have access to the
> suspend image)

Well, this is not how ACPI defines the S4 sleep state. If the system is in
S4, that corresponds to our hibernation, you are _not_ allowed to disassemble
it.

I've just done an experiment on my test desktop. I had enabled suspend support
in the CMOS setup and afterwards I made Linux hibernate in the "platform" mode.
Then, when the system was powred on, the BIOS showed me a nice "Resume from
hibernation" screen that is not normally displayed during boot. This clearly
means that some information has been preserved by the platform across the
hibernate/restore cycle. We are supposed to handle that.

Greetngs,
Rafael

--
"Premature optimization is the root of all evil." - Donald Knuth