Date: Mon, 10 Jun 2013 12:13:11 -0700 From: "Mr. Clif" <clif@eugeneweb.com> To: John Baldwin <jhb@freebsd.org> Cc: pyunyh@gmail.com, freebsd-net@freebsd.org, yongari@freebsd.org Subject: Re: misc/179033: [dc] dc ethernet driver seems to have issues with some multiport card and mother board combinations Message-ID: <51B62547.5000207@eugeneweb.com> In-Reply-To: <201305300929.31872.jhb@freebsd.org> References: <201305300113.r4U1DRGp089692@freefall.freebsd.org> <51A6CE52.20501@eugeneweb.com> <20130530051214.GA1530@michelle.cdnetworks.com> <201305300929.31872.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi John and Pyun, Ok got the new kernel installed and tested. Yes it works! :-) Maybe that will also fix a simular problem with the sun cards (cas[03]), except I don't see a define like that in if_cas.c. Suggestions? Thanks, Clif John Baldwin wrote: > On Thursday, May 30, 2013 1:12:14 am YongHyeon PYUN wrote: >> On Wed, May 29, 2013 at 08:58:10PM -0700, Mr. Clif wrote: >>> Sorry for the confusion Pyun, >>> >>> I started looking at it in the context of pfsense, but they rejected my >>> bug report which was understandable because it's an upstream issue. They >>> suggested I resubmit it to you guys if I could reproduce it. So I booted >>> FreeBSD and lo and behold the same two ports failed in exactly the same >> Ok, I'd like to fix that. > Hmmm, the dc(4) driver is using the I/O port BARs rather than the > memory BARs for its registers and this bug seems to be that the dc(4) > device can't properly access its registers on dc0 and dc1 on the > Atom box. The one thing I see is that the BIOS on the Atom box assigns > addresses in the 0x1100-0x11ff range for dc0 and dc1. Those addresses > conflict with ISA I/O aliases for the 0x100-0x1ff range. The Dell BIOS > is more careful to avoid these ranges. > > I think the fix is that I need to fix the PCI-PCI bridge to reject these > resource ranges if the ISA enable bit is set in the bridge's control > register. However, for the time being you can change dc(4) to use the > memory BAR instead of the I/O port BAR as a workaround: > > Index: if_dc.c > =================================================================== > --- if_dc.c (revision 251132) > +++ if_dc.c (working copy) > @@ -128,7 +128,7 @@ __FBSDID("$FreeBSD$"); > #include<dev/pci/pcireg.h> > #include<dev/pci/pcivar.h> > > -#define DC_USEIOSPACE > +//#define DC_USEIOSPACE > > #include<dev/dc/if_dcreg.h> > > > If this fixes it then I can take this PR as a test case for handling the ISA > enable bit in the PCI-PCI bridge code. >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?51B62547.5000207>