diff options
author | Andrew Morton <akpm@osdl.org> | 2004-05-10 00:07:23 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-05-10 00:07:23 -0700 |
commit | bbfbb758549492a97063bdca22a4df8d2ee5fae9 (patch) | |
tree | b56c6549462646272bc48b84d3aa8da93f322a79 /Documentation | |
parent | b3f8802cea1b1f94b7e9ebefdfb7b46d61f4ebc0 (diff) | |
download | history-bbfbb758549492a97063bdca22a4df8d2ee5fae9.tar.gz |
[PATCH] swsusp documentation updates
From: Pavel Machek <pavel@ucw.cz>
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/power/swsusp.txt | 61 |
1 files changed, 56 insertions, 5 deletions
diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt index afe9bb766f42e8..168322ef857740 100644 --- a/Documentation/power/swsusp.txt +++ b/Documentation/power/swsusp.txt @@ -123,10 +123,61 @@ server is not hotplug capable. What do you do? Suspend to disk, 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 <unistd.h> +#include <syscall.h> + +#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; +} |