|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Re: [PATCH] pvops: Resume devices when suspend is failed
On Tue, Mar 8, 2011 at 2:32 AM, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:
On Mon, 2011-03-07 at 17:22 +0000, Stefano Stabellini wrote:
> On Fri, 4 Mar 2011, Frank Pan wrote:
> > Recent pvops kernel does not call dpm_resume_end when
> > dpm_suspend_start is failed. This makes some device remain suspended
> > after the unsuccessful call of do_suspend from xenbus.
> >
> > In my test, a PV-on-HVM guest printed the following message after
> > received a suspend request through xenbus, and then stucked due to
> > disk access.
> >
> > [41577.764748] sd 0:0:0:0: [sda] Stopping disk
> > [41577.765273] PM: Device input2 failed to suspend: error -22
> > [41577.765275] xen suspend: dpm_suspend_start -22
> >
> > The following patch fixes this by calling dpm_suspend_start after the
> > failure of dpm_resume_end.
> Thanks for spotting this issue and for the patch!
> However I think it would be better to move out_thaw before
> dpm_resume_end instead.
FYI, the code flow after Frank's patch if (dpm_suspend(..)) {
dpm_resume_end() goto out_thaw; } xs_suspend()
if (dpm_suspend_noirq()) goto out_resume; xen_suspend() dpm_resume_noirq()
out_resume: xen_arch_resume() xs_resume() dpm_resume_end() clock_was_set()
out_thaw: return I am not sure if the clock_was_set() call is harmless (retriggering the timers), even if no dpm_suspend_noirq() calls were issued.
ACK.
This will likely interact with Shriram's recent changes to the PMSG_*
types used by Xen save/restore. Ideally this patch would be against
those.
Also the choice of PMSG_* passed to dpm_resume_end will likely depend on
whether dpm_suspend_start succeeded or failed. Based on looking at
hibernate.c I think, after Shriram's patches, it needs to be
PMSG_RECOVER in the error case, PMSG_THAW in the checkpoint case and
PMSG_RESTORE in the normal resume case but you should check the
descriptions in pm.h to be sure.
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|
|
|