On Fri, 3 Dec 2010, Rafael J. Wysocki wrote: > From: Rafael J. Wysocki <rjw@xxxxxxx> > > Before starting to suspend a device in device_suspend() check if > there's a request to abort the power transition and return -EBUSY > in that case. > > Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx> > --- > drivers/base/power/main.c | 5 +++++ > 1 file changed, 5 insertions(+) > > Index: linux-2.6/drivers/base/power/main.c > =================================================================== > --- linux-2.6.orig/drivers/base/power/main.c > +++ linux-2.6/drivers/base/power/main.c > @@ -935,6 +935,11 @@ static void async_suspend(void *data, as > > static int device_suspend(struct device *dev) > { > + if (pm_wakeup_pending()) { > + async_error = -EBUSY; > + return async_error; > + } > + > INIT_COMPLETION(dev->power.completion); > > if (pm_async_enabled && dev->power.async_suspend) { Is a similar test needed in async_suspend()? What happens if dpm_suspend() runs through the entire device list okay, but a wakeup event occurs in the middle of the async_synchronize_full() delay? Alan Stern _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm