Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 07 May 2006 15:28:29 -0700
From:      Nate Lawson <nate@cryptography.com>
To:        John Baldwin <jhb@freebsd.org>
Cc:        acpi@freebsd.org, FreeBSD Current <freebsd-current@freebsd.org>
Subject:   local apic timer and C3 cpu idle states
Message-ID:  <445E748D.3020902@cryptography.com>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?445E748D.3020902>