From owner-freebsd-acpi@FreeBSD.ORG Sun May 7 22:29:42 2006 Return-Path: X-Original-To: acpi@freebsd.org Delivered-To: freebsd-acpi@FreeBSD.ORG Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9B27916A403; Sun, 7 May 2006 22:29:42 +0000 (UTC) (envelope-from nate@cryptography.com) Received: from www.cryptography.com (li-22.members.linode.com [64.5.53.22]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1F35C43D55; Sun, 7 May 2006 22:29:41 +0000 (GMT) (envelope-from nate@cryptography.com) Received: from [10.0.5.50] (ppp-71-139-38-236.dsl.snfc21.pacbell.net [71.139.38.236]) by www.cryptography.com (8.12.8/8.12.8) with ESMTP id k47MTcqL023173 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Sun, 7 May 2006 15:29:39 -0700 Message-ID: <445E748D.3020902@cryptography.com> Date: Sun, 07 May 2006 15:28:29 -0700 From: Nate Lawson User-Agent: Thunderbird 1.5.0.2 (Windows/20060308) MIME-Version: 1.0 To: John Baldwin Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: acpi@freebsd.org, FreeBSD Current Subject: local apic timer and C3 cpu idle states X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 May 2006 22:29:42 -0000 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