Suspend and hibernate

Software
The following software can be used for in-kernel default suspend/hibernate implementation, namely, swsusp.

Also sys-power/upower-pm-utils must be unmerged, merge sys-power/upower, and merge sys-auth/consolekit with USE="pm-utils". Otherwise there might not be a "Suspend" and "Hibernate" button in the menu of the desktop environment.

Another alternative is which can be used with swsusp and TuxOnIce patched kernels.

Kernel
Make sure the following variables are set to 'yes':

Available suspend modes
To see available suspend modes use

for swsusp, default implementation.

Or else, probe  sysfs file for ToI.

Those two file will list at least ACPI S2/4 power down methods on modern hardware. New hardware would also support S5 method which is a rough S4 method. ACPI S2 correspond to suspend to ram (ram method is swsusp terms and 3 in ToI terms); S4 hibernation to disk (disk in swsusp temrs and 4 in ToI terms; S5 hibernation to disk (5 in ToI terms).

Swsusp users can choose between platfom, meaning ACPI, or *shutdown* methods which can be echo-ed to `/sys/power/disk' sysfs file.

Suspend to RAM
Preferred commands to suspend are:

or

or

For suspend (to ram) for hibernate-script users; or

to hibernate (to disk.)

A more raw method is to

or

for TuxOnIce users. An then

is necessary to trigger a suspend/hibernation.

Suspend to disk
For suspend to disk to operate a swap partition or swap file must exist.

The swap file should be active beforehand and should be echoed on the appropriate file before any attempt to suspend/hibernate.

or

for ToI users.

A more raw method is to:

Do not forget to probe:

before issuing an actual command and append the result to kernel command line argument prepended with `resume='. This will suffice to resume from a block device or swap file for ToI. However, it's more complicated for a swapfile with swsusp.

Suspend to disk with sys-power/pm-utils
Yet another way to achieve disk hibernation is to use hibernate to swap partition and pm-utils.

First, make sure a swap partition has been set:

For this example, we will assume it's

Edit  and append the resume kernel option to   pointing to the swap partition.

Rebuild the GRUB config:

Update initramfs:

Add the following to /etc/pm/config.d/gentoo (see bug 338239):

Reboot the system:

Next, try

Suspend to disk with swapfile
You can use suspend to disk with a swapfile. When you have a functional swapfile you need to configure kernel parameters (via GRUB, etc.).

First find UUID of device where your swapfile resides. For example:.

Find offset of swapfile on given partition using  utility from :

After that edit GRUB config and add required parameters to boot string:

Rebuild GRUB config:

Reboot the system and check used kernel parameters:

It should now be possible to hibernate the system.

Troubleshooting
If troubleshooting suspend the powersave log might be useful:

Also classic kernel buffer comes handy:

Can not resume after suspend
In case resuming from suspend does not work, disable the security chip setting in BIOS/UEFI and try again.

External resources

 * TuxOnIce
 * Linux kernel documentation - swsusp.txt, or the usual location of