[linux-pm] [RFC] ACPI vs device ordering on resume
Linus Torvalds
torvalds at osdl.org
Tue Nov 14 15:59:40 PST 2006
On Tue, 14 Nov 2006, Stephen Hemminger wrote:
>
> During the pci_restore process, the MSI information and the PCI command register
> are restored properly. But later during resume, inside the ACPI evaluation of
> the WAK method, the PCI_COMMAND INTX_DISABLE (0x400) flag is being cleared.
> My guess is that the BIOS ends up doing some resetting of devices.
Hmm.. I think calling "pm_ops->finish()" early is the right thing to do,
so your patch looks fine. I'd hate to apply it at this stage in the 2.6.19
development, though. Comments?
Looking at the code (at least for ACPI), pm_ops->finish() function does
things that we'd generally want done early. I'm a bit nervous about the
"nesting", though - we call the "->prepare" function _before_ we do the
device suspend stuff, so if "->finish" undoes something that was done by
"->prepare", then we will restore the devices with the state they were in
_after_ the "->prepare".
So from a logical _nesting_ perspective, the "->finish()" routine should
happen after devices have been restored. And anything that ACPI does to
undo "->enter" should have been done early by ACPI itself as it was
exiting that "->enter" routine - that would make the things nest properly.
Gaah. Since there is no way to know what the HELL those ACPI routines will
actually end up doing, there is no way to know what is the right answer.
Does anybody know what Windows does?
I think Stephen's patch is likely good, but I really don't see myself
applying it to my tree right now. It should either go into -mm, or early
into the post-2.6.19 tree (or, most likely, both).
Anybody?
Linus
More information about the linux-pm
mailing list