Subject: kern/21810: bmtphy.c giving trap 200 macppc 1.6L..1.6T
To: None <gnats-bugs@gnats.netbsd.org>
From: None <makoto@ki.nu>
List: netbsd-bugs
Date: 06/07/2003 00:40:46
>Number: 21810
>Category: kern
>Synopsis: trap 200 with 3Com 905C-TX (Broadcom)
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Fri Jun 06 15:41:00 UTC 2003
>Closed-Date:
>Last-Modified:
>Originator: Makoto Fujiwara
>Release: NetBSD 1.6L,1.6T
>Organization:
KINU Corporation
>Environment:
System: NetBSD harry 1.6T NetBSD 1.6T (INSECURE-L2CR) #0: Thu May 29 15:06:18 UTC 2003 root@serv:/export/20030516-utc/src/sys/arch/macppc/compile/INSECURE-L2CR macppc
Architecture: powerpc
Machine: macppc
>Description:
(1) trap type 200:
I have my kernel trap 200 at ifconfig when 3Com 3c905C-TX 10/100
NIC installed on my NetBSD/macppc machine.
The log may look like following:
-----------------------------
Configuring network interfaces: ex0
trap type 200 at 1999d8
Stopped in pid 67 (ifconfig) at ex_mii_bitbang_read+0x20: sync
db> trace
at ex_mii_readreg+70
at bmtphy_status+54
at mii_phy_status+18
at bmtphy_service+110
at mii_pollstat+4c
at ex_media_stat+2c
at ifmedia_ioctl+130
at ex_ioctl+70
at ifioctl+764
at soo_ioctl+168
at sys_ioctl+388
at syscall_plain+fc
at syscalltrap+c0
at end+132fba0
at end+131436c
at end+13117e0
at end+1310f64
at end+41322298
db>
-----------------------------
>How-To-Repeat:
Have 3Com 905C-TX NIC card inserted, and have ifconfig.ex0
file setup, boot to multi-user with GENERIC kernel
(2) easy work around:
By removing bmtphy from GENERIC kernel:
169c169
< bmtphy* at mii? phy ? # Broadcom BCM5201/BCM5202 PHYs
---
> #mtphy* at mii? phy ? # Broadcom BCM5201/BCM5202 PHYs
it works as
ex0 at pci1 dev 6 function 0: 3Com 3c905C-TX 10/100 Ethernet with mngmt (rev. 0x6c)
ex0: interrupting at irq 26
ex0: MAC address 00:02:1e:f5:yy:xx
ukphy1 at ex0 phy 24: Generic IEEE 802.3u media interface
ukphy1: Broadcom 3c905C internal PHY (OUI 0x000818, model 0x0017), rev. 4
ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
>Fix:
(First of all, thanks Izumi Tsutsui and Masanari Tsubai, to
get above tweak and this patch)
(3) fix on bmyphy.c
Then I have looked at bmtphy.c and ukphy.c, and apply the patch
attached to move the timing of register read:
getting following and works OK:
ex0 at pci1 dev 6 function 0: 3Com 3c905C-TX 10/100 Ethernet with mngmt (rev. 0x
6c)
ex0: interrupting at irq 26
ex0: MAC address 00:02:1e:f5:yy:xx
bmtphy0 at ex0 phy 24: Broadcom 3c905C internal PHY, rev. 4
bmtphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
Index: /e/serv/20030516-utc/src/sys/dev/mii/bmtphy.c
===================================================================
RCS file: /e/CVSup/main/src/sys/dev/mii/bmtphy.c,v
retrieving revision 1.13
diff -u -r1.13 bmtphy.c
--- /e/serv/20030516-utc/src/sys/dev/mii/bmtphy.c 2003/05/02 19:42:35 1.13
+++ src/sys/dev/mii/bmtphy.c 2003/06/05 23:59:35
@@ -236,7 +236,6 @@
mii->mii_media_active = IFM_ETHER;
bmsr = PHY_READ(sc, MII_BMSR) | PHY_READ(sc, MII_BMSR);
- aux_csr = PHY_READ(sc, MII_BMTPHY_AUX_CSR);
if (bmsr & BMSR_LINK)
mii->mii_media_status |= IFM_ACTIVE;
@@ -262,6 +261,7 @@
return;
}
+ aux_csr = PHY_READ(sc, MII_BMTPHY_AUX_CSR);
if (aux_csr & AUX_CSR_SPEED)
mii->mii_media_active |= IFM_100_TX;
else
>Release-Note:
>Audit-Trail:
>Unformatted: