Re: Time to re-enable Runtime PM per default for PCI devcies?

From: Heiner Kallweit
Date: Thu Dec 31 2020 - 04:43:38 EST


On 31.12.2020 05:07, Lukas Wunner wrote:
> On Wed, Dec 30, 2020 at 11:56:04PM +0100, Heiner Kallweit wrote:
>> --- a/drivers/pci/pci.c
>> +++ b/drivers/pci/pci.c
>> @@ -3024,7 +3024,9 @@ void pci_pm_init(struct pci_dev *dev)
>> u16 status;
>> u16 pmc;
>>
>> - pm_runtime_forbid(&dev->dev);
>> + if (pci_acpi_forbid_runtime_pm())
>> + pm_runtime_forbid(&dev->dev);
>> +
>
> Generic PCI code usually does not call ACPI-specific functions directly,
> but rather through a pci_platform_pm_ops callback.
>
> FWIW, if platform_pci_power_manageable() returns true, it can probably
> be assumed that allowing runtime PM by default is okay. So as a first
> step, you may want to call that instead of adding a new callback.
>
I don't think that's sufficient. Most likely all the broken old systems
return true for platform_pci_power_manageable(). So yes, most likely
we'd need a new callback if we want to have the platform ops abstraction.
But it could be an optional callback, something like: forbid_runtime_pm
The question is just: is it worth it?

By the way: pci_set_platform_pm() returns an error if a callback isn't
set, but no existing caller bothers to check the return code.

> Thanks,
>
> Lukas
>
Heiner