Date: Tue, 25 Mar 2008 15:17:50 -0400 From: John Baldwin <jhb@freebsd.org> To: David Wolfskill <david@catwhisker.org> Cc: freebsd-hardware@freebsd.org Subject: Re: Dell Optiplex 755 hangs every other boot before 82801 Family Hub Interface to PCI Bridge probed Message-ID: <200803251517.50699.jhb@freebsd.org> In-Reply-To: <20080325042703.GT75023@bunrab.catwhisker.org> References: <20080318171434.GA49159@bunrab.catwhisker.org> <200803211102.35682.jhb@freebsd.org> <20080325042703.GT75023@bunrab.catwhisker.org>
next in thread | previous in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
On Tuesday 25 March 2008 12:27:03 am David Wolfskill wrote:
> On Fri, Mar 21, 2008 at 11:02:35AM -0400, John Baldwin wrote:
> > ...
> > Ok. Please apply the patch below and report back which printfs you see.
> >...
>
> Here you go:
>
> ...
> Copyright (c) 1992-2008 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 is a registered trademark of The FreeBSD Foundation.
> FreeBSD 8.0-CURRENT #0: Fri Feb 15 16:13:31 PST 2008
> root@dwolf-bsd.jnpr.net:/common/S4/obj/usr/src/sys/DWOLF
> WARNING: WITNESS option enabled, expect reduced performance.
> ...
> usb6: EHCI version 1.0
> usb6: companion controllers, 2 ports each: usb3 usb4 usb5
> usb6: <EHCI (generic) USB 2.0 controller> on ehci1
> usb6: USB revision 2.0
> uhub6: <Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1> on usb6
> uhub6: 6 ports with 6 removable, self powered
> pcib2: <ACPI PCI-PCI bridge> at device 30.0 on pci0
> pcib2: domain 0
> pcib2: secondary bus 2
> pcib2: subordinate bus 2
> pcib2: I/O decode 0xf000-0xfff
> pcib2: no prefetched decode
> pcib2: Subtractively decoded bridge.
>
> > hang here on alternate boots <
>
> pcib2: fetching _PRT
> pcib2: adding pci bus child device
> pcib2: force attaching PCI link devices found in _PRT
> pcib2: attaching the PCI child bus device
> pci2: <ACPI PCI bus> on pcib2
> pci2: domain=0, physical bus=2
> isab0: <PCI-ISA bridge> at device 31.0 on pci0
> isa0: <ISA bus> on isab0
> atapci1: <Intel (ID=29228086) AHCI controller> port
0xfe00-0xfe07,0xfe10-0xfe13,
> 0xfe20-0xfe27,0xfe30-0xfe33,0xfec0-0xfedf mem 0xff970000-0xff9707ff irq 18
at de
> vice 31.2 on pci0
> atapci1: Reserved 0x20 bytes for rid 0x20 type 4 at 0xfec0
> atapci1: Reserved 0x800 bytes for rid 0x24 type 3 at 0xff970000
> atapci1: [MPSAFE]
> atapci1: [ITHREAD]
> ....
>
>
> In case that wasn't sufficient detail, I've attached the "hang"
> and "nohang" typescripts from the serial console.
Ok, try updated patch (more debugging).
--
John Baldwin
[-- Attachment #2 --]
Index: acpica/acpi.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/acpica/acpi.c,v
retrieving revision 1.246
diff -u -r1.246 acpi.c
--- acpica/acpi.c 10 Mar 2008 22:18:07 -0000 1.246
+++ acpica/acpi.c 25 Mar 2008 19:15:19 -0000
@@ -1766,6 +1766,7 @@
return (FALSE);
buf.Pointer = NULL;
buf.Length = ACPI_ALLOCATE_BUFFER;
+ device_printf(dev, "fetching ACPI object info\n");
error = AcpiGetObjectInfo(h, &buf);
if (ACPI_FAILURE(error))
return (FALSE);
@@ -1776,6 +1777,7 @@
ret = TRUE;
/* Return true for 'present' and 'functioning' */
+ device_printf(dev, "invoking ACPI_DEVICE_PRESENT\n");
if (ACPI_DEVICE_PRESENT(devinfo->CurrentStatus))
ret = TRUE;
Index: acpica/acpi_pcib.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pcib.c,v
retrieving revision 1.60
diff -u -r1.60 acpi_pcib.c
--- acpica/acpi_pcib.c 3 Dec 2005 21:17:17 -0000 1.60
+++ acpica/acpi_pcib.c 25 Mar 2008 19:13:42 -0000
@@ -138,6 +138,7 @@
* XXX: This isn't entirely correct since we may be a PCI bus
* on a hot-plug docking station, etc.
*/
+ device_printf(dev, "checking DeviceIsPresent\n");
if (!acpi_DeviceIsPresent(dev))
return_VALUE(ENXIO);
@@ -147,6 +148,7 @@
* are several valid bridges in the field that do not have a _PRT, so
* only warn about missing tables if bootverbose is set.
*/
+ device_printf(dev, "fetching _PRT\n");
prt->Length = ACPI_ALLOCATE_BUFFER;
status = AcpiGetIrqRoutingTable(acpi_get_handle(dev), prt);
if (ACPI_FAILURE(status) && (bootverbose || status != AE_NOT_FOUND))
@@ -157,6 +159,7 @@
/*
* Attach the PCI bus proper.
*/
+ device_printf(dev, "adding pci bus child device\n");
if ((child = device_add_child(dev, "pci", busno)) == NULL) {
device_printf(device_get_parent(dev), "couldn't attach pci bus\n");
return_VALUE(ENXIO);
@@ -165,8 +168,10 @@
/*
* Now go scan the bus.
*/
+ device_printf(dev, "force attaching PCI link devices found in _PRT\n");
prt_walk_table(prt, prt_attach_devices, dev);
+ device_printf(dev, "attaching the PCI child bus device\n");
return_VALUE (bus_generic_attach(dev));
}
Index: acpica/acpi_pcib_pci.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pcib_pci.c,v
retrieving revision 1.17
diff -u -r1.17 acpi_pcib_pci.c
--- acpica/acpi_pcib_pci.c 2 May 2007 17:50:35 -0000 1.17
+++ acpica/acpi_pcib_pci.c 25 Mar 2008 19:13:06 -0000
@@ -134,7 +134,9 @@
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
pcib_attach_common(dev);
+ device_printf(dev, "fetching softc pointer\n");
sc = device_get_softc(dev);
+ device_printf(dev, "fetching ACPI handle\n");
sc->ap_handle = acpi_get_handle(dev);
return (acpi_pcib_attach(dev, &sc->ap_prt, sc->ap_pcibsc.secbus));
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803251517.50699.jhb>
