From owner-freebsd-acpi@FreeBSD.ORG Thu Dec 22 16:17:03 2005 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 8854B16A41F for ; Thu, 22 Dec 2005 16:17:03 +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 9770A43D6D for ; Thu, 22 Dec 2005 16:16:55 +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 4365387 for multiple; Thu, 22 Dec 2005 11:18:07 -0500 Received: from localhost (john@localhost [127.0.0.1]) by server.baldwin.cx (8.13.4/8.13.4) with ESMTP id jBMGGP5p035197; Thu, 22 Dec 2005 11:16:26 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Pawel Worach Date: Thu, 22 Dec 2005 11:16:36 -0500 User-Agent: KMail/1.8.2 References: <5A00483D-8A89-4180-B982-0F9437198200@dragondata.com> <200511281158.11463.jhb@freebsd.org> <43A9E677.1000105@gmail.com> In-Reply-To: <43A9E677.1000105@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200512221116.38675.jhb@freebsd.org> X-Virus-Scanned: ClamAV version 0.87.1, clamav-milter version 0.87 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: freebsd-acpi@freebsd.org, Kevin Day Subject: Re: ACPI hang on 6.0-RELEASE on Compaq Proliant ML530 (866MHz Xeon) 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, 22 Dec 2005 16:17:03 -0000 On Wednesday 21 December 2005 06:34 pm, Pawel Worach wrote: > John Baldwin wrote: > > On Monday 28 November 2005 09:38 am, Kevin Day wrote: > >> On Nov 28, 2005, at 7:10 AM, John Baldwin wrote: > >>> On Saturday 26 November 2005 11:18 am, Kevin Day wrote: > >>>> Hangs on boot after displaying kernel copyright notice with ACPI > >>>> enabled. Works fine with ACPI disabled. > >>>> > >>>> Server has two CPUs, but hang occurs with or without SMP kernel. > >>>> > >>>> > >>>> > >>>> acpidump at http://www.dragondata.com/~toasty/toasty-ml530.asl > >>>> > >>>> > >>>> dmesg from working config: > >>> > >>> Any chance you could use a serial console to capture the dmesg from > >>> a booth > >>> with ACPI enabled? > >> > >> I get as far as: > >>> Copyright (c) 1992-2005 The FreeBSD Project. > >>> Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, > >>> 1994 > >>> The Regents of the University of California. All rights > >>> reserved. > >>> FreeBSD 6.0-RELEASE #0: Thu Nov 3 09:36:13 UTC 2005 > >>> root@x64.samsco.home:/usr/obj/usr/src/sys/GENERIC > >> > >> before it hangs. I realize that's not much to go on. :) > >> > >> > >> Since the next thing it should be displaying is the mptable string, > >> just in case this is relevant, here's the output of mptable: > > > > Actually, in the ACPI case it won't use the mptable, but use the MADT > > table from ACPI instead. It is odd that your MADT is missing a Local NMI > > entry for CPU 0. Could you capture the dmesg from a boot -v over a > > serial console with ACPI enabled? > > Hi, > > I have the same problem with ML530 hardware, both RELENG_6_0 and > RELENG_6 fail in the same way. ASL and boot -v output can be found here: > http://62.119.221.30/ml530-acpi/ > > It just hangs there after the "pci_link1: on acpi0" > message, break to debugger doesn't work. > > Regards Unfortunately what I need is for someone with the hardware to add some more printf's to find where it is hanging. Here's a patch. Please get a verbose dmesg with this, thanks. 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 22 Dec 2005 16:15:51 -0000 @@ -421,6 +421,7 @@ ACPI_STATUS status; int i; + device_printf("attach started\n"); sc = device_get_softc(dev); sc->pl_dev = dev; ACPI_SERIAL_BEGIN(pci_link); @@ -432,14 +433,19 @@ */ creq.in_dpf = DPF_OUTSIDE; creq.count = 0; + device_printf("calling _CRS\n"); status = AcpiWalkResources(acpi_get_handle(dev), "_CRS", acpi_count_irq_resources, &creq); + device_printf("_CRS returned %s\n", AcpiFormatException(status)); sc->pl_crs_bad = ACPI_FAILURE(status); if (sc->pl_crs_bad) { creq.in_dpf = DPF_OUTSIDE; creq.count = 0; + device_printf("calling _PRS\n"); status = AcpiWalkResources(acpi_get_handle(dev), "_PRS", acpi_count_irq_resources, &creq); + device_printf("_PRS returned %s\n", + AcpiFormatException(status)); if (ACPI_FAILURE(status)) { device_printf(dev, "Unable to parse _CRS or _PRS: %s\n", @@ -449,6 +455,7 @@ } } sc->pl_num_links = creq.count; + device_printf("num_links = %d\n", sc->pl_num_links); if (creq.count == 0) return (0); sc->pl_links = malloc(sizeof(struct link) * sc->pl_num_links, @@ -462,6 +469,7 @@ sc->pl_links[i].l_isa_irq = FALSE; sc->pl_links[i].l_res_index = -1; } + device_printf("links initialized\n", sc->pl_num_links); /* Try to read the current settings from _CRS if it is valid. */ if (!sc->pl_crs_bad) { @@ -469,8 +477,11 @@ rreq.link_index = 0; rreq.res_index = 0; rreq.sc = sc; + device_printf("calling _CRS again\n"); status = AcpiWalkResources(acpi_get_handle(dev), "_CRS", link_add_crs, &rreq); + device_printf("_CRS returned %s\n", + AcpiFormatException(status)); if (ACPI_FAILURE(status)) { device_printf(dev, "Unable to parse _CRS: %s\n", AcpiFormatException(status)); @@ -487,8 +498,10 @@ rreq.link_index = 0; rreq.res_index = 0; rreq.sc = sc; + device_printf("calling _PRS again\n"); status = AcpiWalkResources(acpi_get_handle(dev), "_PRS", link_add_prs, &rreq); + device_printf("_PRS returned %s\n", AcpiFormatException(status)); if (ACPI_FAILURE(status) && (status != AE_NOT_FOUND || sc->pl_crs_bad)) { device_printf(dev, "Unable to parse _PRS: %s\n", -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org