Date: Sat, 30 Apr 2011 08:42:11 +0200 From: Wiktor Niesiobedzki <bsd@vink.pl> To: Jack Vogel <jfvogel@gmail.com>, John Baldwin <jhb@freebsd.org> Cc: freebsd-stable@freebsd.org Subject: Re: No data received with Intel Corporation Gigabit CT Desktop Adapter (82574L) Message-ID: <BANLkTi=RiZF%2B-F_BLG%2BSXDEWvSHg-NcZWQ@mail.gmail.com> In-Reply-To: <BANLkTinFtxYBMeSKXBkeU6Lg=DeMJ=arbA@mail.gmail.com> References: <BANLkTim-ve2_du3JoZ7NmLLv4OU%2Bk9F-eQ@mail.gmail.com> <BANLkTi=t87a-L3WJY%2Be1G6Jy-w4PhgQz-Q@mail.gmail.com> <BANLkTinSHNK6hkg_LU0K8BPqKqCf8wwipg@mail.gmail.com> <201104281728.37497.jhb@freebsd.org> <BANLkTikY182RVRpn_WP0dAQrqQGROMoF=Q@mail.gmail.com> <BANLkTinFtxYBMeSKXBkeU6Lg=DeMJ=arbA@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
2011/4/29 Wiktor Niesiobedzki <bsd@vink.pl>: > 2011/4/28 Jack Vogel <jfvogel@gmail.com>: >> On Thu, Apr 28, 2011 at 2:28 PM, John Baldwin <jhb@freebsd.org> wrote: >>> >>> On Thursday, April 28, 2011 5:17:11 pm Wiktor Niesiobedzki wrote: >>> > Though they mention that HT MSI windows is disabled. I'm not sure, >>> > whether this matters. >>> >>> Yes, that is probably what breaks this. >>> >>> -- >>> John Baldwin >> >> Opps, missed that, thanks John.=C2=A0 So, disable MSIX and MSI using sys= ctl, >> then the driver should use legacy when it loads. >> >> Still, I'd get a different motherboard, sucks to not have MSIX :( >> > > Thanks for hints. I've disabled MSIX and MSI: > kadlubek# sysctl hw.pci | grep msi > hw.pci.honor_msi_blacklist: 1 > hw.pci.enable_msix: 0 > hw.pci.enable_msi: 0 > Ok, I found other way round about this. I've did some source code reading and found following tunable: hw.em.enable_msix=3D0 When set in loader.conf to 0, then the card magically starts to work properly. The only thing in our code in em_setup_msix(), that raises my doubts, is the following code path: int rid =3D PCIR_BAR(EM_MSIX_BAR); adapter->msix_mem =3D bus_alloc_resource_any(dev, SYS_RES_MEMORY, &rid, RF_ACTIVE); ... bus_release_resource(dev, SYS_RES_MEMORY, PCIR_BAR(EM_MSIX_BAR), adapter->msix_mem); Though manpage for bus_release_resource specifies, that rid needs to be exactly the same, as this returned by bus_alloc_resource. Changing the bus_release_resource to use rid instead of PCIR_BAR(EM_MSIX_BAR) makes the card working, with sysctl settings: hw.pci.enable_msix: 0 hw.pci.enable_msi: 0 instead of hw.em.enable_msix=3D0 The only thing that worries me, that when I don't have MSIX disabled (anyway), then driver succeeds with the MSI-X allocation. Shouldn't we in em_setup_msix check, how many vectors we have allocated with pci_alloc_msix and if this is 0, then fallback to MSI/Legacy? Or maybe pci_alloc_msix should report an error, when no PCIB_ALLOC_MSIX succeded? Cheers, Wiktor Niesiobedzki
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?BANLkTi=RiZF%2B-F_BLG%2BSXDEWvSHg-NcZWQ>