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
|
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
|
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
|
dev_pm_ops structure described in Documentation/driver-api/pm/devices.rst, and
|
||||||
the "legacy" one, in which the .suspend(), .suspend_late(), and
|
the "legacy" one, in which the .suspend() and .resume() callbacks from struct
|
||||||
.resume() callbacks from struct pci_driver are used. The legacy approach,
|
pci_driver are used. The legacy approach, however, doesn't allow one to define
|
||||||
however, doesn't allow one to define runtime power management callbacks and is
|
runtime power management callbacks and is not really suitable for any new
|
||||||
not really suitable for any new drivers. Therefore it is not covered by this
|
drivers. Therefore it is not covered by this document (refer to the source code
|
||||||
document (refer to the source code to learn more about it).
|
to learn more about it).
|
||||||
|
|
||||||
It is recommended that all PCI device drivers define a struct dev_pm_ops object
|
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
|
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)
|
static int pci_legacy_suspend_late(struct device *dev, pm_message_t state)
|
||||||
{
|
{
|
||||||
struct pci_dev *pci_dev = to_pci_dev(dev);
|
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)
|
if (!pci_dev->state_saved)
|
||||||
pci_save_state(pci_dev);
|
pci_save_state(pci_dev);
|
||||||
|
|
||||||
pci_pm_set_unknown_state(pci_dev);
|
pci_pm_set_unknown_state(pci_dev);
|
||||||
|
|
||||||
Fixup:
|
|
||||||
pci_fixup_device(pci_fixup_suspend_late, pci_dev);
|
pci_fixup_device(pci_fixup_suspend_late, pci_dev);
|
||||||
|
|
||||||
return 0;
|
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)
|
static bool pci_has_legacy_pm_support(struct pci_dev *pci_dev)
|
||||||
{
|
{
|
||||||
struct pci_driver *drv = pci_dev->driver;
|
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
|
* 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
|
* The remove function always gets called from process
|
||||||
* context, so it can sleep.
|
* context, so it can sleep.
|
||||||
* @suspend: Put device into low power state.
|
* @suspend: Put device into low power state.
|
||||||
* @suspend_late: Put device into low power state.
|
|
||||||
* @resume: Wake device from low power state.
|
* @resume: Wake device from low power state.
|
||||||
* (Please see Documentation/power/pci.rst for descriptions
|
* (Please see Documentation/power/pci.rst for descriptions
|
||||||
* of PCI Power Management and the related functions.)
|
* 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 */
|
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) */
|
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)(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 */
|
int (*resume)(struct pci_dev *dev); /* Device woken up */
|
||||||
void (*shutdown)(struct pci_dev *dev);
|
void (*shutdown)(struct pci_dev *dev);
|
||||||
int (*sriov_configure)(struct pci_dev *dev, int num_vfs); /* On PF */
|
int (*sriov_configure)(struct pci_dev *dev, int num_vfs); /* On PF */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче