pci_set_power_state() failure and breaking suspend
Rafael J. Wysocki
rjw at sisk.pl
Tue Oct 24 22:00:04 EST 2006
On Tuesday, 24 October 2006 08:54, Benjamin Herrenschmidt wrote:
> So I noticed a small regression that I think might uncover a deeper
> Recently, ohci1394 grew some "proper" error handling in its suspend
> function, something that looks like:
> err = pci_set_power_state(pdev, pci_choose_state(pdev, state));
> if (err)
> goto out;
> First, it breaks some old PowerBooks where the internal OHCI had PM
> feature exposed on PCI (the pmac specific code that follows those lines
> is enough on those machines).
> That can easily be fixed by removing the if (err) goto out; statement
> and having the pmac code set err to 0 in certain conditions, and I'll be
> happy to submit a patch for this.
> However, this raises the question of do we actually want to prevent
> machines to suspend when they have a PCI device that don't have the PCI
> PM capability ? I'm asking that because I can easily imagine that sort
> of construct growing into more drivers (sounds logical if you don't
> think) and I can even imagine somebody thinking it's a good idea to slap
> a __must_check on pci_set_power_state() ...
As far as the suspend to RAM is concerned, I don't know.
For the suspend to disk we can ignore the error if we know that the device
in question won't do anything like a DMA transfer into memory while we're
creating the suspend image.
You never change things by fighting the existing reality.
R. Buckminster Fuller
More information about the Linuxppc-dev