ucc_geth broken w.r.t fixed_link PHY
Joakim Tjernlund
Joakim.Tjernlund at transmode.se
Sat Mar 21 03:06:19 EST 2009
Trying to upgrade to latest linus latest just to see if it still works I
get this:
Unable to handle kernel paging request for data at address 0x00000000
Faulting instruction address: 0xc0151270
Oops: Kernel access of bad area, sig: 11 [#1]
TMCUTU
NIP: c0151270 LR: c0151270 CTR: c0017760
REGS: cf81fa60 TRAP: 0300 Not tainted (2.6.29-rc8)
MSR: 00009032 <EE,ME,IR,DR> CR: 24024042 XER: 20000000
DAR: 00000000, DSISR: 20000000
TASK = cf81cba0[1] 'swapper' THREAD: cf81e000
GPR00: c0151270 cf81fb10 cf81cba0 00000000 c0272e20 c025f354 00001e80
cf86b08c
GPR08: d1068200 cffffb74 06000000 d106c200 42024042 10085148 0fffd000
0ffc81a0
GPR16: 00000001 00000001 00000000 007ffeb0 00000000 0000c000 cf83f36c
cf83f000
GPR24: 00000030 cf83f360 cf81fb20 00000000 d106c200 20000000 00001e80
cf83f360
NIP [c0151270] ucc_geth_open+0x330/0x1efc
LR [c0151270] ucc_geth_open+0x330/0x1efc
Call Trace:
[cf81fb10] [c0151270] ucc_geth_open+0x330/0x1efc (unreliable)
[cf81fba0] [c0187638] dev_open+0xbc/0x12c
[cf81fbc0] [c0187e38] dev_change_flags+0x8c/0x1b0
[cf81fbe0] [c02a5e94] tm_icn_address+0x5f0/0x1038
[cf81fd70] [c00038b0] do_one_initcall+0x34/0x1dc
[cf81ffd0] [c02887dc] kernel_init+0x90/0x10c
[cf81fff0] [c00106a4] kernel_thread+0x4c/0x68
Instruction dump:
7c0004ac 914b0144 3800ffff 807f02b4 3c80c027 901f02ac 38842e20 38a00000
937f02a8 3b410010 937f02b0 48022ef9 <80630000> 4bebc8c9 7c7d1b78 48023155
---[ end trace 5e5a8c89939b0ba3 ]---
gdb vmlinux shows:
(gdb) list *0xc0151270
0xc0151270 is in ucc_geth_open (drivers/net/ucc_geth.c:1552).
1547 priv->oldlink = 0;
1548 priv->oldspeed = 0;
1549 priv->oldduplex = -1;
1550
1551 ph = of_get_property(np, "phy-handle", NULL);
1552 phy = of_find_node_by_phandle(*ph);
1553 mdio = of_get_parent(phy);
1554
1555 id = of_get_property(phy, "reg", NULL);
1556
Tunrsn out that my fixed_link PHY doesn't work anymore. I don't have a
phy-handle in
in my of tree. Instead I got fixed-link:
enet2: ucc at 3200 { //UCC4
device_type = "network";
compatible = "ucc_geth";
model = "UCC";
device-id = <4>;
cell-index = <4>;
reg = <3200 200>;
interrupts = <23>;
interrupt-parent = <&qeic>;
mac-address = [ 00 11 22 33 44 99 ];
rx-clock = <17>; //CLK7, 23
tx-clock = <18>; //CLK8, 24
fixed-link = <19 1 1 100 0 0>;
phy-connection-type = "mii";
pio-handle = <&pio4>;
};
So what is broken, ucc_geth or my OF tree?
Jocke
More information about the Linuxppc-dev
mailing list