On Wed, 2012-04-18 at 23:10 +0600, Andrey Rahmatullin wrote: > On Wed, Apr 18, 2012 at 12:41:10PM -0400, Alan Stern wrote: > > Here's the situation. When the script unbinds ehci-hcd, > > pci_device_remove() sets the current state to PCI_UNKNOWN. The patch > > to hcd-pci.c does the same thing before the suspend_noirq phase begins, > > i.e., before pci_prepare_to_sleep() is called. > > > > In pci_raw_set_power_state(), there's a "switch" statement that depends > > on dev->current_state. If the current state is PCI_D0 then the new > > state in pmcsr is set to PCI_D3; if the current state is PCI_UNKNOWN > > then the state in pmcsr is left unchanged. After that, the value in > > pmcsr is written to the controller. > > > > This means that when ehci-hcd is unbound or the patch is installed, the > > controller stays in D0. That's why we see those "Refused to change > > power state" messages, since D0 is not what the target state was > > supposed to be. When ehci-hcd remains bound and the patch isn't > > installed, the controller is put into D3. > > > > And then finally, the computer crashes during the final stage of > > suspend if either controller is in D3. Clearly this is a bug in the > > firmware, not in the kernel. > > > > Have you guys checked to see if any BIOS updates are available? > I've just updated to 219 and it still hangs. I only see 213 on their website. Alan, Is there a way to detect this chipset or something, to add a workaround for it? As it works for Windows, I wonder what their workaround was. -- Steve _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/linux-pm