vserver 2.0 rc7
[linux-2.6.git] / drivers / base / power / suspend.c
index 8e1ace2..0ec44ef 100644 (file)
@@ -39,12 +39,25 @@ int suspend_device(struct device * dev, pm_message_t state)
 {
        int error = 0;
 
-       dev_dbg(dev, "suspending\n");
+       if (dev->power.power_state) {
+               dev_dbg(dev, "PM: suspend %d-->%d\n",
+                       dev->power.power_state, state);
+       }
+       if (dev->power.pm_parent
+                       && dev->power.pm_parent->power.power_state) {
+               dev_err(dev,
+                       "PM: suspend %d->%d, parent %s already %d\n",
+                       dev->power.power_state, state,
+                       dev->power.pm_parent->bus_id,
+                       dev->power.pm_parent->power.power_state);
+       }
 
        dev->power.prev_state = dev->power.power_state;
 
-       if (dev->bus && dev->bus->suspend && !dev->power.power_state)
+       if (dev->bus && dev->bus->suspend && !dev->power.power_state) {
+               dev_dbg(dev, "suspending\n");
                error = dev->bus->suspend(dev, state);
+       }
 
        return error;
 }
@@ -134,6 +147,8 @@ int device_power_down(pm_message_t state)
  Done:
        return error;
  Error:
+       printk(KERN_ERR "Could not power down device %s: "
+               "error %d\n", kobject_name(&dev->kobj), error);
        dpm_power_up();
        goto Done;
 }