ACPI processor: reset the throttling state once it's invalid
authorZhang Rui <rui.zhang@intel.com>
Mon, 11 May 2009 01:36:01 +0000 (09:36 +0800)
committerLen Brown <len.brown@intel.com>
Sat, 16 May 2009 03:21:54 +0000 (23:21 -0400)
If the BIOS hands us an invalid throttling state,
write a valid state.

http://bugzilla.kernel.org/show_bug.cgi?id=13259

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Tested-by: James Ettle <theholyettlz@googlemail.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/processor_throttling.c

index 5f09fb8c0e0547bb2cd8d279f88c76c0aa944da7..7f16f5f8e7d395616a0d82ae8dbbd8fca8a336fb 100644 (file)
@@ -838,6 +838,14 @@ static int acpi_processor_get_throttling_ptc(struct acpi_processor *pr)
        ret = acpi_read_throttling_status(pr, &value);
        if (ret >= 0) {
                state = acpi_get_throttling_state(pr, value);
+               if (state == -1) {
+                       ACPI_WARNING((AE_INFO,
+                               "Invalid throttling state, reset\n"));
+                       state = 0;
+                       ret = acpi_processor_set_throttling(pr, state);
+                       if (ret)
+                               return ret;
+               }
                pr->throttling.state = state;
        }