This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

am335x musb dma问题



硬件:

beaglebone black

usb接口4G模块

软件:SDK7.0

问题:

1.4G模块有数据正在传输时,拔掉4G模块,内核panic

[ 1201.577929] Backtrace:
[ 1201.580563] [<c04326d8>] (musb_g_rx+0x0/0x128) from [<c042c644>] (musb_interrupt+0xa4/0x95c)
[ 1201.589545] [<c042c5a0>] (musb_interrupt+0x0/0x95c) from [<c0434cbc>] (dsps_interrupt+0x1c4/0x2dc)
[ 1201.599085] [<c0434af8>] (dsps_interrupt+0x0/0x2dc) from [<c00711d8>] (handle_irq_event_percpu+0x54/0x1b8)
[ 1201.609354] [<c0071184>] (handle_irq_event_percpu+0x0/0x1b8) from [<c007136c>] (handle_irq_event+0x30/0x40)
[ 1201.619718] [<c007133c>] (handle_irq_event+0x0/0x40) from [<c0073724>] (handle_level_irq+0x88/0xdc)
[ 1201.629321]  r4:dd005340 r3:00024000
[ 1201.633156] [<c007369c>] (handle_level_irq+0x0/0xdc) from [<c0070ae0>] (generic_handle_irq+0x28/0x38)
[ 1201.642942]  r4:00000023 r3:c007369c
[ 1201.646792] [<c0070ab8>] (generic_handle_irq+0x0/0x38) from [<c0015560>] (handle_IRQ+0x38/0x8c)
[ 1201.656025]  r4:c0838c7c r3:00000110
[ 1201.659860] [<c0015528>] (handle_IRQ+0x0/0x8c) from [<c000879c>] (omap3_intc_handle_irq+0x68/0x7c)
[ 1201.669369]  r6:c0868890 r5:dd095cf8 r4:fa200000 r3:00000080
[ 1201.675450] [<c0008734>] (omap3_intc_handle_irq+0x0/0x7c) from [<c0593a80>] (__irq_svc+0x40/0x54)
[ 1201.684871] Exception stack(0xdd095cf8 to 0xdd095d40)
[ 1201.690242] 5ce0:                                                       00000001 c0869940
[ 1201.698938] 5d00: 00000000 00000100 00000002 00000054 c0869984 c0869980 dd094000 00000033
[ 1201.707634] 5d20: 00000000 dd095d84 0000000a dd095d40 c0049e58 c0049eb8 200f0113 ffffffff
[ 1201.716313]  r7:dd095d2c r6:ffffffff r5:200f0113 r4:c0049eb8
[ 1201.722394] [<c0049e40>] (__do_softirq+0x0/0x1ac) from [<c004a08c>] (do_softirq+0x50/0x5c)
[ 1201.731190] [<c004a03c>] (do_softirq+0x0/0x5c) from [<c004a304>] (irq_exit+0x9c/0xf0)
[ 1201.739502]  r4:dd094000 r3:00000000
[ 1201.743338] [<c004a268>] (irq_exit+0x0/0xf0) from [<c0015564>] (handle_IRQ+0x3c/0x8c)
[ 1201.751650]  r4:c0838c7c r3:00000110
[ 1201.755483] [<c0015528>] (handle_IRQ+0x0/0x8c) from [<c000879c>] (omap3_intc_handle_irq+0x68/0x7c)
[ 1201.764992]  r6:c0868890 r5:dd095df8 r4:fa200000 r3:00000080
[ 1201.771057] [<c0008734>] (omap3_intc_handle_irq+0x0/0x7c) from [<c0593a80>] (__irq_svc+0x40/0x54)
[ 1201.780478] Exception stack(0xdd095df8 to 0xdd095e40)
[ 1201.785848] 5de0:                                                       00000001 c0830ce4
[ 1201.794544] 5e00: c0831a44 00000001 c0830c7c c086ba70 600f0013 600f0013 00000000 00000033
[ 1201.803240] 5e20: 00000000 dd095e9c 00000000 dd095e40 c008ebbc c006f558 600f0013 ffffffff
[ 1201.811919]  r7:dd095e2c r6:ffffffff r5:600f0013 r4:c006f558
[ 1201.817983] [<c006f418>] (vprintk_emit+0x0/0x414) from [<c058e02c>] (printk+0x38/0x40)
[ 1201.826407] [<c058dff4>] (printk+0x0/0x40) from [<c03491a8>] (tps_work+0x38/0x80)
[ 1201.834350]  r3:00000002 r2:000000ce r1:c05d2f74 r0:c070d9ac
[ 1201.840420] [<c0349170>] (tps_work+0x0/0x80) from [<c0059afc>] (process_one_work+0xfc/0x340)
[ 1201.849377]  r4:dd0667c0
[ 1201.852094] [<c0059a00>] (process_one_work+0x0/0x340) from [<c005a104>] (worker_thread+0x130/0x370)
[ 1201.861717] [<c0059fd4>] (worker_thread+0x0/0x370) from [<c005f788>] (kthread+0xac/0xb8)
[ 1201.870325] [<c005f6dc>] (kthread+0x0/0xb8) from [<c00146f8>] (ret_from_fork+0x14/0x3c)
[ 1201.878821]  r7:00000000 r6:00000000 r5:c005f6dc r4:dd083d4c
[ 1201.884879] Code: e3c22004 e283a006 e6ff2072 e1ca20b0 (e51c8008)
[ 1201.891377] ---[ end trace ad2dfb1c5e4cfc06 ]---
[ 1201.896286] Kernel panic - not syncing: Fatal exception in interrupt
2.musb使用dma模式时,内核偶尔panic.

[74390.979814] skbuff: skb_over_panic: text:c03dd044 len:1795 put:1795 head:dd443f00 data:dd443f42 tail:0xdd444645 end:0xdd444540 dev:eth1

Backtrace:
[74391.259161] [<c058a5ac>] (skb_panic+0x0/0x68) from [<c04ccea0>] (skb_put+0x54/0x58)
[74391.267292]  r7:00000000 r6:dd444540 r5:dd444645 r4:00000703
[74391.273362] [<c04cce4c>] (skb_put+0x0/0x58) from [<c03dd044>] (rx_complete+0x28/0x230)

对于问题2,追踪到usbnet.c中的skb_put和musb_host.c中的musb_host_rx,发现dma返回的数据为1795,超过了urb提交时设置的缓冲区长度1514。禁止dma模式后不再出现该问题。

请问,后续的sdk中有修复此类问题码?