Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Apr 2014 17:38:26 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Don Lewis <truckman@freebsd.org>
Cc:        stable@freebsd.org
Subject:   Re: Thinkpad R60 hangs when booting recent 8.4-STABLE
Message-ID:  <201404301738.26632.jhb@freebsd.org>
In-Reply-To: <201404301730.s3UHU197032339@gw.catspoiler.org>
References:  <201404301730.s3UHU197032339@gw.catspoiler.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, April 30, 2014 1:30:01 pm Don Lewis wrote:
> On 30 Apr, John Baldwin wrote:
> > On Tuesday, April 29, 2014 9:17:19 pm Don Lewis wrote:
> >> On 29 Apr, John Baldwin wrote:
> >> > On Monday, April 28, 2014 8:56:03 pm Don Lewis wrote:
> >> 
> >> I just took a closer look at the dmesg output from the two kernels.
> >> 
> >> >> agp0: <Intel 82855 host to AGP bridge> on hostb0
> >> >> hostb0: Reserved 0x10000000 bytes for rid 0x10 type 3 at 0xd0000000
> >> 
> >> The above line is different with the r262226 kernel:
> >>  hostb0: Reserved 0x10000000 bytes for rid 0x10 type 3 at 0
> > 
> > Yes, a resource at 0 is going to break things.  9.2 has the NEW_PCIB 
option
> > enabled.  You can try enabling that for 8.4 to see if it fixes this issue.
> > If it does, it narrows down where to look for the bug.
> 
> It behaves the same way with NEW_PCIB.  I see hostb at 0 and then the
> hang shortly thereafter.

Ok.  hostb isn't actually behind a bridge so that probably makes sense.  The
one other reporter who sent me debug output had a BAR on his vgapci0 device
that ended up being at 0 as well (and an active BAR at 0 is pretty much
guaranteed to hose a box).

Are you up for doing some printf sleuthing?  There are two odd things that I 
see so far:

1) the base address of 0.  The question here is if pci_add_map() in 
sys/dev/pci/pci.c decides to set start to 0 explicitly, or if it happens 
further up the callchain (should be bus_alloc_resource calls in 
sys/dev/acpica/acpi_pcib_acpi.c, sys/x86/x86/nexus.c and then in the
rman code itself in sys/kern/subr_rman.c)

2) The 'reserved' printfs during boot probe.  Those come from a printf in 
pci_alloc_resource() in sys/dev/pci/pci.c.  However, that should not be called 
until a driver attaches to a device and calls bus_alloc_resource().  It should 
not be called from pci_add_child() as it seems to be now.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201404301738.26632.jhb>