From: Pavel Machek --- 25-akpm/Documentation/power/swsusp.txt | 61 ++++++++++++++++++++++++++++++--- 1 files changed, 56 insertions(+), 5 deletions(-) diff -puN Documentation/power/swsusp.txt~swsusp-documentation-updates Documentation/power/swsusp.txt --- 25/Documentation/power/swsusp.txt~swsusp-documentation-updates 2004-05-05 02:58:04.335045216 -0700 +++ 25-akpm/Documentation/power/swsusp.txt 2004-05-05 02:58:04.338044760 -0700 @@ -123,10 +123,61 @@ server is not hotplug capable. What do y replace ethernet card, resume. If you are fast your users will not even see broken connections. -Any other idea you might have tell me! +Q: Maybe I'm missing something, but why doesn't the regular io paths +work? -Contacting the author -If you have any question or any patch that solves the above or detected -problems please contact me at seasons@falcon.sch.bme.hu. I might delay -answering, sorry about that. +A: (Basically) you want to replace all kernel data with kernel data saved +on disk. How do you do that using normal i/o paths? If you'll read +"new" data 4KB at a time, you'll crash... because you still need "old" +data to do the reading, and "new" data may fit on same physical spot +in memory. +There are two solutions to this: + +* require half of memory to be free during suspend. That way you can +read "new" data onto free spots, then cli and copy + +* assume we had special "polling" ide driver that only uses memory +between 0-640KB. That way, I'd have to make sure that 0-640KB is free +during suspending, but otherwise it would work... + +Q: Does linux support ACPI S4? + +A: No. + +When swsusp was created, ACPI was not too widespread, so we tried to +avoid using ACPI-specific stuff. ACPI also is/was notoriously +buggy. These days swsusp works on APM-only i386 machines and even +without any power managment at all. Some versions also work on PPC. + +That means that machine does not enter S4 on suspend-to-disk, but +simply enters S5. That has few advantages, you can for example boot +windows on next boot, and return to your Linux session later. You +could even have few different Linuxes on your box (not sharing any +partitions), and switch between them. + +It also has disadvantages. On HP nx5000, if you unplug power cord +while machine is suspended-to-disk, Linux will fail to notice that. + +Q: My machine doesn't work with ACPI. How can I use swsusp than ? + +A: Do reboot() syscall with right parameters. Warning: glibc gets in +its way, so check with strace: + +reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, 0xd000fce2) + +(Thanks to Peter Osterlund:) + +#include +#include + +#define LINUX_REBOOT_MAGIC1 0xfee1dead +#define LINUX_REBOOT_MAGIC2 672274793 +#define LINUX_REBOOT_CMD_SW_SUSPEND 0xD000FCE2 + +int main() +{ + syscall(SYS_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, + LINUX_REBOOT_CMD_SW_SUSPEND, 0); + return 0; +} _