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. Alan Stern _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm