[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