Loading drivers/base/power/main.c +19 −12 Original line number Diff line number Diff line Loading @@ -570,7 +570,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) pm_callback_t callback = NULL; char *info = NULL; int error = 0; bool put = false; TRACE_DEVICE(dev); TRACE_RESUME(0); Loading @@ -591,7 +590,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) goto Unlock; pm_runtime_enable(dev); put = true; if (dev->pm_domain) { info = "power domain "; Loading Loading @@ -646,9 +644,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) TRACE_RESUME(error); if (put) pm_runtime_put_sync(dev); return error; } Loading Loading @@ -762,6 +757,8 @@ static void device_complete(struct device *dev, pm_message_t state) } device_unlock(dev); pm_runtime_put_sync(dev); } /** Loading Loading @@ -1015,7 +1012,7 @@ int dpm_suspend_end(pm_message_t state) error = dpm_suspend_noirq(state); if (error) { dpm_resume_early(state); dpm_resume_early(resume_event(state)); return error; } Loading Loading @@ -1062,12 +1059,16 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) if (async_error) goto Complete; pm_runtime_get_noresume(dev); /* * If a device configured to wake up the system from sleep states * has been suspended at run time and there's a resume request pending * for it, this is equivalent to the device signaling wakeup, so the * system suspend operation should be aborted. */ if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) pm_wakeup_event(dev, 0); if (pm_wakeup_pending()) { pm_runtime_put_sync(dev); async_error = -EBUSY; goto Complete; } Loading Loading @@ -1133,12 +1134,10 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) Complete: complete_all(&dev->power.completion); if (error) { pm_runtime_put_sync(dev); if (error) async_error = error; } else if (dev->power.is_suspended) { else if (dev->power.is_suspended) __pm_runtime_disable(dev, false); } return error; } Loading Loading @@ -1234,6 +1233,14 @@ static int device_prepare(struct device *dev, pm_message_t state) if (dev->power.syscore) return 0; /* * If a device's parent goes into runtime suspend at the wrong time, * it won't be possible to resume the device. To prevent this we * block runtime suspend here, during the prepare phase, and allow * it again during the complete phase. */ pm_runtime_get_noresume(dev); device_lock(dev); dev->power.wakeup_path = device_may_wakeup(dev); Loading drivers/pci/pci-driver.c +0 −17 Original line number Diff line number Diff line Loading @@ -629,21 +629,6 @@ static int pci_pm_prepare(struct device *dev) struct device_driver *drv = dev->driver; int error = 0; /* * If a PCI device configured to wake up the system from sleep states * has been suspended at run time and there's a resume request pending * for it, this is equivalent to the device signaling wakeup, so the * system suspend operation should be aborted. */ pm_runtime_get_noresume(dev); if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) pm_wakeup_event(dev, 0); if (pm_wakeup_pending()) { pm_runtime_put_sync(dev); return -EBUSY; } /* * PCI devices suspended at run time need to be resumed at this * point, because in general it is necessary to reconfigure them for Loading @@ -667,8 +652,6 @@ static void pci_pm_complete(struct device *dev) if (drv && drv->pm && drv->pm->complete) drv->pm->complete(dev); pm_runtime_put_sync(dev); } #else /* !CONFIG_PM_SLEEP */ Loading Loading
drivers/base/power/main.c +19 −12 Original line number Diff line number Diff line Loading @@ -570,7 +570,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) pm_callback_t callback = NULL; char *info = NULL; int error = 0; bool put = false; TRACE_DEVICE(dev); TRACE_RESUME(0); Loading @@ -591,7 +590,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) goto Unlock; pm_runtime_enable(dev); put = true; if (dev->pm_domain) { info = "power domain "; Loading Loading @@ -646,9 +644,6 @@ static int device_resume(struct device *dev, pm_message_t state, bool async) TRACE_RESUME(error); if (put) pm_runtime_put_sync(dev); return error; } Loading Loading @@ -762,6 +757,8 @@ static void device_complete(struct device *dev, pm_message_t state) } device_unlock(dev); pm_runtime_put_sync(dev); } /** Loading Loading @@ -1015,7 +1012,7 @@ int dpm_suspend_end(pm_message_t state) error = dpm_suspend_noirq(state); if (error) { dpm_resume_early(state); dpm_resume_early(resume_event(state)); return error; } Loading Loading @@ -1062,12 +1059,16 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) if (async_error) goto Complete; pm_runtime_get_noresume(dev); /* * If a device configured to wake up the system from sleep states * has been suspended at run time and there's a resume request pending * for it, this is equivalent to the device signaling wakeup, so the * system suspend operation should be aborted. */ if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) pm_wakeup_event(dev, 0); if (pm_wakeup_pending()) { pm_runtime_put_sync(dev); async_error = -EBUSY; goto Complete; } Loading Loading @@ -1133,12 +1134,10 @@ static int __device_suspend(struct device *dev, pm_message_t state, bool async) Complete: complete_all(&dev->power.completion); if (error) { pm_runtime_put_sync(dev); if (error) async_error = error; } else if (dev->power.is_suspended) { else if (dev->power.is_suspended) __pm_runtime_disable(dev, false); } return error; } Loading Loading @@ -1234,6 +1233,14 @@ static int device_prepare(struct device *dev, pm_message_t state) if (dev->power.syscore) return 0; /* * If a device's parent goes into runtime suspend at the wrong time, * it won't be possible to resume the device. To prevent this we * block runtime suspend here, during the prepare phase, and allow * it again during the complete phase. */ pm_runtime_get_noresume(dev); device_lock(dev); dev->power.wakeup_path = device_may_wakeup(dev); Loading
drivers/pci/pci-driver.c +0 −17 Original line number Diff line number Diff line Loading @@ -629,21 +629,6 @@ static int pci_pm_prepare(struct device *dev) struct device_driver *drv = dev->driver; int error = 0; /* * If a PCI device configured to wake up the system from sleep states * has been suspended at run time and there's a resume request pending * for it, this is equivalent to the device signaling wakeup, so the * system suspend operation should be aborted. */ pm_runtime_get_noresume(dev); if (pm_runtime_barrier(dev) && device_may_wakeup(dev)) pm_wakeup_event(dev, 0); if (pm_wakeup_pending()) { pm_runtime_put_sync(dev); return -EBUSY; } /* * PCI devices suspended at run time need to be resumed at this * point, because in general it is necessary to reconfigure them for Loading @@ -667,8 +652,6 @@ static void pci_pm_complete(struct device *dev) if (drv && drv->pm && drv->pm->complete) drv->pm->complete(dev); pm_runtime_put_sync(dev); } #else /* !CONFIG_PM_SLEEP */ Loading