发新话题
打印

网卡驱动问题BUG: soft lockup detected on CPU#

网卡驱动问题BUG: soft lockup detected on CPU#

找不到嵌入式驱动版块,发这也差不多吧

CPU:AT91RM9200
Kernel:2.6.17

问题描述:
dm9000静态加入内核编译可以通过,内核起来后可以识别
[root@ktdup5390 /]# ifconfig dm0
dm0 Link encap:Ethernet HWaddr 44:4D:50:00:036
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:26 Base address:0xe300
ping自己可以ping通,但与其他主机ping不通(估计没走硬件,直接从协议站里回去了 )

配置IP后出现如下问题
[root@ktdup5390 /]# ifconfig dm0 192.168.2.111

dmfe_open: start---------sqq
dev->name is dm0
dev->irq num is 26
request_irq:start
request_irq:setup_irq
setup_irq:start
setup_irq:spin_unlock_irqrestore
BUG: soft lockup detected on CPU#0!

然后就死这了

追进去看了一下,是中断申请出了问题。但通篇没查到这个错(soft lockup)是哪报的~      

TOP

haha====================

[ 本帖最后由 pegasus_sqq 于 2007-9-4 11:30 编辑 ]      

TOP

请前辈高人xdjm不吝赐教!卡了快一礼拜了      

TOP

把这个驱动作为模块加载,报的错如下:
[root@ktdup5390 net]# insmod dm9000x.ko
dmfe_probe:start
DM9000 ethernet driver V1.26 I/O: c485e300, VID: 90000a46
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c102c000
[00000000] *pgd=2100b031, *pte=00000000, *ppte=00000000
Internal error: Oops: 817 [#1]
Modules linked in: dm9000x
CPU: 0
PC is at __memzero+0x24/0x80
LR is at __init_begin+0x3fff8000/0x30
pc : [<c011fa44>] lr : [<00000000>] Not tainted
sp : c1639ec0 ip : 00000000 fp : c1639ee8
r10: c1006228 r9 : c1006248 r8 : c485f93c
r7 : 00000000 r6 : 00000000 r5 : c485e300 r4 : 00000000
r3 : 00000000 r2 : 00000000 r1 : 00000088 r0 : 00000000
Flags: nzCv IRQs on FIQs on Mode SVC_32 Segment user
Control: C000717F Table: 2102C000 DAC: 00000015
Process exe (pid: 725, stack limit = 0xc1638198)
Stack: (0xc1639ec0 to 0xc163a000)
9ec0: bf0000f0 00000001 00000000 c1006248 bf002040 00000000 00000000 c1639ef8
9ee0: c1639eec bf001408 bf000010 c1639fa4 c1639efc c0051fd4 bf0013b8 00000000
9f00: 00000208 00000228 00000024 bf001ce0 00000000 0000006a 00000034 00000030
9f20: 0000001c c1638000 00000000 00000000 00000000 00000000 00000000 00000004
9f40: 00000000 00000007 00000000 00000000 00000000 0000000d 0000000c c4860a5c
9f60: c1617bc0 c485f8c4 c485e000 c1639f78 c00297c0 00000000 00000000 00002d87
9f80: 00180014 001ab2f8 00000080 c0021ea4 c1638000 0017cf68 00000000 c1639fa8
9fa0: c0021d00 c0050c20 00180014 001ab2f8 00900080 001ab4f0 00002d87 001ab318
9fc0: 00002d87 00180014 001ab2f8 001ab318 001ab308 000083f0 0017cf68 000a55e4
9fe0: be9b0f2c be9b0f20 000493c4 000efdc0 a0000010 00900080 00000029 3331283f
Backtrace:
[<bf000000>] (dmfe_probe+0x0/0x214 [dm9000x]) from [<bf001408>] (init_module+0x60/0x74 [dm9000x])
r7 = 00000000 r6 = 00000000 r5 = BF002040 r4 = C1006248
[<bf0013a8>] (init_module+0x0/0x74 [dm9000x]) from [<c0051fd4>] (sys_init_module+0x13c4/0x149c)
[<c0050c10>] (sys_init_module+0x0/0x149c) from [<c0021d00>] (ret_fast_syscall+0x0/0x2c)
Code: e52de004 e1a0c002 e1a0e002 e2511040 (a8a0500c)
Segmentation fault      

TOP

因此初步判定是在 probe的这里出错了

dev->priv = db; /* link device and board info */
dmfe_dev = dev;

但不知道该怎么改      

TOP

发新话题