From owner-freebsd-acpi@FreeBSD.ORG Thu Mar 26 14:09:17 2009 Return-Path: Delivered-To: freebsd-acpi@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3AB6F106564A for ; Thu, 26 Mar 2009 14:09:17 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 5F6638FC14 for ; Thu, 26 Mar 2009 14:09:15 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from odyssey.starpoint.kiev.ua (alpha-e.starpoint.kiev.ua [212.40.38.101]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id QAA27073; Thu, 26 Mar 2009 16:09:10 +0200 (EET) (envelope-from avg@icyb.net.ua) Message-ID: <49CB8C86.4020800@icyb.net.ua> Date: Thu, 26 Mar 2009 16:09:10 +0200 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.21 (X11/20090323) MIME-Version: 1.0 To: Bruce Cran References: <200903200030.n2K0U3iG011009@freefall.freebsd.org> <20090325223914.4387eeae@gluon.draftnet> In-Reply-To: <20090325223914.4387eeae@gluon.draftnet> X-Enigmail-Version: 0.95.7 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: freebsd-acpi@FreeBSD.org Subject: Re: kern/108581: [sysctl] sysctl: hw.acpi.cpu.cx_lowest: Invalid argument 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: Thu, 26 Mar 2009 14:09:17 -0000 on 26/03/2009 00:39 Bruce Cran said the following: > On Fri, 20 Mar 2009 00:30:03 GMT > Daniel Dvořák wrote: > >> The following reply was made to PR kern/108581; it has been noted by >> GNATS. >> >> From: =?UTF-8?Q?Daniel_Dvo=C5=99=C3=A1k?= >> To: , >> >> Cc: >> Subject: Re: kern/108581: [sysctl] sysctl: hw.acpi.cpu.cx_lowest: >> Invalid argument Date: Fri, 20 Mar 2009 01:01:51 +0100 >> >> This is a multi-part message in MIME format. >> >> ------=_NextPart_000_0007_01C9A8F7.746C4190 >> Content-Type: text/plain; >> charset="UTF-8" >> Content-Transfer-Encoding: quoted-printable >> >> Hi acpi team, >> =20 >> today I have installed fbsd 7.1R on one box with this relativly old = >> error and I was surprised about results .. it is the same: >> =20 >> # uname -a >> FreeBSD X.Y.Z 7.1-RELEASE FreeBSD 7.1-RELEASE #0: Thu Jan 1 >> 14:37:25 = UTC 2009 >> root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC = i386 >> >> # sysctl dev.cpu.0.cx_supported >> dev.cpu.0.cx_supported: C1/0 >> >> # sysctl hw.acpi.cpu.cx_lowest=3DC1 >> hw.acpi.cpu.cx_lowest: C1 >> sysctl: hw.acpi.cpu.cx_lowest: Invalid argument >> =20 >> # sysctl hw.acpi.cpu.cx_lowest=3DC0 >> hw.acpi.cpu.cx_lowest: C1 >> sysctl: hw.acpi.cpu.cx_lowest: Invalid argument >> =20 >> # sysctl hw.acpi.cpu.cx_lowest=3DC1/0 >> hw.acpi.cpu.cx_lowest: C1 >> sysctl: hw.acpi.cpu.cx_lowest: Invalid argument >> >> # dmesg -a | grep "acpi" >> acpi0: on motherboard >> acpi0: Overriding SCI Interrupt from IRQ 9 to IRQ 20 >> acpi0: [ITHREAD] >> acpi0: Power Button (fixed) >> acpi0: reservation of 0, a0000 (3) failed >> acpi0: reservation of 100000, ff00000 (3) failed >> acpi_timer0: <24-bit timer at 3.579545MHz> port 0xe408-0xe40b on >> acpi0 acpi_button0: on acpi0 >> pcib0: port 0xcf8-0xcff on acpi0 >> atkbdc0: port 0x60,0x64 irq 1 on acpi0 >> cpu0: on acpi0 >> hw.acpi.cpu.cx_lowest: >> hw.acpi.cpu.cx_lowest > > I think I've found the problem and have updated the PR kern/108581 > (http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/108581). The global > cpu_cx_count was being initialized to 0 in acpi_cpu_startup > (in /sys/dev/acpica/acpi_cpu.c) but code below it appears to assume that > it's been intialized to 3 because it only sets it if it's higher than > the current CPU supports - that is, cpu_cx_count should reflect the > highest Cx state that all CPUs support. If you specifically mean the generic case (non-cst) as you mention in the PR, then I think that you didn't notice that cpu_cx_count (the global variable) gets updated in acpi_cpu_generic_cx_probe, So after looping over all CPUs it has the value of the maximum Cx level supported by at least one CPU. Only then we loop again and determine the smallest of the supported maximums. -- Andriy Gapon