Re: [PATCH] PCI / PM: Don't runtime suspend when device only supports wakeup from D0

From: Kai Heng Feng
Date: Wed May 22 2019 - 15:07:54 EST




> On May 23, 2019, at 2:53 AM, Lukas Wunner <lukas@xxxxxxxxx> wrote:
>
> On Wed, May 22, 2019 at 02:39:56PM -0400, Alan Stern wrote:
>> According to Kai, PME signalling doesn't work in D0 -- or at least, it
>> is _documented_ not to work in D0 -- even though it is enabled and the
>> device claims to support it.
>>
>> In any case, I don't really see any point in "runtime suspending" a
>> device while leaving it in D0. We might as well just leave it alone.
>
> There may be devices whose drivers are able to reduce power consumption
> through some device-specific means when runtime suspending, even though
> the device remains in PCI_D0. The patch would cause a power regression
> for those.
>
> In particular, pci_target_state() returns PCI_D0 if the device lacks the
> PM capability.

So an explicit device_can_wakeup() check before calling pci_target_state()
is needed to avoid the case you described.

Iâll add this in patch v2.

Kai-Heng

>
> Thanks,
>
> Lukas