Date: Thu, 30 May 2013 09:29:31 -0400 From: John Baldwin <jhb@freebsd.org> To: freebsd-net@freebsd.org, pyunyh@gmail.com Cc: "Mr. Clif" <clif@eugeneweb.com>, 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: <201305300929.31872.jhb@freebsd.org> In-Reply-To: <20130530051214.GA1530@michelle.cdnetworks.com> References: <201305300113.r4U1DRGp089692@freefall.freebsd.org> <51A6CE52.20501@eugeneweb.com> <20130530051214.GA1530@michelle.cdnetworks.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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. -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201305300929.31872.jhb>