Hi:
Here is the version that moves the necessary code above register_netdev
instead of using init. It's against netdev-2.6.
Feb 15 18:26:20 saturno kernel: Unable to handle kernel NULL pointer
dereference at virtual address 0000000e
Feb 15 18:26:20 saturno kernel: printing eip:
Feb 15 18:26:20 saturno kernel: e1113417
Feb 15 18:26:20 saturno kernel: *pde = 00000000
Feb 15 18:26:20 saturno kernel: Oops: 0000 [#1]
Feb 15 18:26:20 saturno kernel: PREEMPT
Feb 15 18:26:20 saturno kernel: Modules linked in: sis900 nvidia 8250_pci 8250
serial_core psmouse
Feb 15 18:26:20 saturno kernel: CPU: 0
Feb 15 18:26:20 saturno kernel: EIP: 0060:[<e1113417>] Tainted: P
VLI
Feb 15 18:26:20 saturno kernel: EFLAGS: 00010296 (2.6.10-M7)
Feb 15 18:26:20 saturno kernel: EIP is at sis900_check_mode+0x17/0xa0 [sis900]
OK, this happened because we got preempted before sis900_mii_probe
finished setting the sis_priv->mii. Theoretically this can happen
with SMP as well but I suppose the number of SMP machines with sis900
is fairly small.
Anyway, the fix is to make sure that sis900_mii_probe is done before
the device can be opened. This patch does it by moving the setup
before register_netdevice.
Since the netdev name is not available before register_netdev, I've
changed the relevant printk's to use pci_name instead. Note that
one of those printk's may be called after register_netdev as well.
Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>