RE: [PATCH][RFC v2] PM / hibernate: Introduce snapshot test mode for hibernation

From: Chen, Yu C
Date: Wed Jul 13 2016 - 08:51:52 EST



> -----Original Message-----
> From: rjwysocki@xxxxxxxxx [mailto:rjwysocki@xxxxxxxxx] On Behalf Of
> Rafael J. Wysocki
> Sent: Wednesday, July 13, 2016 8:07 PM
> To: Chen, Yu C
> Cc: Linux PM; Rafael J . Wysocki; Pavel Machek; Len Brown; Linux Kernel
> Mailing List
> Subject: Re: [PATCH][RFC v2] PM / hibernate: Introduce snapshot test mode for
> hibernation
>
> On Wed, Jul 13, 2016 at 8:08 AM, Chen Yu <yu.c.chen@xxxxxxxxx> wrote:
> > This mode is used to verify if the snapshot data written to the swap
> > device can be successfully restored to the memory. It is useful to
> > ease the debugging process on hibernation, since this mode can not
> > only bypass the BIOSen/bootloader, but also the system
> > re-initialization.
> >
> > For example:
> > $ sudo echo snapshot > /sys/power/pm_test $ sudo echo disk >
> > /sys/power/state
> >
> > [ 267.959784] PM: Image saving progress: 80% [ 268.038669] PM:
> > Image saving progress: 90% [ 268.111745] PM: Image saving progress:
> > 100% [ 268.129269] PM: Image saving done.
> > [ 268.133485] PM: Wrote 518612 kbytes in 0.75 seconds (691.48 MB/s) [
> > 268.140564] PM: S| [ 268.160067] hibernation debug: Waiting for 5
> > seconds.
> > ...
> > [ 273.508638] PM: Looking for hibernation image.
> > [ 273.516583] PM: Image signature found, resuming [ 273.926547] PM:
> > Loading and decompressing image data (129653 pages)...
> > [ 274.122452] PM: Image loading progress: 0%
> > [ 274.322127] PM: Image loading progress: 10% ...
> >
> > Rebased on top of linux-next.
> >
> > Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> > Signed-off-by: Chen Yu <yu.c.chen@xxxxxxxxx>
> > ---
> > kernel/power/hibernate.c | 10 ++++++++--
> > kernel/power/main.c | 3 +++
> > kernel/power/power.h | 3 +++
> > kernel/power/swap.c | 7 +++++++
> > 4 files changed, 21 insertions(+), 2 deletions(-)
> >
> > diff --git a/kernel/power/hibernate.c b/kernel/power/hibernate.c index
> > 51441d8..30cc5b4 100644
> > --- a/kernel/power/hibernate.c
> > +++ b/kernel/power/hibernate.c
> > @@ -43,6 +43,7 @@ static char resume_file[256] =
> > CONFIG_PM_STD_PARTITION; dev_t swsusp_resume_device; sector_t
> > swsusp_resume_block; __visible int in_suspend __nosavedata;
> > +static int software_resume(void);
> >
> > enum {
> > HIBERNATION_INVALID,
> > @@ -647,7 +648,7 @@ static void power_down(void)
> > */
> > int hibernate(void)
> > {
> > - int error, nr_calls = 0;
> > + int error, nr_calls = 0, snapshot_test = 0;
>
> Why can't snapshot_test be a bool variable?
Ah yes, it was a bool, I was just thinking to add this new variable
similar to the variable 'error'. I'll change it to bool in next version, and also
add document as Pavel suggested.
>
> Thanks,
> Rafael

thanks,
Yu