2.6.25 regression: powertop says 120K wakeups/sec
authorVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Thu, 10 Apr 2008 01:31:46 +0000 (21:31 -0400)
committerLen Brown <len.brown@intel.com>
Fri, 25 Apr 2008 00:05:01 +0000 (20:05 -0400)
Patch to fix huge number of wakeups reported due to recent changes in
processor_idle.c. The problem was that the entry_method determination was
broken due to one of the recent commits (bc71bec91f987) causing
C1 entry to not to go to halt.

http://lkml.org/lkml/2008/3/22/124

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/processor_idle.c

index 788da9781f80ffb5311b396cd3557b0786376dcd..836362b50faa41f731b8a04a93a298fd9dedc41c 100644 (file)
@@ -848,6 +848,7 @@ static int acpi_processor_get_power_info_default(struct acpi_processor *pr)
                /* all processors need to support C1 */
                pr->power.states[ACPI_STATE_C1].type = ACPI_STATE_C1;
                pr->power.states[ACPI_STATE_C1].valid = 1;
+               pr->power.states[ACPI_STATE_C1].entry_method = ACPI_CSTATE_HALT;
        }
        /* the C0 state only exists as a filler in our array */
        pr->power.states[ACPI_STATE_C0].valid = 1;
@@ -960,6 +961,9 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr)
                                 cx.address);
                }
 
+               if (cx.type == ACPI_STATE_C1) {
+                       cx.valid = 1;
+               }
 
                obj = &(element->package.elements[2]);
                if (obj->type != ACPI_TYPE_INTEGER)