Hi All
Information about our device
yocto version: 1.7
kernel version: 3.10.17
serial driver version: 3.10.17
The application that manages the uart on our device has an open->close cycle on changing serial port settings or during retry error processes.
During our test we flood the serial port with data and during the [close] process, a kernel panic error occurs and the serial driver no longer functions.
Sample kernel panic message below:
Unhandled fault: imprecise external abort (0x1406) at 0x76f89000
Internal error: : 1406 [#1] PREEMPT SMP ARM
Modules linked in: aerial_sdio(O)
CPU: 0 PID: 1104 Comm: ft-test Tainted: G O 3.10.17yocto-for-pad+g33597e3 #93
task: ac72e940 ti: ad2fe000 task.ti: ad2fe000
PC is at _raw_spin_unlock_irqrestore+0x30/0x58
LR is at uart_close+0x1b4/0x1c4
pc : [<805d2f74>] lr : [<80314b60>] psr: 40030013
sp : ad2ffe68 ip : ad2ffe78 fp : ad2ffe74
r10: 00000001 r9 : 00000000 r8 : ac697528
r7 : ac44de10 r6 : a0030013 r5 : ac7c1600 r4 : ac3510c4
r3 : 00005c0f r2 : 00000002 r1 : a0030013 r0 : ac44de10
Flags: nZcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment user
Control: 10c53c7d Table: 3d18004a DAC: 00000015
Process ft-test (pid: 1104, stack limit = 0xad2fe238)
Stack: (0xad2ffe68 to 0xad300000)
fe60: ad2ffe9c ad2ffe78 80314b60 805d2f50 ac7c1600 00000000
fe80: ad160480 ac587010 ac697528 00000000 ad2fff14 ad2ffea0 802f92d0 803149b8
fea0: ad2ffebc ad2ffeb0 800bf280 800f8708 ad2fff34 ad2ffec0 800de79c 800bf26c
fec0: acfa5a40 00000000 ad2b2478 00000001 ad160488 ac697528 800f17c4 00000000
fee0: 00000000 00000000 ac72e940 ad160480 00000000 aa3347f8 ac587010 ac697528
ff00: ac697528 00000008 ad2fff54 ad2fff18 800f85e4 802f91d8 00000000 00000000
ff20: ad2fe000 ad160488 ad2fff54 ac72ec20 00000000 80900d70 ac72e940 8000e9e4
ff40: ad2fe000 00000000 ad2fff64 ad2fff58 800f8864 800f8554 ad2fff8c ad2fff68
ff60: 80049b48 800f8858 ad2fff94 299d299d ad2fe010 8000e9e4 ad2fffb0 ad2fe000
ff80: ad2fffac ad2fff90 800123ac 80049a94 000152e8 00000000 0000a7f4 00000006
ffa0: 00000000 ad2fffb0 8000e800 80012310 00000000 00000000 00000000 00000001
ffc0: 000152e8 00000000 0000a7f4 00000006 00000000 00000000 76f3c000 00000000
ffe0: 00000000 7eea4c4c 0000b754 763fd2ec 400a0010 00000003 3ff7e821 3ff7ec21
[<805d2f74>] (_raw_spin_unlock_irqrestore+0x30/0x58) from [<80314b60>] (uart_close+0x1b4/0x1c4)
[<80314b60>] (uart_close+0x1b4/0x1c4) from [<802f92d0>] (tty_release+0x104/0x590)
[<802f92d0>] (tty_release+0x104/0x590) from [<800f85e4>] (__fput+0x9c/0x250)
[<800f85e4>] (__fput+0x9c/0x250) from [<800f8864>] (____fput+0x18/0x1c)
[<800f8864>] (____fput+0x18/0x1c) from [<80049b48>] (task_work_run+0xc0/0xfc)
[<80049b48>] (task_work_run+0xc0/0xfc) from [<800123ac>] (do_work_pending+0xa8/0xb4)
[<800123ac>] (do_work_pending+0xa8/0xb4) from [<8000e800>] (work_pending+0xc/0x20)
Code: e1c030b0 f57ff04f e320f004 e121f001 (e3a00001)
---[ end trace 6b3720b3c1a690ba ]---
We have tried looking for patches to the serial driver that might fix this, but still unable to find a proper solution.
Also, tried putting a [wait_for_completion] inside the [imx_shutdown] function, waiting for IRQs to finish.
This prevented the serial driver, but the problem still occurs when the flooding test continues.
Please advise, thank you
Yuri