On Sun, Jul 6, 2025 at 10:40 PM Mario Limonciello <[email protected]> wrote: > > On 7/4/2025 6:12 AM, Samuel Zhang wrote: > > https://github.com/torvalds/linux/blob/v6.14/Documentation/power/pci.rst?plain=1#L588 > > Per this kernel doc, dev_pm_ops.thaw() is called mainly for resume > > Proper way to do this is to put the URL in a 'Link' tag above your SoB. > That being said I don't think we need to reference the rst file. Just > reference the html file. > > Something like this: > > Per the PCI power management documentation [1] dev_pm_ops.thaw() is > called mainly for resume. > > . > . > . > > Link: https://docs.kernel.org/power/pci.html [1] > S-o-b: Foo bar <[email protected]> > > > storage devices for saving the hibernation image. Other devices that not > > that are not > > > involved in the image saving do not need to resume the device. > > > > But dev_pm_ops.thaw() is also called to restore devices when hibernation > > is aborted due to some error in hibernation image creation stage.
This isn't factually correct. dev_pm_ops.thaw() can be called in an error path in two cases: (1) the "freeze" transition before the creation of a memory snapshot image fails and (2) the "freeze" transition during restore (before jumping back to the image kernel) fails. > > So there need to be a way to query in thaw() to know if hibernation is > > aborted or not and conditionally resume devices. Exported pm_transition > > is such a way. When thaw() is called, the value is: > > - PM_EVENT_THAW: normal hibernate, no need to resume non-storage devices. > > - PM_EVENT_RECOVER: cancelled hibernation, need to resume devices. > > If these events are being exported out for driver use I think that we > also need matching kernel doc exported too. > > That is the comments in include/linux/pm.h need to be converted into > kernel doc. > > Before you make any changes like that though let's see what Rafael > thinks of this approach. > > He might not want to export this symbol out and would prefer a new > helper for drivers to use like: > > inline bool pm_aborted_hibernate(); > > If that's the direction he prefers you'll need to make kernel doc for > that instead. I would prefer a wrapper around pm_transition returning pm_transition.event. It can be called pm_transition_event() even as far as I'm concerned. Thanks!
