C2/C3 state not entered AMD64 FSC Amilo A 1630
Subsystems (2)
Hi,
It seems as if the C-states are never entered successfully on this machine. Sleep time is negative or zero after trying to go into C2/C3.
The machine has no _CST function defined and tries to trigger C2/C3 states over pblk address:
Apr 7 08:38:29 linux kernel: acpi_ec-0380 [206] acpi_ec_gpe_query : Evaluating _Q30 Apr 7 08:40:06 linux kernel: acpi_ec-0380 [217] acpi_ec_gpe_query : Evaluating _Q30 Apr 7 08:40:10 linux kernel: acpi_processor-0439 [222] acpi_processor_get_inf: Bus mastering arbitration control present Apr 7 08:40:10 linux kernel: acpi_processor-0490 [222] acpi_processor_get_inf: Processor [0:1] Apr 7 08:40:10 linux kernel: Execute Method: [\_PR_.CPU1._PPC] (Node ffff81001fdc06b0) Apr 7 08:40:10 linux kernel: acpi_processor-0192 [223] acpi_processor_get_thr: pblk_address[0x00000810] duty_offset[0] duty_width[0] Apr 7 08:40:10 linux kernel: acpi_processor-0204 [223] acpi_processor_get_thr: No throttling states Apr 7 08:40:10 linux kernel: acpi_processor-0546 [224] acpi_processor_get_pow: No _CST, giving up Apr 7 08:40:10 linux kernel: acpi_processor-0518 [224] acpi_processor_get_pow: lvl2[0x00000814] lvl3[0x00000815] Apr 7 08:40:10 linux kernel: ACPI: CPU0 (power states: C1[C1] C2[C2] C3[C3]) Apr 7 08:40:10 linux kernel: scan-0555 [219] acpi_driver_attach : Found driver [ACPI Processor Driver] for device [CPU1]
With the patch (pasted in the end) I get following output in /proc/acpi/processor/*/power (sleep_ticks is always negative):
active state: C2
max_cstate: C8
bus master activity: 00000003
states:
C1: type[C1] promotion[C2] demotion[--] latency[000] usage[00000010]
failed[00000000]
*C2: type[C2] promotion[C3] demotion[C1] latency[080] usage[135559613]
*failed[135559613]*
C3: type[C3] promotion[--] demotion[C2] latency[800] usage[00386088]
*failed[00386088]*Anyone an idea what could go wrong here?
Could the patch be applied and failed transitions be displayed like above? Without it's not possible to tell whether the states where really entered successfully.
Thanks,
Thomas
________________________________________________
Patch shows failed C2/C3/Cn transitions in/proc/acpi/processor/*/power
include/acpi/processor.h 2005-04-07 10:15:09.000000000 +0200 renamed from include/acpi/processor.h 2005-03-19 07:34:55.000000000 +0100 +1 -0
@@ -48,6 +48,7 @@ u32 latency_ticks; u32 power; u32 usage; + u32 failed; struct acpi_processor_cx_policy promotion; struct acpi_processor_cx_policy demotion; };
drivers/acpi/processor_idle.c 2005-04-07 15:59:58.000000000 +0200 renamed from drivers/acpi/processor_idle.c 2005-03-19 07:35:03.000000000 +0100 +5 -1
@@ -278,7 +278,7 @@ * go to an ISR rather than here. Need to instrument * base interrupt handler. */ - sleep_ticks = 0xFFFFFFFF; + sleep_ticks = 0xFFFFFFF; break; case ACPI_STATE_C2:
@@ -319,6 +319,8 @@ local_irq_enable(); return; } + if (sleep_ticks < 0) + cx->failed++; next_state = pr->power.state;
@@ -910,6 +912,8 @@ seq_printf(seq, "latency[%03d] usage[%08d]\n", pr->power.states[i].latency, pr->power.states[i].usage); + seq_printf(seq, " failed[%08d]\n", + pr->power.states[i].failed); } end: