PCI/PM: Remove unused pci_driver.suspend_late() hook
The struct pci_driver.suspend_late() hook is one of the legacy PCI power management callbacks, and there are no remaining users of it. Remove it. Link: https://lore.kernel.org/r/20191101204558.210235-7-helgaas@kernel.org Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Родитель
89cdbc3546
Коммит
1a1daf097e
|
@ -692,11 +692,11 @@ controlling the runtime power management of their devices.
|
|||
At the time of this writing there are two ways to define power management
|
||||
callbacks for a PCI device driver, the recommended one, based on using a
|
||||
dev_pm_ops structure described in Documentation/driver-api/pm/devices.rst, and
|
||||
the "legacy" one, in which the .suspend(), .suspend_late(), and
|
||||
.resume() callbacks from struct pci_driver are used. The legacy approach,
|
||||
however, doesn't allow one to define runtime power management callbacks and is
|
||||
not really suitable for any new drivers. Therefore it is not covered by this
|
||||
document (refer to the source code to learn more about it).
|
||||
the "legacy" one, in which the .suspend() and .resume() callbacks from struct
|
||||
pci_driver are used. The legacy approach, however, doesn't allow one to define
|
||||
runtime power management callbacks and is not really suitable for any new
|
||||
drivers. Therefore it is not covered by this document (refer to the source code
|
||||
to learn more about it).
|
||||
|
||||
It is recommended that all PCI device drivers define a struct dev_pm_ops object
|
||||
containing pointers to power management (PM) callbacks that will be executed by
|
||||
|
|
|
@ -599,32 +599,12 @@ static int pci_legacy_suspend(struct device *dev, pm_message_t state)
|
|||
static int pci_legacy_suspend_late(struct device *dev, pm_message_t state)
|
||||
{
|
||||
struct pci_dev *pci_dev = to_pci_dev(dev);
|
||||
struct pci_driver *drv = pci_dev->driver;
|
||||
|
||||
if (drv && drv->suspend_late) {
|
||||
pci_power_t prev = pci_dev->current_state;
|
||||
int error;
|
||||
|
||||
error = drv->suspend_late(pci_dev, state);
|
||||
suspend_report_result(drv->suspend_late, error);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
if (!pci_dev->state_saved && pci_dev->current_state != PCI_D0
|
||||
&& pci_dev->current_state != PCI_UNKNOWN) {
|
||||
pci_WARN_ONCE(pci_dev, pci_dev->current_state != prev,
|
||||
"PCI PM: Device state not saved by %pS\n",
|
||||
drv->suspend_late);
|
||||
goto Fixup;
|
||||
}
|
||||
}
|
||||
|
||||
if (!pci_dev->state_saved)
|
||||
pci_save_state(pci_dev);
|
||||
|
||||
pci_pm_set_unknown_state(pci_dev);
|
||||
|
||||
Fixup:
|
||||
pci_fixup_device(pci_fixup_suspend_late, pci_dev);
|
||||
|
||||
return 0;
|
||||
|
@ -653,7 +633,7 @@ static void pci_pm_default_suspend(struct pci_dev *pci_dev)
|
|||
static bool pci_has_legacy_pm_support(struct pci_dev *pci_dev)
|
||||
{
|
||||
struct pci_driver *drv = pci_dev->driver;
|
||||
bool ret = drv && (drv->suspend || drv->suspend_late || drv->resume);
|
||||
bool ret = drv && (drv->suspend || drv->resume);
|
||||
|
||||
/*
|
||||
* Legacy PM support is used by default, so warn if the new framework is
|
||||
|
|
|
@ -805,7 +805,6 @@ struct module;
|
|||
* The remove function always gets called from process
|
||||
* context, so it can sleep.
|
||||
* @suspend: Put device into low power state.
|
||||
* @suspend_late: Put device into low power state.
|
||||
* @resume: Wake device from low power state.
|
||||
* (Please see Documentation/power/pci.rst for descriptions
|
||||
* of PCI Power Management and the related functions.)
|
||||
|
@ -828,7 +827,6 @@ struct pci_driver {
|
|||
int (*probe)(struct pci_dev *dev, const struct pci_device_id *id); /* New device inserted */
|
||||
void (*remove)(struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */
|
||||
int (*suspend)(struct pci_dev *dev, pm_message_t state); /* Device suspended */
|
||||
int (*suspend_late)(struct pci_dev *dev, pm_message_t state);
|
||||
int (*resume)(struct pci_dev *dev); /* Device woken up */
|
||||
void (*shutdown)(struct pci_dev *dev);
|
||||
int (*sriov_configure)(struct pci_dev *dev, int num_vfs); /* On PF */
|
||||
|
|
Загрузка…
Ссылка в новой задаче