kern/96806: [bge] [patch] Correction of kernel panic with
Broadcom chip BCM5714C and other updates
Ted Mittelstaedt
tedm at ipinc-hp-test.ipinc.net
Fri May 5 04:50:19 UTC 2006
The following reply was made to PR kern/96806; it has been noted by GNATS.
From: Ted Mittelstaedt <tedm at ipinc-hp-test.ipinc.net>
To: bug-followup at freebsd.org, tedm at ipinc.net
Cc:
Subject: Re: kern/96806: [bge] [patch] Correction of kernel panic with Broadcom chip BCM5714C and other updates
Date: Thu, 4 May 2006 21:47:23 GMT
Geeze! Some days you just never have any luck at all!
The patch to if_bge.c has a stupid typo in it, here it is again, correct this
time!
*** if_bge.c.dist Sat Mar 4 09:34:48 2006
--- if_bge.c Thu May 4 21:43:46 2006
***************
*** 152,167 ****
--- 152,179 ----
"Broadcom BCM5704C Dual Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5704S,
"Broadcom BCM5704S Dual Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5704S_2,
+ "Broadcom BCM5704S v2 Dual Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705,
"Broadcom BCM5705 Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705K,
"Broadcom BCM5705K Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5705F,
+ "Broadcom BCM5705F Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705M,
"Broadcom BCM5705M Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5705M_ALT,
"Broadcom BCM5705M Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5714C,
"Broadcom BCM5714C Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5714S,
+ "Broadcom BCM5714S Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5715,
+ "Broadcom BCM5715 Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5715S,
+ "Broadcom BCM5715S Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5720,
+ "Broadcom BCM5720 Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5721,
"Broadcom BCM5721 Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5750,
***************
*** 170,179 ****
--- 182,203 ----
"Broadcom BCM5750M Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5751,
"Broadcom BCM5751 Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5751F,
+ "Broadcom BCM5751F Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5751M,
"Broadcom BCM5751M Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5752,
"Broadcom BCM5752 Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5753F,
+ "Broadcom BCM5753F Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5753M,
+ "Broadcom BCM5753M Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5780,
+ "Broadcom BCM5780 Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5780S,
+ "Broadcom BCM5780S Gigabit Ethernet" },
+ { BCOM_VENDORID, BCOM_DEVICEID_BCM5781,
+ "Broadcom BCM5781 Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5782,
"Broadcom BCM5782 Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5788,
***************
*** 1048,1077 ****
/* Set up the PCI DMA control register. */
if (sc->bge_pcie) {
dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0xf << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
! (0x2 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
} else if (pci_read_config(sc->bge_dev, BGE_PCI_PCISTATE, 4) &
BGE_PCISTATE_PCI_BUSMODE) {
/* Conventional PCI bus */
! dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x7 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
! (0x7 << BGE_PCIDMARWCTL_WR_WAT_SHIFT) |
! (0x0F);
} else {
/* PCI-X bus */
/*
* The 5704 uses a different encoding of read/write
* watermarks.
*/
! if (sc->bge_asicrev == BGE_ASICREV_BCM5704)
dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x7 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
! (0x3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT);
! else
dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x3 << BGE_PCIDMARWCTL_RD_WAT_SHIFT) |
! (0x3 << BGE_PCIDMARWCTL_WR_WAT_SHIFT) |
! (0x0F);
/*
* 5703 and 5704 need ONEDMA_AT_ONCE as a workaround
--- 1072,1106 ----
/* Set up the PCI DMA control register. */
if (sc->bge_pcie) {
dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x180000);
} else if (pci_read_config(sc->bge_dev, BGE_PCI_PCISTATE, 4) &
BGE_PCISTATE_PCI_BUSMODE) {
/* Conventional PCI bus */
! if (sc->bge_asicrev == BGE_ASICREV_BCM5705 ||
! BGE_ASICREV_BCM5750) {
! dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x3F0000); }
! else
! dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x3F000F);
} else {
/* PCI-X bus */
/*
* The 5704 uses a different encoding of read/write
* watermarks.
*/
! if (sc->bge_asicrev == BGE_ASICREV_BCM5704 || BGE_ASICREV_BCM5703)
! dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x9F0000);
! else if (sc->bge_asicrev == BGE_ASICREV_BCM5780)
! dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x144000);
! else if (sc->bge_asicrev == BGE_ASICREV_BCM5714)
dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x148000);
! else
dma_rw_ctl = BGE_PCI_READ_CMD|BGE_PCI_WRITE_CMD |
! (0x1B000F);
/*
* 5703 and 5704 need ONEDMA_AT_ONCE as a workaround
More information about the freebsd-bugs
mailing list