ACPI: Idle C-states disabled by max_cstate should not disable the TSC
authorLen Brown <len.brown@intel.com>
Fri, 15 May 2009 05:29:31 +0000 (01:29 -0400)
committerLen Brown <len.brown@intel.com>
Sat, 16 May 2009 05:52:39 +0000 (01:52 -0400)
Processor idle power states C2 and C3 stop the TSC on many machines.
Linux recognizes this situation and marks the TSC as unstable:

Marking TSC unstable due to TSC halts in idle

But if those same machines are booted with "processor.max_cstate=1",
then there is no need to validate C2 and C3, and no need to
disable the TSC, which can be reliably used as a clocksource.

Signed-off-by: Len Brown <len.brown@intel.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
drivers/acpi/processor_idle.c

index e39a40a2ceaed8bc23f4ed8199d390d823b0712f..e65476fdf40da43dd428e13446e224bfe68884a6 100644 (file)
@@ -582,7 +582,7 @@ static int acpi_processor_power_verify(struct acpi_processor *pr)
 
        pr->power.timer_broadcast_on_state = INT_MAX;
 
-       for (i = 1; i < ACPI_PROCESSOR_MAX_POWER; i++) {
+       for (i = 1; i < ACPI_PROCESSOR_MAX_POWER && i <= max_cstate; i++) {
                struct acpi_processor_cx *cx = &pr->power.states[i];
 
                switch (cx->type) {