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