diff mbox series

[v2,1/2] ACPI: processor: Do not use C3 w/o ARB_DIS=1

Message ID 20220421133634.19489-1-ville.syrjala@linux.intel.com
State New
Headers show
Series [v2,1/2] ACPI: processor: Do not use C3 w/o ARB_DIS=1 | expand

Commit Message

Ville Syrjala April 21, 2022, 1:36 p.m. UTC
From: Ville Syrjälä <ville.syrjala@linux.intel.com>

commit d6b88ce2eb9d ("ACPI: processor idle: Allow playing dead in C3 state")
was supposedly just trying to enable C3 when the CPU is offlined,
but it also mistakenly enabled C3 usage without setting ARB_DIS=1
in normal idle scenarios.

This results in a machine that won't boot past the point when it first
enters C3. Restore the correct behaviour (either demote to C1/C2, or
use C3 but also set ARB_DIS=1).

I hit this on a Fujitsu Siemens Lifebook S6010 (P3) machine.

Cc: stable@vger.kernel.org
Cc: Woody Suwalski <wsuwalski@gmail.com>
Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Richard Gong <richard.gong@amd.com>
Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Fixes: d6b88ce2eb9d ("ACPI: processor idle: Allow playing dead in C3 state")
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
v2: Paint it in a different color (Rafael)

 drivers/acpi/processor_idle.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 4556c86c3465..5f296e099bce 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -795,7 +795,8 @@  static int acpi_processor_setup_cstates(struct acpi_processor *pr)
 		if (cx->type == ACPI_STATE_C1 || cx->type == ACPI_STATE_C2 ||
 		    cx->type == ACPI_STATE_C3) {
 			state->enter_dead = acpi_idle_play_dead;
-			drv->safe_state_index = count;
+			if (cx->type != ACPI_STATE_C3)
+				drv->safe_state_index = count;
 		}
 		/*
 		 * Halt-induced C1 is not good for ->enter_s2idle, because it