Date: Wed, 28 Jun 2006 17:21:12 +0300 From: Giorgos Keramidas <keramida@freebsd.org> To: Bill Paul <wpaul@freebsd.org> Cc: cvs-src@freebsd.org, src-committers@freebsd.org, cvs-all@freebsd.org Subject: Re: cvs commit: src/share/man/man4 re.4 src/sys/dev/re if_re.c src/sys/dev/mii rgephy.c src/sys/pci if_rlreg.h Message-ID: <20060628142112.GA1161@gothmog.pc> In-Reply-To: <20060628090112.GB5952@gothmog.pc> References: <20060627172841.GA1310@gothmog.pc> <20060628020228.EFC6716A403@hub.freebsd.org> <20060628090112.GB5952@gothmog.pc>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2006-06-28 12:01, Giorgos Keramidas <keramida@freebsd.org> wrote: > Attached are two files, with `dmesg -v' output: > > * The `dmesg.nodriver.txt' file is with a kernel built from sources > checked out at 2006.06.27.08.04.55 (including the changes of the > commit above). > > * The `dmesg.txt' file is with a kernel build from the same source > tree, but with if_re.c, rgephy.c and if_rlreg.h reverted to: > > src/sys/dev/re/if_re.c,v 1.67 > src/sys/dev/mii/rgephy.c,v 1.8 > src/sys/pci/if_rlreg.h,v 1.56 I think I got it :) A modified if_re.c to include this diff ... %%% === if_re.c ================================================================== --- if_re.c (revision 143) +++ if_re.c (local) @@ -866,6 +866,12 @@ sc = device_get_softc(dev); while (t->rl_name != NULL) { + if (bootverbose) + device_printf(dev, "dev 0x%04x:0x%04x " + "try @ %p 0x%04x:0x%04x:0x%x:%s\n", + pci_get_vendor(dev), pci_get_device(dev), t, + t->rl_vid, t->rl_did, t->rl_basetype, t->rl_name); + if ((pci_get_vendor(dev) == t->rl_vid) && (pci_get_device(dev) == t->rl_did)) { /* @@ -880,6 +886,11 @@ continue; } + device_printf(dev, "dev 0x%04x:0x%04x " + "matches @ %p 0x%04x:0x%04x:0x%x:%s\n", + pci_get_vendor(dev), pci_get_device(dev), t, + t->rl_vid, t->rl_did, t->rl_basetype, t->rl_name); + /* * Temporarily map the I/O space * so we can read the chip ID register. @@ -901,6 +912,11 @@ device_set_desc(dev, t->rl_name); return (BUS_PROBE_DEFAULT); } + device_printf(dev, "dev 0x%04x:0x%04x hw 0x%x " + "!= re @ %p 0x%04x:0x%04x:0x%x:%s\n", + pci_get_vendor(dev), pci_get_device(dev), hwrev, + t, t->rl_vid, t->rl_did, t->rl_basetype, + t->rl_name); } t++; } %%% prints the following at verbose-boot time with the current HEAD version of files: # [...] # pci2: <ACPI PCI bus> on pcib3 # pci2: physical bus=2 # found-> vendor=0x10ec, dev=0x8168, revid=0x01 # bus=2, slot=0, func=0 # class=02-00-00, hdrtype=0x00, mfdev=0 # cmdreg=0x0007, statreg=0x0010, cachelnsz=4 (dwords) # lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns) # intpin=a, irq=10 # powerspec 2 supports D0 D1 D2 D3 current D0 # MSI supports 2 messages, 64 bit # map[10]: type 4, range 32, base 0000c800, size 8, enabled # pcib3: (null) requested I/O range 0xc800-0xc8ff: in range # map[18]: type 1, range 64, base e7eff000, size 12, enabled # pcib3: (null) requested memory range 0xe7eff000-0xe7efffff: good # pcib3: matched entry for 2.0.INTA (src \\_SB_.LNKD:0) # pcib3: slot 0 INTA routed to irq 10 via \\_SB_.LNKD # re0: dev 0x10ec:0x8168 try @ 0xc071ffc0 0x1186:0x4300:0x4000000:D-Link DGE-528(T) Gigabit Ethernet Adapter # re0: dev 0x10ec:0x8168 try @ 0xc071ffcc 0x10ec:0x8139:0x74800000:RealTek 8139C+ 10/100BaseTX # re0: dev 0x10ec:0x8168 try @ 0xc071ffd8 0x10ec:0x8136:0x34000000:RealTek 8101E PCIe 10/100baseTX # re0: dev 0x10ec:0x8168 try @ 0xc071ffe4 0x10ec:0x8168:0x38000000:RealTek 8168B/8111B PCIe Gigabit Ethernet # re0: dev 0x10ec:0x8168 matches @ 0xc071ffe4 0x10ec:0x8168:0x38000000:RealTek 8168B/8111B PCIe Gigabit Ethernet # re0: Reserved 0x100 bytes for rid 0x10 type 4 at 0xc800 # re0: dev 0x10ec:0x8168 hw 0x30000000 != re @ 0xc071ffe4 0x10ec:0x8168:0x38000000:RealTek 8168B/8111B PCIe Gigabit Ethernet # re0: dev 0x10ec:0x8168 try @ 0xc071fff0 0x10ec:0x8169:0x0:RealTek 8169 Gigabit Ethernet # re0: dev 0x10ec:0x8168 try @ 0xc071fffc 0x10ec:0x8169:0x4000000:RealTek 8169S Single-chip Gigabit Ethernet # re0: dev 0x10ec:0x8168 try @ 0xc0720008 0x10ec:0x8169:0x10000000:RealTek 8169SB/8110SB Single-chip Gigabit Ethernet # re0: dev 0x10ec:0x8168 try @ 0xc0720014 0x10ec:0x8169:0x18000000:RealTek 8169SC/8110SC Single-chip Gigabit Ethernet # re0: dev 0x10ec:0x8168 try @ 0xc0720020 0x10ec:0x8169:0x800000:RealTek 8110S Single-chip Gigabit Ethernet # re0: dev 0x10ec:0x8168 try @ 0xc072002c 0x1259:0xc107:0x4000000:Corega CG-LAPCIGT (RTL8169S) Gigabit Ethernet # re0: dev 0x10ec:0x8168 try @ 0xc0720038 0x1737:0x1032:0x4000000:Linksys EG1032 (RTL8169S) Gigabit Ethernet # pci2: <network, ethernet> at device 0.0 (no driver attached) # [...] Sure enough, the latest changes included a change in the hwrev of RL_HWREV_8168 from 0x30000000 to 0x38000000 [in revision 1.57 of src/sys/pci/if_rlreg.h]. I'm not sure if this is the correct fix, but switching back to 0x30000000 fixes probing of my re(4) interface here. The change I did (on top of the bootverbose changes shown above) was: %%% === if_rlreg.h ================================================================== --- if_rlreg.h (revision 143) +++ if_rlreg.h (local) @@ -154,7 +154,7 @@ #define RL_HWREV_8169_8110SC 0x18000000 #define RL_HWREV_8100E 0x30800000 #define RL_HWREV_8101E 0x34000000 -#define RL_HWREV_8168 0x38000000 +#define RL_HWREV_8168 0x30000000 #define RL_HWREV_8139 0x60000000 #define RL_HWREV_8139A 0x70000000 #define RL_HWREV_8139AG 0x70800000 %%% Then, verbose boot shows the device probing as it used to: # pci2: <ACPI PCI bus> on pcib3 # pci2: physical bus=2 # found-> vendor=0x10ec, dev=0x8168, revid=0x01 # bus=2, slot=0, func=0 # class=02-00-00, hdrtype=0x00, mfdev=0 # cmdreg=0x0007, statreg=0x0010, cachelnsz=4 (dwords) # lattimer=0x00 (0 ns), mingnt=0x00 (0 ns), maxlat=0x00 (0 ns) # intpin=a, irq=10 # powerspec 2 supports D0 D1 D2 D3 current D0 # MSI supports 2 messages, 64 bit # map[10]: type 4, range 32, base 0000c800, size 8, enabled # pcib3: (null) requested I/O range 0xc800-0xc8ff: in range # map[18]: type 1, range 64, base e7eff000, size 12, enabled # pcib3: (null) requested memory range 0xe7eff000-0xe7efffff: good # pcib3: matched entry for 2.0.INTA (src \\_SB_.LNKD:0) # pcib3: slot 0 INTA routed to irq 10 via \\_SB_.LNKD # re0: dev 0x10ec:0x8168 try @ 0xc071ffc0 0x1186:0x4300:0x4000000:D-Link DGE-528(T) Gigabit Ethernet Adapter # re0: dev 0x10ec:0x8168 try @ 0xc071ffcc 0x10ec:0x8139:0x74800000:RealTek 8139C+ 10/100BaseTX # re0: dev 0x10ec:0x8168 try @ 0xc071ffd8 0x10ec:0x8136:0x34000000:RealTek 8101E PCIe 10/100baseTX # re0: dev 0x10ec:0x8168 try @ 0xc071ffe4 0x10ec:0x8168:0x30000000:RealTek 8168B/8111B PCIe Gigabit Ethernet # re0: dev 0x10ec:0x8168 matches @ 0xc071ffe4 0x10ec:0x8168:0x30000000:RealTek 8168B/8111B PCIe Gigabit Ethernet # re0: Reserved 0x100 bytes for rid 0x10 type 4 at 0xc800 # re0: dev 0x10ec:0x8168 try @ 0xc071ffc0 0x1186:0x4300:0x4000000:D-Link DGE-528(T) Gigabit Ethernet Adapter # re0: dev 0x10ec:0x8168 try @ 0xc071ffcc 0x10ec:0x8139:0x74800000:RealTek 8139C+ 10/100BaseTX # re0: dev 0x10ec:0x8168 try @ 0xc071ffd8 0x10ec:0x8136:0x34000000:RealTek 8101E PCIe 10/100baseTX # re0: dev 0x10ec:0x8168 try @ 0xc071ffe4 0x10ec:0x8168:0x30000000:RealTek 8168B/8111B PCIe Gigabit Ethernet # re0: dev 0x10ec:0x8168 matches @ 0xc071ffe4 0x10ec:0x8168:0x30000000:RealTek 8168B/8111B PCIe Gigabit Ethernet # pcib3: re0 requested I/O range 0xc800-0xc8ff: in range # re0: <RealTek 8168B/8111B PCIe Gigabit Ethernet> port 0xc800-0xc8ff mem 0xe7eff000-0xe7efffff irq 10 at device 0.0 on pci2 # pcib3: re0 requested I/O range 0xc800-0xc8ff: in range # miibus0: <MII bus> on re0 # rgephy0: <RTL8169S/8110S media interface> on miibus0 # rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseTX, 1000baseTX-FDX, auto # re0: bpf attached # re0: Ethernet address: 00:15:f2:b9:84:61 # re0: [MPSAFE] # re0: [FAST] Does this change back to hwrev of 0x30000000 look like the correct thing to do?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060628142112.GA1161>