Recent checkin to bge broke my Broadcom ethernet

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

Recent checkin to bge broke my Broadcom ethernet

trondd-2
>Synopsis: Latest bge driver change results in inability to reach gateway
>Category: kernel
>Environment:
        System      : OpenBSD 5.8
        Details     : OpenBSD 5.8-current (GENERIC.MP) #14: Wed Nov 11 19:01:19 CST 2015
                         [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP

        Architecture: OpenBSD.amd64
        Machine     : amd64
>Description:
        Updated to current (previous update was Oct 31) and my bge device was unable
to communicate with even the gateway.  Pinging the gateway IP results in Host
Unreachable while any other IP resulted in No Route to Host.  The interface had
an IP and the route was correctly added according to ifconfig and route
respectively.
>How-To-Repeat:
       
>Fix:
        Reverting src/sys/dev/pci/if_bge.c to rev 1.371 and if_bgereg.h to 1.128 and
rebuilding the kernel allows the interface to work correctly.


dmesg:
OpenBSD 5.8-current (GENERIC.MP) #14: Wed Nov 11 19:01:19 CST 2015
    [hidden email]:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 4277108736 (4078MB)
avail mem = 4143353856 (3951MB)
mpath0 at root
scsibus0 at mpath0: 256 targets
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.4 @ 0xdffbc000 (49 entries)
bios0: vendor Dell Inc. version "1.1.2" date 12/15/2006
bios0: Dell Inc. PowerEdge SC1435
acpi0 at bios0: rev 2
acpi0: sleep states S0 S4 S5
acpi0: tables DSDT FACP APIC SPCR HPET MCFG SRAT SSDT
acpi0: wakeup devices RTC_(S5) PXB_(S5) EXB1(S5) EXB2(S5) EXB3(S5)
acpitimer0 at acpi0: 3579545 Hz, 32 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Dual-Core AMD Opteron(tm) Processor 2210, 1800.30 MHz
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW,LAHF,CMPLEG,SVM,EAPICSP,AMCR8
cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 1MB 64b/line 16-way L2 cache
cpu0: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative
cpu0: DTLB 32 4KB entries fully associative, 8 4MB entries fully associative
mtrr: Pentium Pro MTRR support, 8 var ranges, 88 fixed ranges
cpu0: apic clock running at 200MHz
cpu1 at mainbus0: apid 2 (application processor)
cpu1: Dual-Core AMD Opteron(tm) Processor 2210, 1800.06 MHz
cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW,LAHF,CMPLEG,SVM,EAPICSP,AMCR8
cpu1: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 1MB 64b/line 16-way L2 cache
cpu1: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative
cpu1: DTLB 32 4KB entries fully associative, 8 4MB entries fully associative
cpu2 at mainbus0: apid 1 (application processor)
cpu2: Dual-Core AMD Opteron(tm) Processor 2210, 1800.06 MHz
cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW,LAHF,CMPLEG,SVM,EAPICSP,AMCR8
cpu2: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 1MB 64b/line 16-way L2 cache
cpu2: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative
cpu2: DTLB 32 4KB entries fully associative, 8 4MB entries fully associative
cpu3 at mainbus0: apid 3 (application processor)
cpu3: Dual-Core AMD Opteron(tm) Processor 2210, 1800.06 MHz
cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW,LAHF,CMPLEG,SVM,EAPICSP,AMCR8
cpu3: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 1MB 64b/line 16-way L2 cache
cpu3: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative
cpu3: DTLB 32 4KB entries fully associative, 8 4MB entries fully associative
ioapic0 at mainbus0: apid 4 pa 0xfec00000, version 11, 16 pins
ioapic0: misconfigured as apic 0, remapped to apid 4
ioapic1 at mainbus0: apid 5 pa 0xfec01000, version 11, 16 pins
ioapic1: misconfigured as apic 0, remapped to apid 5
ioapic2 at mainbus0: apid 6 pa 0xfec02000, version 11, 16 pins
ioapic2: misconfigured as apic 0, remapped to apid 6
acpihpet0 at acpi0: 14318180 Hz
acpimcfg0 at acpi0 addr 0xf0000000, bus 0-63
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 3 (PXB_)
acpiprt2 at acpi0: bus 4 (PPBX)
acpiprt3 at acpi0: bus 5 (EXB0)
acpiprt4 at acpi0: bus 1 (EXB1)
acpiprt5 at acpi0: bus 2 (EXB2)
acpiprt6 at acpi0: bus 6 (EXB3)
acpiprt7 at acpi0: bus 7 (EXB4)
acpicpu0 at acpi0: C1(@1 halt!), PSS
acpicpu1 at acpi0: C1(@1 halt!), PSS
acpicpu2 at acpi0: C1(@1 halt!), PSS
acpicpu3 at acpi0: C1(@1 halt!), PSS
ipmi at mainbus0 not configured
cpu0: PowerNow! K8 1800 MHz: speeds: 1800 1000 MHz
pci0 at mainbus0 bus 0
ppb0 at pci0 dev 1 function 0 "ServerWorks HT-1000 PCI" rev 0x00
pci1 at ppb0 bus 3
ppb1 at pci1 dev 13 function 0 "ServerWorks HT-1000 PCIX" rev 0xc0
pci2 at ppb1 bus 4
pciide0 at pci1 dev 14 function 0 "ServerWorks HT-1000 SATA" rev 0x00: DMA
pciide0: using apic 4 int 6 for native-PCI interrupt
pciide0: port 0: 1.5Gb/s
wd0 at pciide0 channel 0 drive 0: <WDC WD2502ABYS-18B7A0>
wd0: 16-sector PIO, LBA48, 238418MB, 488281250 sectors
wd0(pciide0:0:0): using PIO mode 4, Ultra-DMA mode 6
pciide0: port 1: 1.5Gb/s
wd1 at pciide0 channel 1 drive 0: <WDC WD2502ABYS-18B7A0>
wd1: 16-sector PIO, LBA48, 238418MB, 488281250 sectors
wd1(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 6
pciide0: port 2: PHY offline
pciide0: port 3: PHY offline
piixpm0 at pci0 dev 2 function 0 "ServerWorks HT-1000" rev 0x00: polling
iic0 at piixpm0
spdmem0 at iic0 addr 0x50: 512MB DDR2 SDRAM registered cmd/addr parity, data ECC PC2-5300CL5
spdmem1 at iic0 addr 0x51: 512MB DDR2 SDRAM registered cmd/addr parity, data ECC PC2-5300CL5
spdmem2 at iic0 addr 0x52: 512MB DDR2 SDRAM registered cmd/addr parity, data ECC PC2-5300CL5
spdmem3 at iic0 addr 0x53: 512MB DDR2 SDRAM registered cmd/addr parity, data ECC PC2-5300CL5
pciide1 at pci0 dev 2 function 1 "ServerWorks HT-1000 IDE" rev 0x00: DMA
atapiscsi0 at pciide1 channel 0 drive 0
scsibus1 at atapiscsi0: 2 targets
cd0 at scsibus1 targ 0 lun 0: <HL-DT-ST, CD-ROM GCR-8240N, 1.10> ATAPI 5/cdrom removable
cd0(pciide1:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 2
pcib0 at pci0 dev 2 function 2 "ServerWorks HT-1000 LPC" rev 0x00
ohci0 at pci0 dev 3 function 0 "ServerWorks HT-1000 USB" rev 0x01: apic 4 int 11, version 1.0, legacy support
ohci1 at pci0 dev 3 function 1 "ServerWorks HT-1000 USB" rev 0x01: apic 4 int 11, version 1.0, legacy support
ehci0 at pci0 dev 3 function 2 "ServerWorks HT-1000 USB" rev 0x01: apic 4 int 11
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "ServerWorks EHCI root hub" rev 2.00/1.00 addr 1
radeondrm0 at pci0 dev 4 function 0 "ATI ES1000" rev 0x02
drm0 at radeondrm0
radeondrm0: apic 5 int 12
ppb2 at pci0 dev 7 function 0 "ServerWorks HT-2100 PCIE" rev 0xa2
pci3 at ppb2 bus 5
ppb3 at pci0 dev 8 function 0 "ServerWorks HT-2100 PCIE" rev 0xa2
pci4 at ppb3 bus 1
bge0 at pci4 dev 0 function 0 "Broadcom BCM5721" rev 0x21, BCM5750 C1 (0x4201): msi, address 00:1a:a0:12:af:0a
brgphy0 at bge0 phy 1: BCM5750 10/100/1000baseT PHY, rev. 0
ppb4 at pci0 dev 9 function 0 "ServerWorks HT-2100 PCIE" rev 0xa2
pci5 at ppb4 bus 2
ppb5 at pci0 dev 10 function 0 "ServerWorks HT-2100 PCIE" rev 0xa2: msi
pci6 at ppb5 bus 6
ppb6 at pci0 dev 11 function 0 "ServerWorks HT-2100 PCIE" rev 0xa2
pci7 at ppb6 bus 7
pchb0 at pci0 dev 24 function 0 "AMD AMD64 0Fh HyperTransport" rev 0x00
pchb1 at pci0 dev 24 function 1 "AMD AMD64 0Fh Address Map" rev 0x00
pchb2 at pci0 dev 24 function 2 "AMD AMD64 0Fh DRAM Cfg" rev 0x00
kate0 at pci0 dev 24 function 3 "AMD AMD64 0Fh Misc Cfg" rev 0x00: core rev JH-F3
pchb3 at pci0 dev 25 function 0 "AMD AMD64 0Fh HyperTransport" rev 0x00
pchb4 at pci0 dev 25 function 1 "AMD AMD64 0Fh Address Map" rev 0x00
pchb5 at pci0 dev 25 function 2 "AMD AMD64 0Fh DRAM Cfg" rev 0x00
kate1 at pci0 dev 25 function 3 "AMD AMD64 0Fh Misc Cfg" rev 0x00: core rev JH-F3
isa0 at pcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5 irq 1 irq 12
pckbd0 at pckbc0 (kbd slot)
wskbd0 at pckbd0: console keyboard
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
usb1 at ohci0: USB revision 1.0
uhub1 at usb1 "ServerWorks OHCI root hub" rev 1.00/1.00 addr 1
usb2 at ohci1: USB revision 1.0
uhub2 at usb2 "ServerWorks OHCI root hub" rev 1.00/1.00 addr 1
uhub3 at uhub0 port 3 "Dell product 0xa001" rev 2.00/0.00 addr 2
uhidev0 at uhub1 port 1 configuration 1 interface 0 "Peppercon AG Multidevice" rev 2.00/0.01 addr 2
uhidev0: iclass 3/1
ukbd0 at uhidev0: 8 variable keys, 6 key codes
wskbd1 at ukbd0 mux 1
uhidev1 at uhub1 port 1 configuration 1 interface 1 "Peppercon AG Multidevice" rev 2.00/0.01 addr 2
uhidev1: iclass 3/0
ums0 at uhidev1: 3 buttons, Z dir
wsmouse0 at ums0 mux 0
vscsi0 at root
scsibus2 at vscsi0: 256 targets
softraid0 at root
scsibus3 at softraid0: 256 targets
root on wd0a (49fc95eb8e1a360a.a) swap on wd0b dump on wd0b
radeondrm0: 1024x768
wsdisplay0 at radeondrm0 mux 1: console (std, vt100 emulation), using wskbd0
wskbd1: connecting to wsdisplay0
wsdisplay0: screen 1-5 added (std, vt100 emulation)

usbdevs:
Controller /dev/usb0:
addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), ServerWorks(0x1166), rev 1.00
 port 1 powered
 port 2 powered
 port 3 addr 2: high speed, self powered, config 1, product 0xa001(0xa001), Dell(0x413c), rev 0.00
  port 1 powered
  port 2 powered
 port 4 powered
Controller /dev/usb1:
addr 1: full speed, self powered, config 1, OHCI root hub(0x0000), ServerWorks(0x1166), rev 1.00
 port 1 powered
 port 2 powered
Controller /dev/usb2:
addr 1: full speed, self powered, config 1, OHCI root hub(0x0000), ServerWorks(0x1166), rev 1.00
 port 1 powered
 port 2 powered

Reply | Threaded
Open this post in threaded view
|

Re: Recent checkin to bge broke my Broadcom ethernet

Miod Vallat
> >Fix:
> Reverting src/sys/dev/pci/if_bge.c to rev 1.371 and if_bgereg.h to 1.128 and
> rebuilding the kernel allows the interface to work correctly.

Does the following diff (on top of HEAD, thus if_bge 1.372 and
if_bgereg.h 1.129) help?

Index: if_bge.c
===================================================================
RCS file: /OpenBSD/src/sys/dev/pci/if_bge.c,v
retrieving revision 1.372
diff -u -p -r1.372 if_bge.c
--- if_bge.c 10 Nov 2015 20:23:50 -0000 1.372
+++ if_bge.c 11 Nov 2015 19:45:38 -0000
@@ -3221,7 +3221,10 @@ bge_reset(struct bge_softc *sc)
  * When firmware finishes its initialization it will
  * write ~BGE_SRAM_FW_MB_MAGIC to the same location.
  */
- write_op(sc, BGE_SOFTWARE_GENCOMM, BGE_MAGIC_NUMBER);
+ if (write_op == bge_writereg_ind)
+ bge_writereg_ind(sc, BGE_SOFTWARE_GENCOMM, BGE_MAGIC_NUMBER);
+ else
+ bge_writemem_ind(sc, BGE_SOFTWARE_GENCOMM, BGE_MAGIC_NUMBER);
 
  reset = BGE_MISCCFG_RESET_CORE_CLOCKS | BGE_32BITTIME_66MHZ;
 

Reply | Threaded
Open this post in threaded view
|

Re: Recent checkin to bge broke my Broadcom ethernet

Mark Kettenis
> Date: Thu, 12 Nov 2015 08:14:08 +0000
> From: Miod Vallat <[hidden email]>
>
> > >Fix:
> > Reverting src/sys/dev/pci/if_bge.c to rev 1.371 and if_bgereg.h to 1.128 and
> > rebuilding the kernel allows the interface to work correctly.
>
> Does the following diff (on top of HEAD, thus if_bge 1.372 and
> if_bgereg.h 1.129) help?

Miod, I really think you should back out that commit.  It still think
it's wrong.  The magic number needs to be written into SRAM.  The
documentation for the various chips is pretty clear on that.  Your
diff changed things such that it writes it to some random undocumented
hardware register.  That makes no sense.

Obviously there is something wrong with the old code as well.
Possibly Apple used a different firmware for the onboard interfaces
that isn't happy with the way we write the magic value.  Since the
magic value has something to do with PXE booting, perhaps simply
skipping that write is a viable workaround for macppc.


> Index: if_bge.c
> ===================================================================
> RCS file: /OpenBSD/src/sys/dev/pci/if_bge.c,v
> retrieving revision 1.372
> diff -u -p -r1.372 if_bge.c
> --- if_bge.c 10 Nov 2015 20:23:50 -0000 1.372
> +++ if_bge.c 11 Nov 2015 19:45:38 -0000
> @@ -3221,7 +3221,10 @@ bge_reset(struct bge_softc *sc)
>   * When firmware finishes its initialization it will
>   * write ~BGE_SRAM_FW_MB_MAGIC to the same location.
>   */
> - write_op(sc, BGE_SOFTWARE_GENCOMM, BGE_MAGIC_NUMBER);
> + if (write_op == bge_writereg_ind)
> + bge_writereg_ind(sc, BGE_SOFTWARE_GENCOMM, BGE_MAGIC_NUMBER);
> + else
> + bge_writemem_ind(sc, BGE_SOFTWARE_GENCOMM, BGE_MAGIC_NUMBER);
>  
>   reset = BGE_MISCCFG_RESET_CORE_CLOCKS | BGE_32BITTIME_66MHZ;
>  
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Recent checkin to bge broke my Broadcom ethernet

trondd-2
In reply to this post by Miod Vallat
On Thu, November 12, 2015 3:14 am, Miod Vallat wrote:
>> >Fix:
>> Reverting src/sys/dev/pci/if_bge.c to rev 1.371 and if_bgereg.h to
>> 1.128 and
>> rebuilding the kernel allows the interface to work correctly.
>
> Does the following diff (on top of HEAD, thus if_bge 1.372 and
> if_bgereg.h 1.129) help?
>

I saw you reverted the initial change, but for what it's worth, this patch
worked for me.  Hopefully that helps you move forward.

Tim.