An interesting article here gives a basic overview on how standby and resume work under Linux. Other than getting a few basic acronyms wrong (D in DSDT = Differentiated, not Discrete, A in FADT = ACPI, not Address) it is a good overview of what happens when you press the sleep button on your machine. Most of the Linux support for ACPI came from Intel's ACPI CA project, described here. The most recent version of the ACPI specification is 3.0a and is available on the official ACPI site www.acpi.info (which was down as of tonight).
This article points out something I always have trouble explaining to folks, "In a lot of cases, it's just down to bugs in the drivers" Back in the APM days, you really could blame the BIOS, since almost all of the save-and-restore of system state was built into the firmware. But that didn't work very well for plug in devices. So ACPI moved most of the responsibility up to the OS, leaving the BIOS with just the non-standard or non-enumerable bits of the process (saving and restoring the DRAM configuration, setting up GPIOs, and fixing chipset bugs etc.)
It turns out that putting a system to sleep is almost as much work as putting my kids to sleep: an established routine, cooperation from all parties and, at the end of the day, a little magic.
Tim



Comments