[Cbe-oss-dev] [Fwd: Oops in spidernet on 2.6.20]

Linas Vepstas linas at austin.ibm.com
Wed Feb 14 09:41:20 EST 2007


Hi Jeremy,
 
> Wanted to be sure you'd seen this.
> 
> -------- Original Message --------
> Subject: [Cbe-oss-dev] Oops in spidernet on 2.6.20
> Date: Tue, 13 Feb 2007 10:31:39 +1100
> From: Jeremy Kerr <jk at ozlabs.org>
> To: cbe-oss-dev at ozlabs.org
> 
> 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

I couldn't reproduce this on my system.

> 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);
> 
> It looks like we're setting the phy ops before the netdev_priv data?

After reading the code carefully, its pretty clear that the
netdev_priv data is set up early enough; is set up by alloc_etherdev()
called by spider_net_alloc_card() called by spider_net_setup_pci_dev() 
in spider_net_probe().  In fact, if netdev_priv was null, then 
spider_net_alloc_card() would crash, and you'd never get as far as 
the phy setup.

Thus I'm stumped by how this happened. Is this reproducible?

--linas



More information about the cbe-oss-dev mailing list