Skip to content

Commit

Permalink
PM / Hibernate: Improve performance of LZO/plain hibernation, checksu…
Browse files Browse the repository at this point in the history
…m image

Use threads for LZO compression/decompression on hibernate/thaw.
Improve buffering on hibernate/thaw.
Calculate/verify CRC32 of the image pages on hibernate/thaw.

In my testing, this improved write/read speed by a factor of about two.

Signed-off-by: Bojan Smojver <bojan@rexursive.com>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
  • Loading branch information
Bojan Smojver authored and Rafael J. Wysocki committed Oct 16, 2011
1 parent d231ff1 commit 081a9d0
Show file tree
Hide file tree
Showing 4 changed files with 645 additions and 178 deletions.
1 change: 1 addition & 0 deletions kernel/power/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ config HIBERNATION
select HIBERNATE_CALLBACKS
select LZO_COMPRESS
select LZO_DECOMPRESS
select CRC32
---help---
Enable the suspend to disk (STD) functionality, which is usually
called "hibernation" in user interfaces. STD checkpoints the
Expand Down
3 changes: 3 additions & 0 deletions kernel/power/hibernate.c
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,9 @@ int hibernate(void)
flags |= SF_PLATFORM_MODE;
if (nocompress)
flags |= SF_NOCOMPRESS_MODE;
else
flags |= SF_CRC32_MODE;

pr_debug("PM: writing image.\n");
error = swsusp_write(flags);
swsusp_free();
Expand Down
1 change: 1 addition & 0 deletions kernel/power/power.h
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ extern int swsusp_swap_in_use(void);
*/
#define SF_PLATFORM_MODE 1
#define SF_NOCOMPRESS_MODE 2
#define SF_CRC32_MODE 4

/* kernel/power/hibernate.c */
extern int swsusp_check(void);
Expand Down
Loading

0 comments on commit 081a9d0

Please sign in to comment.