summaryrefslogtreecommitdiffstats
path: root/kernel/power/swap.c
diff options
context:
space:
mode:
authorChen Yu <yu.c.chen@intel.com>2016-07-21 22:30:47 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2016-07-22 07:57:23 -0400
commitfe12c00d21bb4985fa8da282942250be21e7dd59 (patch)
tree35231867af10de4803b883b43e924ae785ee7faf /kernel/power/swap.c
parent406f992e4a372dafbe3c2cff7efbb2002a5c8ebd (diff)
PM / hibernate: Introduce test_resume mode for hibernation
test_resume mode is to verify if the snapshot data written to swap device can be successfully restored to memory. It is useful to ease the debugging process on hibernation, since this mode can not only bypass the BIOSes/bootloader, but also the system re-initialization. To avoid the risk to break the filesystm on persistent storage, this patch resumes the image with tasks frozen. For example: echo test_resume > /sys/power/disk echo disk > /sys/power/state [ 187.306470] PM: Image saving progress: 70% [ 187.395298] PM: Image saving progress: 80% [ 187.476697] PM: Image saving progress: 90% [ 187.554641] PM: Image saving done. [ 187.558896] PM: Wrote 594600 kbytes in 0.90 seconds (660.66 MB/s) [ 187.566000] PM: S| [ 187.589742] PM: Basic memory bitmaps freed [ 187.594694] PM: Checking hibernation image [ 187.599865] PM: Image signature found, resuming [ 187.605209] PM: Loading hibernation image. [ 187.665753] PM: Basic memory bitmaps created [ 187.691397] PM: Using 3 thread(s) for decompression. [ 187.691397] PM: Loading and decompressing image data (148650 pages)... [ 187.889719] PM: Image loading progress: 0% [ 188.100452] PM: Image loading progress: 10% [ 188.244781] PM: Image loading progress: 20% [ 189.057305] PM: Image loading done. [ 189.068793] PM: Image successfully loaded Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Chen Yu <yu.c.chen@intel.com> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'kernel/power/swap.c')
-rw-r--r--kernel/power/swap.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/power/swap.c b/kernel/power/swap.c
index 160e1006640d..51cef8432154 100644
--- a/kernel/power/swap.c
+++ b/kernel/power/swap.c
@@ -348,6 +348,12 @@ static int swsusp_swap_check(void)
348 if (res < 0) 348 if (res < 0)
349 blkdev_put(hib_resume_bdev, FMODE_WRITE); 349 blkdev_put(hib_resume_bdev, FMODE_WRITE);
350 350
351 /*
352 * Update the resume device to the one actually used,
353 * so the test_resume mode can use it in case it is
354 * invoked from hibernate() to test the snapshot.
355 */
356 swsusp_resume_device = hib_resume_bdev->bd_dev;
351 return res; 357 return res;
352} 358}
353 359