Messages in this thread | | | Date | Fri, 18 Mar 2022 20:41:37 +0100 | Subject | Re: [PATCH v2 1/2] PCI/PM: refactor pci_pm_suspend_noirq() | From | "Rafael J. Wysocki" <> |
| |
On 3/18/2022 12:31 AM, Rajvi Jingar wrote: > The state of the device is saved during pci_pm_suspend_noirq(), if it > has not already been saved, regardless of the skip_bus_pm flag value. So > skip_bus_pm check is removed before saving the device state. > > v2: add comments to the changes
As mentioned by Dave, this shouldn't be here.
> Signed-off-by: Rajvi Jingar <rajvi.jingar@intel.com> > Suggested-by: David E. Box <david.e.box@linux.intel.com> > --- > drivers/pci/pci-driver.c | 18 ++++++------------ > 1 file changed, 6 insertions(+), 12 deletions(-) > > diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c > index 588588cfda48..ffe76f238d7e 100644 > --- a/drivers/pci/pci-driver.c > +++ b/drivers/pci/pci-driver.c > @@ -834,20 +834,14 @@ static int pci_pm_suspend_noirq(struct device *dev) > } > } > > - if (pci_dev->skip_bus_pm) { > + if (!pci_dev->state_saved) { > + pci_save_state(pci_dev); > /* > - * Either the device is a bridge with a child in D0 below it, or > - * the function is running for the second time in a row without > - * going through full resume, which is possible only during > - * suspend-to-idle in a spurious wakeup case. The device should > - * be in D0 at this point, but if it is a bridge, it may be > - * necessary to save its state. > + * If the device is a bridge with a child in D0 below it, it needs to > + * stay in D0, so check skip_bus_pm to avoid putting it into a > + * low-power state in that case. > */ > - if (!pci_dev->state_saved) > - pci_save_state(pci_dev); > - } else if (!pci_dev->state_saved) { > - pci_save_state(pci_dev); > - if (pci_power_manageable(pci_dev)) > + if (!pci_dev->skip_bus_pm && pci_power_manageable(pci_dev)) > pci_prepare_to_sleep(pci_dev); > } >
| |