PCI/PM: Allow runtime PM with no PM callbacks at all
authorRaag Jadav <raag.jadav@intel.com>
Tue, 27 Feb 2024 06:26:48 +0000 (11:56 +0530)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 29 Feb 2024 21:59:03 +0000 (15:59 -0600)
Commit c5eb1190074c ("PCI / PM: Allow runtime PM without callback
functions") eliminated the need for PM callbacks in
pci_pm_runtime_suspend() and pci_pm_runtime_resume(), but
didn't do the same for pci_pm_runtime_idle().

Therefore, runtime suspend worked as long as the driver implemented at
least one PM callback.  But if the driver doesn't implement any PM
callbacks at all (driver->pm is NULL), pci_pm_runtime_idle() returned
-ENOSYS, which prevented runtime suspend.

Modify pci_pm_runtime_idle() to allow PCI device power state transitions
without runtime PM callbacks and complete the original intention of commit
c5eb1190074c ("PCI / PM: Allow runtime PM without callback functions").

Link: https://lore.kernel.org/r/20240227062648.16579-1-raag.jadav@intel.com
Signed-off-by: Raag Jadav <raag.jadav@intel.com>
[bhelgaas: commit log]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Acked-by: Rafael J. Wysocki <rafael@kernel.org>
drivers/pci/pci-driver.c

index 51ec9e7e784f0e3a82134a05b114abe5be90d07c..bb7f6775b350524e4ece183242153a9ad29b39f7 100644 (file)
@@ -1382,10 +1382,7 @@ static int pci_pm_runtime_idle(struct device *dev)
        if (!pci_dev->driver)
                return 0;
 
-       if (!pm)
-               return -ENOSYS;
-
-       if (pm->runtime_idle)
+       if (pm && pm->runtime_idle)
                return pm->runtime_idle(dev);
 
        return 0;