Linux kernel: Suspend to both

This patch enables suspend to both for in-kernel hibernation.

It is often useful to suspend to memory after hibernation image has been written to disk. If the battery runs out or power is otherwise lost, the computer will resume from the hibernated image. If not, it will resume from memory and hibernation image will be discarded.

The patch should apply to Linux kernel 3.4.0-rc6 and above.

This patch has been merged into 3.6.

Linux kernel: Threaded LZO hibernation

This patch enables threading of compression/decompression and better buffering on hibernate/thaw. The hibernation/thaw speed doubled in my tests with this approach. In addition, CRC32 is calculated and checked, so we can be reasonably sure that what we read in is what we wrote.

The patch should apply to Linux kernel 3.1.0-rc6 and above.

This patch has been merged into 3.2.

You should also get the patch below, which fixes some memory allocation problems that can hang hibernation on architectures that have CONFIG_HIGHMEM.

Linux kernel: Compress hibernation image with LZO

These patches use LZO compression (already present in modern 2.6.x kernels) to reduce the amount of data that is written/read to/from disk on hibernate/thaw. This speeds up the writing stage of hibernation by the factor of about 2 to 4 and reading stage of thaw by the factor of about 2. Technically, you need just the first patch. It should apply to 2.6.35 and hopefully above.

The first (somewhat reworked) patch from above has been merged into kernel version 2.6.37. Another patch, that enables async I/O when reading compressed image, has gone into 2.6.37 as well.

MPPE patches for PPP

Stock pppd now has MPPE support.