WARNING: at net/sched/sch_generic.c:226 dev_watchdog+0x144/0x22c()

来源:互联网 发布:java三层架构实例 编辑:程序博客网 时间:2024/06/07 09:11

最近调试自己制作的ARM9开发板,其中主控芯片s3c2410A,网卡DM9000BI,在启动linux内核后,挂载NFS文件系统时,有时会提示如下错误信息:

dm9000 Ethernet Driver, V1.31
eth0: dm9000a at c7814000,c7818002 IRQ 65 MAC: 00:0e:99:02:c4:16 (eeprom)
console [netcon0] enabled
netconsole: network logging started
Linux video capture interface: v2.00
i2c /dev entries driver
TCP cubic registered
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
eth0: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x41E1
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
     device=eth0, addr=192.168.3.254, mask=255.255.255.0, gw=255.255.255.255,
     host=192.168.3.254, domain=, nis-domain=(none),
     bootserver=255.255.255.255, rootserver=192.168.3.127, rootpath=
Looking up port of RPC 100003/2 on 192.168.3.127
Looking up port of RPC 100005/1 on 192.168.3.127
VFS: Mounted root (nfs filesystem).
Freeing init memory: 128K
------------[ cut here ]------------
WARNING: at net/sched/sch_generic.c:226 dev_watchdog+0x1c4/0x2dc()
NETDEV WATCHDOG: eth0 (dm9000): transmit timed out
Modules linked in:
[<c002cd50>] (dump_stack+0x0/0x14) from [<c003b104>] (warn_slowpath+0x5c/0x78)
[<c003b0a8>] (warn_slowpath+0x0/0x78) from [<c01e3608>] (dev_watchdog+0x1c4/0x2dc)
 r3:c6c2f800 r2:c02e6b80
 r6:00000001 r5:c6c2f800 r4:00000001
[<c01e3444>] (dev_watchdog+0x0/0x2dc) from [<c0045ba0>] (run_timer_softirq+0x198/0x22c)
 r8:c0307e98 r7:c01e3444 r6:00000103 r5:c032bdc0 r4:c0306000
[<c0045a08>] (run_timer_softirq+0x0/0x22c) from [<c0040260>] (__do_softirq+0x68/0x10c)
[<c00401f8>] (__do_softirq+0x0/0x10c) from [<c0040580>] (irq_exit+0x4c/0x9c)
[<c0040534>] (irq_exit+0x0/0x9c) from [<c002806c>] (asm_do_IRQ+0x6c/0x84)
 r4:00000020
[<c0028000>] (asm_do_IRQ+0x0/0x84) from [<c0028a28>] (__irq_svc+0x48/0x88)
Exception stack(0xc0307f40 to 0xc0307f88)
7f40: 00000000 0005317f 0005217f 60000013 c0306000 c0029f3c c0309fa0 c0309d30
7f60: 800210ec 41069265 800210b8 c0307f94 600000d3 c0307f88 c0029f80 c0029f8c
7f80: 60000013 ffffffff
 r6:c0309fa0 r5:fec48000 r4:ffffffff
[<c0029f3c>] (default_idle+0x0/0x58) from [<c0029ff4>] (cpu_idle+0x60/0xa8)
[<c0029f94>] (cpu_idle+0x0/0xa8) from [<c02553b0>] (rest_init+0x74/0x88)
 r6:c0022f00 r5:c0326148 r4:c0306000
[<c025533c>] (rest_init+0x0/0x88) from [<c0008980>] (start_kernel+0x2c0/0x32c)
 r4:c032e77c
[<c00086c0>] (start_kernel+0x0/0x32c) from [<80008034>] (0x80008034)
 r5:c032660c r4:00053175
---[ end trace f07d5504355e76da ]---
nfs: server 192.168.3.127 not responding, still trying
nfs: server 192.168.3.127 OK

目前,正在排查电路问题,但估计不像是这个原因,希望有经验的能给点意见,谢谢!

问题已解决:

首先声明下,我的现象是部分板子有时候启动会出现挂载nfs时出错,而且一般都是板子启动一段时间后出错,刚开始一直怀疑虚焊,后面排查没找到问题,在网上查了下,发现有人使用CS8900芯片出现我这问题,他们都是中断出的问题,我就用万用表测了线中断线上的电平,发现不对,但是我都配置了,最后没办法,只能弱弱的在DM9000驱动程序的probe函数中加了一个s3c2410_gpio_setpin(S3C2410_GPF7,0);//中断7管脚置低电平,问题解决,但是感觉这样不对,但是现象却好了,不知道为什么?

  最近看了些资料,好像有些头绪,感觉出现这种现象的原因在于DM9000B在复位是中断mcd抓取中断异常造成的,正打算读取DM9000B中的中断寄存器状态来确定下,貌似出现这种错误的原因的确是由于DM9000电平捕捉错误,但什么原因造成呢?想了半天,发现ARM芯片的引脚是多功能的,顿时茅塞顿开,上拉disable,将中断引脚的上拉disable去除,注意,u-boot中就需要配好,否则没用。

原创粉丝点击