[linux-pm] [PATCH -mm 2/2] kexec jump -v11: save/restore device state
Huang, Ying
ying.huang at intel.com
Wed Jun 11 05:46:24 EDT 2008
On Wed, 2008-06-11 at 04:21 -0400, Len Brown wrote:
> On Wed, 11 Jun 2008, Huang, Ying wrote:
> > On Tue, 2008-06-10 at 14:01 -0400, Len Brown wrote:
> > >
> > > On Tue, 10 Jun 2008, Huang, Ying wrote:
> > >
> > > > This patch implements devices state save/restore before after kexec.
> > > >
> > > >
> > > > This patch together with features in kexec_jump patch can be used for
> > > > following:
> > > >
> > > > - A simple hibernation implementation without ACPI support. You can
> > > > kexec a hibernating kernel, save the memory image of original system
> > > > and shutdown the system. When resuming, you restore the memory image
> > > > of original system via ordinary kexec load then jump back.
> > >
> > > What part of ACPI's role in hibernation are you trying to avoid
> > > 1. enabling wake devices
> > > 2. removing power from the system
> > > 3. something else?
> >
> > ACPI S5 is used instead of S4 for this simple hibernation
> > implementation. That is, before creating the hibernation image, the ACPI
> > _PTS is not executed, devices are not put into low power state and wake
> > devices are not enabled. After creating the hibernation image, the image
> > is saved to disk and system is shutdown (go to S5). When resuming from
> > hibernated image, ACPI _BFS and _WAK are not executed too.
>
> Doesn't that resume the devices and their drivers into an unknown state?
device_suspend(PMSG_FREEZE) and device_power_down(PMSG_FREEZE) are
called before hibernation; device_power_up(PMSG_RESTORE) and
device_resume(PMSG_RESTORE) are called after restore. The new
hibernation/restore device driver callbacks introduced by Rafael is
used. So I think the device/driver state will be saved/restored
properly.
It is planed to support ACPI S4 in the future. But I think a hibernation
scheme without ACPI may be useful in some situation too.
Best Regards,
Huang Ying
More information about the kexec
mailing list