diff mbox

ACPI: Idle C-states disabled by max_cstate should not disable the TSC

Message ID alpine.LFD.2.00.0905150138001.10065@localhost.localdomain (mailing list archive)
State Accepted
Headers show

Commit Message

Len Brown May 15, 2009, 5:40 a.m. UTC
From: Len Brown <len.brown@intel.com>

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>
---
 drivers/acpi/processor_idle.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Thomas Gleixner May 15, 2009, 8:27 a.m. UTC | #1
On Fri, 15 May 2009, Len Brown wrote:

> From: Len Brown <len.brown@intel.com>
> 
> 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 |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> index e39a40a..e65476f 100644
> --- a/drivers/acpi/processor_idle.c
> +++ b/drivers/acpi/processor_idle.c
> @@ -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) {
> -- 
> 1.6.3.1.9.g95405b
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index e39a40a..e65476f 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -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) {