[lkml]   [2007]   [Sep]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    SubjectRe: [linux-pm] Re: [RFC][PATCH 1/2 -mm] kexec based hibernation -v3: kexec jump
    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" <> 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. 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

    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. 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.

    >> 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.

    Kyle Moffett
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2007-09-22 20:03    [W:0.026 / U:7.288 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site