On Saturday, 5 May 2007 18:19, Alan Stern wrote: > On Fri, 4 May 2007, Rafael J. Wysocki wrote: > > > > > Entering hibernation basically involves these steps: > > > > > > > > 1. Freeze tasks > > > > > > > > 2. Quiesce devices and drivers > > > > > > > > 3. Create snapshot > > > > > > > > 4. Reactivate devices and drivers > > > > > > > > 5. Save snapshot to disk > > > > > > > > 6. Prepare devices for wakeup > > > > > > > > 7. Power down (ACPI S4 on systems which support it) > > > > > > > > Leaving hibernation involves a similar sequence which I won't discuss. > > > > > > > > Notice that steps 1-5 above are _completely_ independent of all issues > > > > concerning wakeup devices and S4 vs. S5 vs. whatever. They have to > > > > be > > > > > > No, they are not. You probably should tell ACPI at step 2 that you are > > > suspending, > > At step 2 you don't _know_ that you are suspending! Step 5 might fail. > You should tell ACPI during step 6 or 7. > > > You can, but even if you don't, the BIOS shouldn't have problems. What might > > have problems is our ACPI code during the resume, if it cannot get appropriate > > information from the BIOS. > > > > > and you definitely need to tell ACPI that you have resumed > > > (so it can re-scan AC adapters, for example). > > > > Yes, but that can be done in two different ways: > > > > 1) "We have restored the hibernation image, but the BIOS state corresponds to > > a fresh reboot, so please initialize everything from scratch." > > > > 2) "We have restored the hibernation image and the ACPI S4 was used for > > powering off (hint: you may try not to initialize everything from scratch)." > > > > Of course, in the case 2) we are responsible for ensuring that the contents of > > the hibernation image are consistent with the information preserved by the > > BIOS. > > Keep in mind also that before you can do either 1) or 2), the boot kernel > has already communicated with the BIOS, possibly changing some of the ACPI > state. That's correct, but it follows from the ACPI spec that there is a way for the boot kernel to distinguish 'normal' boot from 'S4 resume' boot. If this mechanism is used and the boot kernel states that it's doing a 'S4 resume', it will be able to leave ACPI alone and restore the hibernation image. Greetings, Rafael _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm