Date: Tue, 3 Jan 2006 09:24:43 -0500 From: John Baldwin <jhb@freebsd.org> To: freebsd-acpi@freebsd.org, Anders Nordby <anders@freebsd.org> Subject: Re: i386/89545: Compaq DL 360 ACPI boot problem Message-ID: <200601030924.43950.jhb@freebsd.org> In-Reply-To: <200512311230.jBVCUBfP075728@freefall.freebsd.org> References: <200512311230.jBVCUBfP075728@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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 <anders@FreeBSD.org> > To: John Baldwin <jhb@freebsd.org> > 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: <COMPAQ MICRO> 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<n>: > lines. > > Applying the printf patch then, I get: > > acpi0: <COMPAQ MICRO> 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 <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200601030924.43950.jhb>