On 8/21/20 6:25 PM, Anchal Agarwal wrote: > From: Munehisa Kamata <kamatam@xxxxxxxxxx> > > Guest hibernation is different from xen suspend/resume/live migration. > Xen save/restore does not use pm_ops as is needed by guest hibernation. > Hibernation in guest follows ACPI path and is guest inititated , the > hibernation image is saved within guest as compared to later modes > which are xen toolstack assisted and image creation/storage is in > control of hypervisor/host machine. > To differentiate between Xen suspend and PM hibernation, keep track > of the on-going suspend mode by mainly using a new API to keep track of > SHUTDOWN_SUSPEND state. > Introduce a simple function that keeps track of on-going suspend mode > so that PM hibernation code can behave differently according to the > current suspend mode. > Since Xen suspend doesn't have corresponding PM event, its main logic > is modfied to acquire pm_mutex. > > Though, accquirng pm_mutex is still right thing to do, we may > see deadlock if PM hibernation is interrupted by Xen suspend. > PM hibernation depends on xenwatch thread to process xenbus state > transactions, but the thread will sleep to wait pm_mutex which is > already held by PM hibernation context in the scenario. Xen shutdown > code may need some changes to avoid the issue. > > [Anchal Agarwal: Changelog]: > RFC v1->v2: Code refactoring > v1->v2: Remove unused functions for PM SUSPEND/PM hibernation > v2->v3: Added logic to use existing pm_notifier to detect for ARM > and abort hibernation for ARM guests. Also removed different > suspend_modes and simplified the code with using existing state > variables for tracking Xen suspend. The notifier won't get > registered for pvh dom0 either. > > Signed-off-by: Anchal Agarwal <anchalag@xxxxxxxxxx> > Signed-off-by: Munehisa Kamata <kamatam@xxxxxxxxxx> BTW, just to make sure --- Thomas' comments about commit message format (SoB order, no changelog, etc) apply to all patches, not just #5. -boris