Date: Mon, 7 Apr 2014 15:03:51 +0900 From: Yonghyeon PYUN <pyunyh@gmail.com> To: Chris H <bsd-lists@bsdforge.com> Cc: freebsd-net <freebsd-net@freebsd.org>, freebsd-stable <freebsd-stable@freebsd.org>, Ian Lepore <ian@freebsd.org> Subject: Re: miibus0: mii_mediachg: can't handle non-zero PHY instance 31 Message-ID: <20140407060351.GA1357@michelle.cdnetworks.com> In-Reply-To: <16934e2751614ab9235ac00c6b6bb2d7.authenticated@ultimatedns.net> References: <20140401065842.GA1364@michelle.cdnetworks.com> <c73ef96319846b3da07db5785f48fb6a.authenticated@ultimatedns.net> <1396384167.81853.210.camel@revolution.hippie.lan> <41917a9e67d0f4519df4b55f3aa6ebe3.authenticated@ultimatedns.net> <20140402003912.GA2938@michelle.cdnetworks.com> <3f97f5646629043fed5e34a77c9c2f3d.authenticated@ultimatedns.net> <20140402020803.GB2938@michelle.cdnetworks.com> <70cd5de109845e30fcb6516af7a6f9de.authenticated@ultimatedns.net> <20140407015104.GC3543@michelle.cdnetworks.com> <16934e2751614ab9235ac00c6b6bb2d7.authenticated@ultimatedns.net>
next in thread | previous in thread | raw e-mail | index | archive | help
--EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Sun, Apr 06, 2014 at 10:49:27PM -0700, Chris H wrote: > > On Thu, Apr 03, 2014 at 01:18:19PM -0700, Chris H wrote: > >> > On Tue, Apr 01, 2014 at 05:53:51PM -0700, Chris H wrote: > >> >> > On Tue, Apr 01, 2014 at 01:40:58PM -0700, Chris H wrote: > >> >> >> > On Tue, 2014-04-01 at 13:19 -0700, Chris H wrote: > >> >> >> >> [...] > >> >> >> >> miibus0: <MII bus> on nfe0 > >> >> >> >> rlphy0: <RTL8201L 10/100 media interface> PHY 0 on miibus0 > >> >> >> >> rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto, auto-flow > >> >> >> >> rlphy1: <RTL8201L 10/100 media interface> PHY 1 on miibus0 > >> >> >> > [...]---big-snip--8<--- > >> >> >> >> miibus0: mii_mediachg: can't handle non-zero PHY instance 1 > >> >> >> >> > >> >> >> >> As you can see, it looks much the same. I have no idea what > >> >> >> >> I should do to better inform the driver/kernel how to better > >> >> >> >> handle it. Or is it the driver, itself? > >> >> >> >> > >> >> >> >> Thank you again, for your thoughtful response. > >> >> >> >> > >> >> >> >> --Chris > >> >> >> >> > >> >> >> > > >> >> >> > I think the way to fix a phy that responds at all addresses is to set a > >> >> >> > hint in loader.conf masking out the ones that aren't real, like so: > >> >> >> > > >> >> >> > hint.miibus.0.phymask="1" > >> >> >> > > >> >> >> > You might be able to set ="0x00000001" to make it more clear it's a > >> >> >> > bitmask, but I'm not sure of that. > >> >> >> > >> >> >> Thank you very much for the hint. I'll give it a shot. > >> >> >> Any idea why this is happening? I have 4 other MB's using the Nvidia > >> >> >> chipset, and the nfe(4) driver. But they don't respond this way. > >> >> >> > >> >> > > >> >> > If some nfe(4) variants badly behave in probing stage, this should > >> >> > be handled by driver. We already have too many hints and tunables > >> >> > and I don't think most users know that. In addition, adding > >> >> > additional NIC may change miibus instance number. > >> >> > > >> >> > Could you show me the output of 'kenv | grep smbios'? > >> >> Yes, of course. > >> >> > >> >> Here it is: > >> >> > >> >> smbios.bios.reldate="11/22/2010" > >> >> smbios.bios.vendor="American Megatrends Inc." > >> >> smbios.bios.version="V2.7" > >> >> smbios.chassis.maker="MSI" > >> >> smbios.chassis.serial="To Be Filled By O.E.M." > >> >> smbios.chassis.tag="To Be Filled By O.E.M." > >> >> smbios.chassis.version="2.0" > >> >> smbios.memory.enabled="2097152" > >> >> smbios.planar.maker="MSI" > >> >> smbios.planar.product="K9N6PGM2-V2 (MS-7309)" > >> >> smbios.planar.serial="To be filled by O.E.M." > >> >> smbios.planar.version="2.0" > >> >> smbios.socket.enabled="1" > >> >> smbios.socket.populated="1" > >> >> smbios.system.maker="MSI" > >> >> smbios.system.product="MS-7309" > >> >> smbios.system.serial="To Be Filled By O.E.M." > >> >> smbios.system.uuid="00000000-0000-0000-0000-406186cd4497" > >> >> smbios.system.version="2.0" > >> >> smbios.version="2.6" > >> >> > >> >> Hope this helps, and thank you for all your time, and trouble. > >> >> > >> > > >> > Thanks for the info. Try attached patch and let me know how it > >> > works. Make sure to remove the hint(hint.miibus.0.phymask="1") > >> > set in loader.conf before testing it. > >> > >> Hello, and thanks for all the attention. > >> Sorry for the delay. I chose to perform a dump(8) before attempting > >> the KERn rebuild with the patch. But the kernel threw a read error > >> message on one of the drives. So I had to sort out the problem on > >> the drive before I could complete the dump. Then, of course I had > >> to reslice, and format another drive to replace the ailing one, > >> before I could perform a restore(8), and start the nfe patch; build > >> && install kernel. Weird; the drive had only a few hours on it. > >> Well, anyway. The patch applied cleanly. So I built, and installed > >> a new kernel with it. X's out the hint.miibus.0.phymask="0x00000001" > >> in loader.conf(5), and bounced the box. Bad news: > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 31 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 30 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 29 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 28 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 27 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 26 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 25 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 24 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 23 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 22 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 21 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 20 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 19 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 18 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 17 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 16 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 15 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 14 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 13 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 12 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 11 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 10 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 9 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 8 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 7 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 6 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 5 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 4 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 3 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 2 > >> miibus0: mii_mediachg: can't handle non-zero PHY instance 1 > >> > >> Just as before. In case it should make any difference; I'm > >> going to attach my copy of src/sys/dev/nfe/if_nfe.c in case > >> there are any differences in mine, that do not coincide with > >> your version/copy (I'm on releng_9 - 9.2-STABLE) > >> > >> FreeBSD demon0 9.2-STABLE FreeBSD 9.2-STABLE #0 r263756M: > >> Thu Apr 3 12:42:03 PDT 2014 > >> root@demon0:/usr/obj/usr/src/sys/DEMON0 amd64 > >> > >> Best wishes, and thanks again. > >> > > > > Oops, could you show me the output of "pciconf -lcbv"? > > Yes. Of course. > [...] > nfe0@pci0:0:7:0: class=0x068000 card=0x73091462 chip=0x03ef10de rev=0xa2 hdr=0x00 > vendor = 'nVidia Corporation' > device = 'MCP61 Ethernet' > class = bridge > bar [10] = type Memory, range 32, base 0xdff7d000, size 4096, enabled > bar [14] = type I/O Port, range 32, base 0xe480, size 8, enabled > cap 01[44] = powerspec 2 supports D0 D1 D2 D3 current D0 > cap 05[50] = MSI supports 8 messages, 64 bit, vector masks enabled with 8 messages > cap 08[6c] = HT MSI fixed address window enabled at 0xfee00000 Thanks a lot for the info. It seems I missed there are 4 variants for MCP61. Try attached patch again. --EeQfGwPcQSOJBaQU Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="nfe.msi.diff2" Index: sys/dev/nfe/if_nfe.c =================================================================== --- sys/dev/nfe/if_nfe.c (revision 264061) +++ sys/dev/nfe/if_nfe.c (working copy) @@ -79,6 +79,7 @@ static int nfe_suspend(device_t); static int nfe_resume(device_t); static int nfe_shutdown(device_t); static int nfe_can_use_msix(struct nfe_softc *); +static int nfe_detect_msik9(struct nfe_softc *); static void nfe_power(struct nfe_softc *); static int nfe_miibus_readreg(device_t, int, int); static int nfe_miibus_writereg(device_t, int, int, int); @@ -334,13 +335,38 @@ nfe_alloc_msix(struct nfe_softc *sc, int count) } } + static int +nfe_detect_msik9(struct nfe_softc *sc) +{ + static char *maker = "MSI"; + static char *product = "K9N6PGM2-V2 (MS-7309)"; + char *m, *p; + int found; + + found = 0; + m = getenv("smbios.planar.maker"); + p = getenv("smbios.planar.product"); + if (m != NULL && p != NULL) { + if (strcmp(m, maker) == 0 && strcmp(p, product) == 0) + found = 1; + } + if (m != NULL) + freeenv(m); + if (p != NULL) + freeenv(p); + + return (found); +} + + +static int nfe_attach(device_t dev) { struct nfe_softc *sc; struct ifnet *ifp; bus_addr_t dma_addr_max; - int error = 0, i, msic, reg, rid; + int error = 0, i, msic, phyloc, reg, rid; sc = device_get_softc(dev); sc->nfe_dev = dev; @@ -608,8 +634,16 @@ nfe_attach(device_t dev) #endif /* Do MII setup */ + phyloc = MII_PHY_ANY; + if (sc->nfe_devid == PCI_PRODUCT_NVIDIA_MCP61_LAN1 || + sc->nfe_devid == PCI_PRODUCT_NVIDIA_MCP61_LAN2 || + sc->nfe_devid == PCI_PRODUCT_NVIDIA_MCP61_LAN3 || + sc->nfe_devid == PCI_PRODUCT_NVIDIA_MCP61_LAN4) { + if (nfe_detect_msik9(sc) != 0) + phyloc = 0; + } error = mii_attach(dev, &sc->nfe_miibus, ifp, nfe_ifmedia_upd, - nfe_ifmedia_sts, BMSR_DEFCAPMASK, MII_PHY_ANY, MII_OFFSET_ANY, + nfe_ifmedia_sts, BMSR_DEFCAPMASK, phyloc, MII_OFFSET_ANY, MIIF_DOPAUSE); if (error != 0) { device_printf(dev, "attaching PHYs failed\n"); --EeQfGwPcQSOJBaQU--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140407060351.GA1357>