Date: Sun, 25 Jan 2015 20:11:36 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-net@FreeBSD.org Subject: [Bug 188897] [dc] dc ethernet driver seems to prevent the detection of other NIC chipsets Message-ID: <bug-188897-2472-50yg8l1xeT@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-188897-2472@https.bugs.freebsd.org/bugzilla/> References: <bug-188897-2472@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=188897 --- Comment #8 from John Baldwin <jhb@FreeBSD.org> --- So I had missed that you had tried hint.agp.0.disabled=1 before and it fixed this when I re-read this recently. I suspect the re hint would also workaround this. The bug here is the same as one reported recently on net@ and I believe your other PR is a dupe. The problem is that when agp0 goes to allocate a random page of memory, it allocates a resource range that conflicts with the memory I/O windows already claimed by the PCI-PCI bridges on PCI bus 0. We move the window down for the first PCI-PCI bridge that re0 lives behind, but when we do, we move it such that it overlaps the window that the second bridge the quad-port card lives behind. As a result, I believe that some of the memory requests destined for re0 end up getting routed to one of the ports on the quad-port card instead confusing the driver. The second PCI-PCI bridge then probes and notices it is busted, so it moves its window down. If you were to force the re0 device to reattach at that point it would actually work fine, but there's currently not an easy way to do that. The real bug is that the PCI-PCI bridge I/O windows need to be accounted for and not conflicted with. There are a couple of ways to fix this, most of which aren't quite trivial: 1) Reserve the resources assigned to I/O windows just as we do for firmware-assigned BARs before probing any devices. This is probably what I would prefer, but it is unfortunately a bit messy because of the ISA-enable bit (the existing pci_pci driver has quite a bit of code to deal with this already and it would be a shame to duplicate). Also, the PCI bus driver doesn't currently "know" about the resources backing an I/O window the same way it knows about BARs. 1a) Like 1) but sidestep the ISA-enable ickiness by just applying this to memory windows. 2) Flesh out new-bus multipass for x86. This would cause the the PCI-PCI bridge drivers to probe and claim any resources before drivers like agp0 got a chance. This is not a small amount of work however. For now, hint.agp.0.disabled=1 should serve as a workaround for you for all of your cases I believe until I have time to develop and test a better fix. -- You are receiving this mail because: You are the assignee for the bug.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-188897-2472-50yg8l1xeT>