CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you can confirm the sender and know the content is safe. On 5/19/20 7:24 PM, Anchal Agarwal wrote: > > +enum suspend_modes { > + NO_SUSPEND = 0, > + XEN_SUSPEND, > + PM_SUSPEND, > + PM_HIBERNATION, > +}; > + > +/* Protected by pm_mutex */ > +static enum suspend_modes suspend_mode = NO_SUSPEND; > + > +bool xen_suspend_mode_is_xen_suspend(void) > +{ > + return suspend_mode == XEN_SUSPEND; > +} > + > +bool xen_suspend_mode_is_pm_suspend(void) > +{ > + return suspend_mode == PM_SUSPEND; > +} > + > +bool xen_suspend_mode_is_pm_hibernation(void) > +{ > + return suspend_mode == PM_HIBERNATION; > +} > + I don't see these last two used anywhere. Are you, in fact, distinguishing between PM suspend and hibernation? Yes, I am. Unless there is a better way to distinguish at runtime which I haven't figured out yet. The initial design was to have separate states for separate modes. Currently, PM_HIBERNATION is handled by !xen_suspend . However, if any case arises where we need to set the suspend_mode, its available via this interface. This is basically to support PM* ops via ACPI path. Since, PM_SUSPEND is not handled by the series the code piece can be removed and added later. Any comments? (I would also probably shorten the name a bit, perhaps xen_is_pv/pm_suspend()?) Sure. Will fix in my next round of post. -boris Thanks, Anchal