From f1fb9dd7b3748344d3255a7da1fa8b04b96e3da8 Mon Sep 17 00:00:00 2001 From: Alan Stern Date: Tue, 23 Mar 2010 00:50:07 +0100 Subject: [PATCH] --- yaml --- r: 192489 b: refs/heads/master c: 240c7337a4cd3d91b196c5ef97ad461b3a22fa09 h: refs/heads/master i: 192487: 50651f37d5f9c0c24793569f356402ab9172e2f6 v: v3 --- [refs] | 2 +- trunk/drivers/base/power/runtime.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 6922fb535366..f83a7ecbc423 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 228c54ef7a028d5a4b6606eb0c8035874d9b6788 +refs/heads/master: 240c7337a4cd3d91b196c5ef97ad461b3a22fa09 diff --git a/trunk/drivers/base/power/runtime.c b/trunk/drivers/base/power/runtime.c index 626dd147b75f..b0ec0e9f27e9 100644 --- a/trunk/drivers/base/power/runtime.c +++ b/trunk/drivers/base/power/runtime.c @@ -229,14 +229,16 @@ int __pm_runtime_suspend(struct device *dev, bool from_wq) if (retval) { dev->power.runtime_status = RPM_ACTIVE; - pm_runtime_cancel_pending(dev); - if (retval == -EAGAIN || retval == -EBUSY) { - notify = true; + if (dev->power.timer_expires == 0) + notify = true; dev->power.runtime_error = 0; + } else { + pm_runtime_cancel_pending(dev); } } else { dev->power.runtime_status = RPM_SUSPENDED; + pm_runtime_deactivate_timer(dev); if (dev->parent) { parent = dev->parent; @@ -659,8 +661,6 @@ int pm_schedule_suspend(struct device *dev, unsigned int delay) if (dev->power.runtime_status == RPM_SUSPENDED) retval = 1; - else if (dev->power.runtime_status == RPM_SUSPENDING) - retval = -EINPROGRESS; else if (atomic_read(&dev->power.usage_count) > 0 || dev->power.disable_depth > 0) retval = -EAGAIN;