Skip to contentSkip to conversation

C2/C3 state not entered AMD64 FSC Amilo A 1630

PATCH Thomas Renninger 1 participant 1 message Apr 7, 2005

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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: