From owner-freebsd-acpi@FreeBSD.ORG Tue Jan 3 14:23:59 2006 Return-Path: X-Original-To: freebsd-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 5FDCE16A41F; Tue, 3 Jan 2006 14:23:59 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from speedfactory.net (mail6.speedfactory.net [66.23.216.219]) by mx1.FreeBSD.org (Postfix) with ESMTP id 61FC843D5E; Tue, 3 Jan 2006 14:23:58 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (unverified [66.23.211.162]) by speedfactory.net (SurgeMail 3.5b3) with ESMTP id 5167956 for multiple; Tue, 03 Jan 2006 09:22:06 -0500 Received: from localhost (john@localhost [127.0.0.1]) by server.baldwin.cx (8.13.4/8.13.4) with ESMTP id k03ENswb085894; Tue, 3 Jan 2006 09:23:54 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: freebsd-acpi@freebsd.org, Anders Nordby Date: Tue, 3 Jan 2006 09:24:43 -0500 User-Agent: KMail/1.8.2 References: <200512311230.jBVCUBfP075728@freefall.freebsd.org> In-Reply-To: <200512311230.jBVCUBfP075728@freefall.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-6" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200601030924.43950.jhb@freebsd.org> X-Virus-Scanned: ClamAV 0.87.1/1225/Mon Jan 2 12:54:07 2006 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-1.4 required=4.2 tests=ALL_TRUSTED autolearn=failed version=3.1.0 X-Spam-Checker-Version: SpamAssassin 3.1.0 (2005-09-13) on server.baldwin.cx X-Server: High Performance Mail Server - http://surgemail.com r=1653887525 Cc: Subject: Re: i386/89545: Compaq DL 360 ACPI boot problem 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: Tue, 03 Jan 2006 14:23:59 -0000 On Saturday 31 December 2005 07:30 am, Anders Nordby wrote: > The following reply was made to PR i386/89545; it has been noted by GNATS. > > From: Anders Nordby > To: John Baldwin > Cc: bug-followup@freebsd.org, uralmetal@gmail.com > Subject: Re: i386/89545: Compaq DL 360 ACPI boot problem > Date: Sat, 31 Dec 2005 13:27:28 +0100 > > Hi, > > On Thu, Dec 29, 2005 at 10:34:15PM +0100, Anders Nordby wrote: > > (..) > > For the record. I just tried using 6.0-STABLE as of december 30. It > still hangs: > > acpi0: on motherboard > acpi0: Power Button (fixed) > unknown: I/O range not supported > > But now it stops earlier, or at least it doesn't print the pci_link: > lines. > > Applying the printf patch then, I get: > > acpi0: on motherboard > acpi0: Power Button (fixed) > unknown: I/O range not supported > attach started > pci_link0: calling _CRS > pci_link0: _CRS returned AE_OK > pci_link0: num_links = 0 > attach started > > Phew, luckily acpi is a module, so I only need to recompile it instead > of the whole kernel. I had ACPI problems with FreeBSD 6 on other Compaq > servers as well, one DL 580. Once we get this solved for DL 360 I can try > with the 580 (it is in production, so I can not easily take it down when > I want -- but it would be nice to use both CPUs on it ;-)). Ok, looks like it is ACPI_SERIAL_BEGIN() it is hanging on. Also, the reason you don't see the pritnf's in 6-stable is the devices are now marked quiet so they don't show up in dmesg by default anymore. The problem is I must have forgotten to release the pci_link lock somewhere. If you had INVARIANTS on it should have panic'd in sx_xlock. As it is, I think this patch will fix the hangs on both 6.x and 7.0: Index: acpi_pci_link.c =================================================================== RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pci_link.c,v retrieving revision 1.51 diff -u -r1.51 acpi_pci_link.c --- acpi_pci_link.c 5 Dec 2005 19:50:00 -0000 1.51 +++ acpi_pci_link.c 3 Jan 2006 14:24:23 -0000 @@ -449,8 +449,10 @@ } } sc->pl_num_links = creq.count; - if (creq.count == 0) + if (creq.count == 0) { + ACPI_SERIAL_END(pci_link); return (0); + } sc->pl_links = malloc(sizeof(struct link) * sc->pl_num_links, M_PCI_LINK, M_WAITOK | M_ZERO); -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org