local apic timer and C3 cpu idle states
Nate Lawson
nate at cryptography.com
Sun May 7 22:29:42 UTC 2006
I've done some debugging of a problem some systems have with idle states
> C1 (hlt). When a lower idle state is enabled, the system seems to
slow down, keystrokes are delayed, etc. C1 has no problems.
In further analysis, it seems the only reason some systems continue
running at all is that USB causes interrupts for polling. The reason
the system seems slower is that the timer rate drops from 120 to about
60 (with HZ=100). With USB disabled, the system is completely
non-operational except if the power button is used to artificially
generate interrupts.
I found that all such systems have an APIC and are using the lapic
timer. With just apic disabled (hint.apic.0.disabled="1"), the acpi
idle states are all usable (C1-C4). The lapic timer stops while the
system is in C3. It seems that Linux had the same problem a while back:
http://www.ussg.iu.edu/hypermail/linux/kernel/0505.0/1002.html
http://www.ussg.iu.edu/hypermail/linux/kernel/0505.0/0850.html
We should not be using the lapic timer on UP systems if acpi idling is
enabled or find some other workaround.
-Nate
More information about the freebsd-acpi
mailing list