i386/89545: Compaq DL 360 ACPI boot problem
John Baldwin
jhb at freebsd.org
Tue Jan 3 06:23:59 PST 2006
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 at FreeBSD.org>
> To: John Baldwin <jhb at freebsd.org>
> Cc: bug-followup at freebsd.org, uralmetal at 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 at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" = http://www.FreeBSD.org
More information about the freebsd-acpi
mailing list