[linux-pm] [RFC] ACPI vs device ordering on resume

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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


[Index of Archives]     [Linux ACPI]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [CPU Freq]     [Kernel Newbies]     [Fedora Kernel]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux