[Cbe-oss-dev] Oops in spidernet on 2.6.20
Jeremy Kerr
jk at ozlabs.org
Tue Feb 13 10:31:39 EST 2007
Hi folks,
I'm seeing the following oops when booting 2.6.20 on a QS20:
Spidernet version 1.6 A.
Unable to handle kernel paging request for data at address 0x0000006c
Faulting instruction address: 0xc0000000001f077c
cpu 0x0: Vector: 300 (Data Access) at [c0000000200c3480]
pc: c0000000001f077c: .spider_net_write_phy+0x20/0x30
lr: c0000000001f2b64: .reset_one_mii_phy+0x50/0x158
sp: c0000000200c3700
msr: 9000000000009032
dar: 6c
dsisr: 42000000
current = 0xc00000001ff156a0
paca = 0xc000000000404d80
pid = 1, comm = swapper
enter ? for help
[link register ] c0000000001f2b64 .reset_one_mii_phy+0x50/0x158
[c0000000200c3700] 0000000000010000 (unreliable)
[c0000000200c37a0] c0000000001f2fd8 .mii_phy_probe+0x30/0x124
[c0000000200c3830] c0000000001f080c .spider_net_setup_phy+0x80/0x164
[c0000000200c38c0] c0000000001f0de4 .spider_net_probe+0x404/0x43c
[c0000000200c3980] c00000000019dbf4 .pci_device_probe+0x120/0x1ac
[c0000000200c3a20] c0000000001cef30 .really_probe+0xac/0x170
[c0000000200c3ac0] c0000000001cf59c .__driver_attach+0xcc/0x15c
[c0000000200c3b50] c0000000001cdaac .bus_for_each_dev+0x78/0xc8
[c0000000200c3c00] c0000000001cebf8 .driver_attach+0x28/0x40
[c0000000200c3c80] c0000000001ce208 .bus_add_driver+0x80/0x1dc
[c0000000200c3d20] c0000000001cf9e0 .driver_register+0xa8/0xc4
[c0000000200c3da0] c00000000019d450 .__pci_register_driver+0xa8/0x108
[c0000000200c3e40] c0000000003d3e20 .spider_net_init+0xcc/0xe8
[c0000000200c3ec0] c000000000009420 .init+0x1d4/0x3b0
[c0000000200c3f90] c000000000025640 .kernel_thread+0x4c/0x68
0:mon> di c0000000001f0750
c0000000001f0750 419cffe8 blt cr7,c0000000001f0738
# .spider_net_read_phy+0x3c/0x60
c0000000001f0754 78030420 clrldi r3,r0,48
c0000000001f0758 4e800020 blr
c0000000001f075c 54a5801e rlwinm r5,r5,16,0,15
c0000000001f0760 5484a814 rlwinm r4,r4,21,0,10
c0000000001f0764 e9230550 ld r9,1360(r3)
c0000000001f0768 7c842b78 or r4,r4,r5
c0000000001f076c 7c843378 or r4,r4,r6
c0000000001f0770 3809006c addi r0,r9,108
c0000000001f0774 78840020 clrldi r4,r4,32
c0000000001f0778 7c0004ac sync
c0000000001f077c 9089006c stw r4,108(r9)
c0000000001f0780 38000001 li r0,1
c0000000001f0784 980d01ca stb r0,458(r13)
c0000000001f0788 4e800020 blr
c0000000001f078c 7c0802a6 mflr r0
0:mon>
Looks like card is null in spider_net_write_phy():
static void
spider_net_write_phy(struct net_device *netdev, int mii_id,
int reg, int val)
{
struct spider_net_card *card = netdev_priv(netdev);
u32 writevalue;
writevalue = ((u32)mii_id << 21) |
((u32)reg << 16) | ((u32)val);
spider_net_write_reg(card, SPIDER_NET_GPCWOPCMD, writevalue);
}
It looks like we're setting the phy ops before the netdev_priv data?
Regards,
Jeremy
More information about the cbe-oss-dev
mailing list