thzhr2009 发表于 2014-02-18 16:30

usb otg驱动问题

cpu:bcm5892
linux:2.6.32
测试过程:外接u盘,加载usb otg驱动,拷贝文件到u盘后删除,卸载otg驱动,写了个脚本连续进行上述测试。
大量测试后报段错误,消息:

Unable to handle kernel NULL pointer dereference at virtual addr
ess 0000000c
pgd = c0004000
*pgd=00000000
Internal error: Oops: 17 [#1] PREEMPT
last sysfs file: /sys/devices/virtual/vc/vcsa1/dev
Modules linked in: bcm589x_otg(+) bcm589x_dwccom smc_driver picc
_driver magcard 3326printer bcm5892_adc led misc bcm589x_dmu(P) bcm589x_pm(P) bc
m589x_rtc(P) pmb(P)
CPU: 0    Tainted: P      W   (2.6.32.9 #350)
PC is at unmap_urb_for_dma+0x44/0xe0
LR is at usb_hcd_giveback_urb+0x74/0x10c
pc : [<c01de4b8>]    lr : [<c01de5c8>]    psr: 60000193
sp : c3865b30ip : c3865b50fp : c3865b4c
r10: c2cb9e00r9 : c2cb9e00r8 : c2d848e0
r7 : 00000000r6 : 00000000r5 : 00000000r4 : c2e69ca0
r3 : 00000200r2 : c2c6f000r1 : c2e69ca0r0 : 00000000
Flags: nZCvIRQs offFIQs onMode SVC_32ISA ARMSegment ke
rnel
Control: 00c5387dTable: 43ad4008DAC: 00000017
Process khubd (pid: 139, stack limit = 0xc3864268)
Stack: (0xc3865b30 to 0xc3866000)
5b20:                                     bf0da14c bf0d9ce0 c2e6
9ca0 00000000
5b40: c3865b6c c3865b50 c01de5c8 c01de480 c3865b6c 00000002 0000
0002 c2e69ca0
5b60: c3865ba4 c3865b70 bf0ddca0 c01de560 bf0de97c bf0d9e18 c2c0
df60 c4810540
5b80: c2e3ef20 00000002 00000000 c2d848e0 c2cb9e00 c2c0d900 c386
5bec c3865ba8
5ba0: bf0df534 bf0dda74 bf0ddfa8 c2c0df60 c2e3ef20 c4810560 0000
0000 c3865bc8
5bc0: bf0df02c 00000002 00000000 00000023 c2e3ef20 c2cb9e00 c2c0
d900 c4810560
5be0: c3865c74 c3865bf0 bf0dff28 bf0df250 00000000 c2cb9e1c c481
002c 00000001
5c00: 00000000 c4810000 c3865c2c c3865c18 bf0d9d48 00000002 0000
0000 c2cb9e00
5c20: c3865c6c c3865c30 bf0da14c bf0d9ce0 bf0da888 00000002 ffff
ffff c2cb9e14
5c40: c3865d6c 00000002 00001fff c2cb9e00 00000003 00000000 0000
0008 c4810000
5c60: c3864000 c03b94c8 c3865c94 c3865c78 bf0e0744 bf0dfd0c 0000
0002 02000008
5c80: c2cb9e00 00000001 c3865cbc c3865c98 bf0e0dcc bf0e0708 bf0c
4828 c3a9e5e0
5ca0: a0000193 00000001 00000000 00000000 c3865ccc c3865cc0 bf0d
d990 bf0e0cbc
5cc0: c3865ce4 c3865cd0 c01dea10 bf0dd988 c2e3ee60 0000003a c386
5d0c c3865ce8
5ce0: c0060170 c01de998 c03bc914 c03bc914 c2d84a20 0000003a 0000
0003 00000002
5d00: c3865d2c c3865d10 c0062918 c0060138 c3865d2c 0000003a 0000
0000 04000000
5d20: c3865d44 c3865d30 c0023070 c0062878 ffffffff d102a000 c386
5dc4 c3865d48
5d40: c0023b24 c002300c 00000001 00000000 0a9e5650 000165c1 0000
0000 00000000
5d60: c3848380 c3864000 c3904ce0 c384850c c03b94c8 c3865dc4 c392
2cb8 c3865d90
5d80: c3922cb8 c02c8b78 00000013 ffffffff c03bc914 c384850c 0000
1fff 00b2a189
5da0: c03fc180 000001f4 00b29f95 c3865e68 00000000 00000002 c386
5e04 c3865dc8
5dc0: c02c944c c02c8980 00000008 c03fca94 c03da114 00b2a189 c003
f00c c3848380
5de0: c03fc180 a0000013 c3865e20 c3848380 c3864000 000001f4 c386
5e54 c3865e08
5e00: c02c9090 c02c92c0 bf0dd990 00000000 c3865e34 00000001 c384
8380 c0030cf8
5e20: c3865e6c c3865e6c 00000010 00000000 c3865e68 c2e69ca0 0000
1388 c3865eac
5e40: 00000000 00000006 c3865e64 c3865e58 c02c91c0 c02c8fa4 c386
5e9c c3865e68
5e60: c01e1420 c02c91b8 00000000 c3865e20 c3865e20 c2e69ca0 c386
5e9c c2c69d60
5e80: 00000040 00000100 00000000 00000080 c3865edc c3865ea0 c01e
1658 c01e13bc
5ea0: 80000080 c2c6f000 c03845c8 c2c6f000 00000000 c2c9e420 c2c6
f000 00000000
5ec0: 00000000 00000002 c2c6f068 c3a9e5e0 c3865f3c c3865ee0 c01d
aafc c01e159c
5ee0: 00000100 00000000 c2c9e420 00000040 00001388 c3865f00 0000
0001 c3a9e9e0
5f00: 00000000 00000032 00000000 00000003 fffffe00 00000002 c2c6
f000 c3a9e5e0
5f20: c3a9e9e0 c3a9e5f4 00000001 00000101 c3865fc4 c3865f40 c01d
d2dc c01da844
5f40: c38483b0 c03b9508 c3865f84 c2c061d8 c3864000 c3a9e2e0 c3a9
e300 c2c06000
5f60: c3a9e5e0 00000000 c3a9e300 c2c06000 00000008 00000000 0000
0000 c3848380
5f80: c004a50c c3865f84 c3865f84 c002eadc 01010000 c384850c c386
5fc4 c3865fcc
5fa0: c381bf18 00000000 c01dcb88 00000000 00000000 00000000 c386
5ff4 c3865fc8
5fc0: c004a420 c01dcb94 00000000 00000000 c3865fd0 c3865fd0 0000
0000 00000000
5fe0: 00000000 00000000 00000000 c3865ff8 c003794c c004a3a8 450c
e458 3c1c0bee
Backtrace:
[<c01de474>] (unmap_urb_for_dma+0x0/0xe0) from [<c01de5c8>] (usb
_hcd_giveback_urb+0x74/0x10c)
r5:00000000 r4:c2e69ca0
[<c01de554>] (usb_hcd_giveback_urb+0x0/0x10c) from [<bf0ddca0>]
(_complete+0x238/0x268 )
r6:c2e69ca0 r5:00000002 r4:00000002
[<bf0dda68>] (_complete+0x0/0x268 ) from [<bf0df534
>] (handle_hc_xfercomp_intr+0x2f0/0x4a8 )
[<bf0df244>] (handle_hc_xfercomp_intr+0x0/0x4a8 ) f
rom [<bf0dff28>] (dwc_otg_hcd_handle_hc_n_intr+0x228/0x9fc )
[<bf0dfd00>] (dwc_otg_hcd_handle_hc_n_intr+0x0/0x9fc [bcm589x_ot
g]) from [<bf0e0744>] (dwc_otg_hcd_handle_hc_intr+0x48/0x70 )
[<bf0e06fc>] (dwc_otg_hcd_handle_hc_intr+0x0/0x70 )
from [<bf0e0dcc>] (dwc_otg_hcd_handle_intr+0x11c/0x1f4 )
r7:00000001 r6:c2cb9e00 r5:02000008 r4:00000002
[<bf0e0cb0>] (dwc_otg_hcd_handle_intr+0x0/0x1f4 ) f
rom [<bf0dd990>] (dwc_otg_hcd_irq+0x14/0x20 )
r8:00000000 r7:00000000 r6:00000001 r5:a0000193 r4:c3a9e5e0
[<bf0dd97c>] (dwc_otg_hcd_irq+0x0/0x20 ) from [<c01
dea10>] (usb_hcd_irq+0x84/0x90)
[<c01de98c>] (usb_hcd_irq+0x0/0x90) from [<c0060170>] (handle_IR
Q_event+0x44/0x100)
r5:0000003a r4:c2e3ee60
[<c006012c>] (handle_IRQ_event+0x0/0x100) from [<c0062918>] (han
dle_level_irq+0xac/0x174)
r8:00000002 r7:00000003 r6:0000003a r5:c2d84a20 r4:c03bc914
[<c006286c>] (handle_level_irq+0x0/0x174) from [<c0023070>] (asm
_do_IRQ+0x70/0x8c)
r6:04000000 r5:00000000 r4:0000003a
[<c0023000>] (asm_do_IRQ+0x0/0x8c) from [<c0023b24>] (__irq_svc+
0x44/0xe0)
Exception stack(0xc3865d48 to 0xc3865d90)
5d40:                   00000001 00000000 0a9e5650 000165c1 0000
0000 00000000
5d60: c3848380 c3864000 c3904ce0 c384850c c03b94c8 c3865dc4 c392
2cb8 c3865d90
5d80: c3922cb8 c02c8b78 00000013 ffffffff
r5:d102a000 r4:ffffffff
[<c02c8974>] (schedule+0x0/0x358) from [<c02c944c>] (schedule_ti
meout+0x198/0x1cc)
[<c02c92b4>] (schedule_timeout+0x0/0x1cc) from [<c02c9090>] (wai
t_for_common+0xf8/0x1b4)
r7:000001f4 r6:c3864000 r5:c3848380 r4:c3865e20
[<c02c8f98>] (wait_for_common+0x0/0x1b4) from [<c02c91c0>] (wait
_for_completion_timeout+0x14/0x18)
[<c02c91ac>] (wait_for_completion_timeout+0x0/0x18) from [<c01e1
420>] (usb_start_wait_urb+0x70/0xc0)
[<c01e13b0>] (usb_start_wait_urb+0x0/0xc0) from [<c01e1658>] (us
b_control_msg+0xc8/0xec)
r8:00000080 r7:00000000 r6:00000100 r5:00000040 r4:c2c69d60
[<c01e1590>] (usb_control_msg+0x0/0xec) from [<c01daafc>] (hub_p
ort_init+0x2c4/0x6ec)
[<c01da838>] (hub_port_init+0x0/0x6ec) from [<c01dd2dc>] (hub_th
read+0x754/0xe04)
[<c01dcb88>] (hub_thread+0x0/0xe04) from [<c004a420>] (kthread+0
x84/0x8c)
[<c004a39c>] (kthread+0x0/0x8c) from [<c003794c>] (do_exit+0x0/0
x630)
r7:00000000 r6:00000000 r5:00000000 r4:00000000
Code: 1a000010 e5913038 e3130008 1a00000d (e5d0300c)
---[ end trace b9c12f4ac85edd16 ]---
Kernel panic - not syncing: Fatal exception in interrupt
消息看PC is at unmap_urb_for_dma+0x44/0xe0,但是看代码unmap_urb_for_dma函数没发现问题。有没有高手遇到过类似问题,指导下此问题。

Yan_2013 发表于 2014-02-19 09:56

这个貌似是中断的问题吧。你看看是不是在中断处理函数里面你们是不是改了什么东西?导致中断进去以后就出不来了。
页: [1]
查看完整版本: usb otg驱动问题