Comment 16 for bug 348694

Revision history for this message
William Cattey (wdc-mit) wrote :

Here is more information on the C States from the Dell Senior Tech:

C3 Deep Sleep
Stops all CPU internal and external clocks

Pentium II and above, but not on Core 2 Duo E4000 and E6000;
AMD Turion 64

http://www.hardwaresecrets.com/article/611/4

C4 Deeper Sleep
Reduces CPU voltage

Pentium M and above, but not on Core 2 Duo E4000 and E6000 series;
AMD Turion 64

http://www.hardwaresecrets.com/article/611/5

When I read those hardwaresecrets articles, I didn't understand how a normally running CPU could get into state C3, but the Dell Senior Tech provided additional clarification and speculation:

C3 is different from S3 (suspend / standby).

C3 can be entered while the system is on and running the operating system (usually with no affect on system performance).

The next state, Sleep (C3), cuts all internal clock signals from the CPU, including the clocks from the bus interface unit and from the APIC. This means that when the CPU is in the Sleep mode it can’t answer to important requests coming from the CPU external bus nor interruptions.

That seems to mean that the CPU is not listening for interrupt requests over APIC which may be causing the HPET to malfunction.

C4 is reached after further "idle" conditions, and has to transition to C3, then back up to C0, which could take longer for the APIC to allow interrupts.

----

So I guess the question to ask the Linux HPET driver gurus is: What do you do when you've got a CPU that can stop listening to APIC interrupts behind your back?