Carl-Daniel Hailfinger napsal(a):
Rudolf, thanks for giving us that overview. I see that it is a description of S3 wakeup. Could you perhaps supplement that with a description of S3 suspend?
S3 suspend is just this line in ACPI ASL:
+Name (_S3, Package () {0x01, 0x01, 0x00, 0x00 })
OS will write the 0x1 to SLP register in ACPI PMIO. OS will take care of cache flushes etc. The write to this register will cause the SMAF Stop grant message to be send to CPU, CPU will disconnect the bus, and SB will sequence all signals similar to power off. The only problem is suspend signal which goes to superIO, which is needed not to cut power to RAM.
In other words, you dont need to preserve anything/no need for SMM. ACPI allows that the hardware is in same state as it was during normal power on (for HW managed by BIOS).
If needed, writing to SLP register might be traped by SMM, and BIOS can save some values to NVRAM regs, sometimes found in chipsets (memory timing etc) to ease the startup. But we dont need that we are fast anyway.
Some extra hw clobber might be done in ACPI ASL code, there are methods which will be called during wakeup or during resume.
Rudolf