[PATCH] Device runtime suspend/resume fixes try #2

From: Todd Poynor
Date: Wed May 26 2004 - 13:32:21 EST


Andrew Morton wrote:

> err, this function needs a bit of work in the return value department...

Sorry, I'm a moron, try #2 below.

--- linux-2.6.6-orig/drivers/base/power/suspend.c 2004-05-10 11:22:58.000000000 -0700
+++ linux-2.6.6-pm/drivers/base/power/suspend.c 2004-05-23 00:07:51.000000000 -0700
@@ -42,13 +42,6 @@
if (dev->bus && dev->bus->suspend)
error = dev->bus->suspend(dev,state);

- if (!error) {
- list_del(&dev->power.entry);
- list_add(&dev->power.entry,&dpm_off);
- } else if (error == -EAGAIN) {
- list_del(&dev->power.entry);
- list_add(&dev->power.entry,&dpm_off_irq);
- }
return error;
}

@@ -81,12 +74,16 @@
while(!list_empty(&dpm_active)) {
struct list_head * entry = dpm_active.prev;
struct device * dev = to_device(entry);
- if ((error = suspend_device(dev,state))) {
- if (error != -EAGAIN)
- goto Error;
- else
- error = 0;
- }
+ error = suspend_device(dev,state);
+
+ if (!error) {
+ list_del(&dev->power.entry);
+ list_add(&dev->power.entry,&dpm_off);
+ } else if (error == -EAGAIN) {
+ list_del(&dev->power.entry);
+ list_add(&dev->power.entry,&dpm_off_irq);
+ } else
+ goto Error;
}
Done:
up(&dpm_sem);
--- linux-2.6.6-orig/drivers/base/power/runtime.c 2004-05-10 11:22:58.000000000 -0700
+++ linux-2.6.6-pm/drivers/base/power/runtime.c 2004-05-26 10:37:05.193449240 -0700
@@ -14,7 +14,10 @@
{
if (!dev->power.power_state)
return;
- resume_device(dev);
+ if (! resume_device(dev))
+ dev->power.power_state = 0;
+
+ return;
}


--
Todd
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/