Merge branches 'idle-fix' and 'misc' into release
authorLen Brown <len.brown@intel.com>
Sat, 7 Apr 2012 01:48:59 +0000 (21:48 -0400)
committerLen Brown <len.brown@intel.com>
Sat, 7 Apr 2012 01:48:59 +0000 (21:48 -0400)
drivers/acpi/processor_idle.c
drivers/cpuidle/cpuidle.c

index b3447f63e46b4f77a7e5edc7dc3bd5d0a7b3d33c..f3decb30223fd1b376775310ae25dec63424f920 100644 (file)
@@ -786,7 +786,7 @@ static int acpi_idle_play_dead(struct cpuidle_device *dev, int index)
        while (1) {
 
                if (cx->entry_method == ACPI_CSTATE_HALT)
-                       halt();
+                       safe_halt();
                else if (cx->entry_method == ACPI_CSTATE_SYSTEMIO) {
                        inb(cx->address);
                        /* See comment in acpi_idle_do_entry() */
index 87411cebc57725223a994eb6467ad0aa209d3515..2f0083a51a9aeb5979e145eca98b686f4dd3c196 100644 (file)
@@ -74,7 +74,7 @@ static cpuidle_enter_t cpuidle_enter_ops;
 /**
  * cpuidle_play_dead - cpu off-lining
  *
- * Only returns in case of an error
+ * Returns in case of an error or no driver
  */
 int cpuidle_play_dead(void)
 {
@@ -83,6 +83,9 @@ int cpuidle_play_dead(void)
        int i, dead_state = -1;
        int power_usage = -1;
 
+       if (!drv)
+               return -ENODEV;
+
        /* Find lowest-power state that supports long-term idle */
        for (i = CPUIDLE_DRIVER_STATE_START; i < drv->state_count; i++) {
                struct cpuidle_state *s = &drv->states[i];