Article about goals and implementation of Software Suspend for Linux Author: Gábor Kuti Last revised: Jan 23rd, 2000 Idea and goals to achieve Nowadays it is common in several laptops that they have a suspend button. It saves the state of the machine to a filesystem or to a partition and switches to standby mode. Later resuming the machine the saved state is loaded back to ram and the machine can continue its work. It has two real benefits. First we save ourselves the time machine goes down and later boots up, energy costs real high when running from batteries. The other gain is that we don't have to interrupt our programs so processes that are calculating something for a long time shouldn't need to be written interruptible. On desk machines the power saving function isn't as important as it is in laptops but we really may benefit from the second one. Nowadays the number of desk machines supporting suspend function in their APM is going up but there are (and there will still be for a long time) machines that don't even support APM of any kind. On the other hand it is reported that using APM's suspend some irqs (e.g. ATA disk irq) is lost and it is annoying for the user until the Linux kernel resets the device. So I started thinking about implementing Software Suspend which doesn't need any APM support and - since it uses pretty near only high-level routines - is supposed to be architecture independent code. Using the code The code is experimental right now - testers, extra eyes are welcome. To compile this support into the kernel, you need CONFIG_EXPERIMENTAL, and then CONFIG_SOFTWARE_SUSPEND in menu General Setup to be enabled. It cannot be used as a module and I don't think it will ever be needed. You have three ways to use this code. The first one is if you've compiled in sysrq support then you may press Sysrq-D to request suspend. The other way is with a patched SysVinit (my patch is against 2.76 and available at my home page). You might call 'swsusp' or 'shutdown -z