Anyone successfully using wait_until_sent? We need have a gap between messages on a 2 wire RS485 line. Getting an opps. Not doing locking in the ko. Here is a trace:
colibri-vf login: [ 54.924891] mstp: Device ttyLP2 set to MS/TP @ 38400
[ 54.930275] mstp: Setting Nmax_master to 127
[ 54.938882] mstp: Setting Nmax_info_frames to 9
[ 54.944928] mstp: Setting This_Station to 5
[ 54.949418] mstp: Setting Tusage_timeout to 30
[ 55.499888] BUG: scheduling while atomic: swapper/0/0x00000100
[ 55.505822] Modules linked in: mstp(O) ad7793 [last unloaded: ad7793]
[ 55.512543] CPU: 0 PID: 0 Comm: swapper Tainted: G O 4.1.15-ge3c858e-dirty #144
[ 55.521099] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
[ 55.527616] Backtrace:
[ 55.530244] [<80012aec>] (dump_backtrace) from [<80012d0c>] (show_stack+0x18/0x1c)
[ 55.537898] r7:8083ddc0 r6:80802310 r5:807f9cd4 r4:00000000
[ 55.543888] [<80012cf4>] (show_stack) from [<80586900>] (dump_stack+0x24/0x28)
[ 55.551218] [<805868dc>] (dump_stack) from [<8003efa0>] (__schedule_bug+0x54/0x64)
[ 55.558888] [<8003ef4c>] (__schedule_bug) from [<80587bd8>] (__schedule+0x36c/0x4bc)
[ 55.566700] r5:807f9cd4 r4:807fe4b0
[ 55.570452] [<8058786c>] (__schedule) from [<80587d6c>] (schedule+0x44/0x9c)
[ 55.577574] r9:00000000 r8:8083ddc0 r7:8083ddc0 r6:80802cd0 r5:807f9cd4 r4:807f8000
[ 55.585715] [<80587d28>] (schedule) from [<80589e90>] (schedule_timeout+0xe4/0x158)
[ 55.593444] r5:807f9cd4 r4:fffc44ed
[ 55.597191] [<80589dac>] (schedule_timeout) from [<800563ec>] (msleep_interruptible+0x4c/0x80)
[ 55.605876] r9:00000005 r8:807f8030 r7:80802cd0 r6:00000001 r5:fffc44ed r4:807f8018
[ 55.614031] [<800563a0>] (msleep_interruptible) from [<802fddbc>] (uart_wait_until_sent+0x90/0xec)
[ 55.623058] r5:fffc44ed r4:87a0b010
[ 55.626871] [<802fdd2c>] (uart_wait_until_sent) from [<7f00d6ac>] (SendFrame+0x160/0x278 [mstp])
[ 55.635733] r9:00000005 r8:00000008 r7:00000008 r6:85dbd200 r5:00000008 r4:7f00ed8c
[ 55.643907] [<7f00d54c>] (SendFrame [mstp]) from [<7f00da68>] (MasterNodeStateMachine+0x2a4/0xa10 [mstp])
[ 55.653548] r10:8083ddc0 r9:8083e7d8 r8:00000000 r7:00000005 r6:00000000 r5:7f00ebec
[ 55.661743] r4:7f00ed8c r3:00000000
[ 55.665517] [<7f00d7c4>] (MasterNodeStateMachine [mstp]) from [<7f00e1f4>] (mstpWork.part.2+0x20/0x48 [mstp])
[ 55.675506] r10:8083ddc0 r9:8083e7d8 r8:8083e5d8 r7:80802cd0 r6:7f00e21c r5:00000100
[ 55.683701] r4:7f00ed8c
[ 55.686380] [<7f00e1d4>] (mstpWork.part.2 [mstp]) from [<7f00e2e0>] (mstp_timer_function+0xc4/0x114 [mstp])
[ 55.696192] r5:00000100 r4:7f00ed8c
[ 55.699997] [<7f00e21c>] (mstp_timer_function [mstp]) from [<80056038>] (call_timer_fn+0x2c/0xa0)
[ 55.708951] r7:80802cd0 r6:7f00e21c r5:00000100 r4:807f9e28
[ 55.714911] [<8005600c>] (call_timer_fn) from [<800565a0>] (run_timer_softirq+0x180/0x1f4)
[ 55.723248] r6:00200200 r5:00000000 r4:807f9e28
[ 55.728103] [<80056420>] (run_timer_softirq) from [<80026834>] (__do_softirq+0x118/0x23c)
[ 55.736355] r10:40000001 r9:8082c1c0 r8:00000100 r7:807f8000 r6:8082c1c4 r5:00000001
[ 55.744555] r4:00000000
[ 55.747196] [<8002671c>] (__do_softirq) from [<80026bec>] (irq_exit+0xb8/0x100)
[ 55.754581] r10:807fa0d4 r9:8081f930 r8:87806000 r7:00000000 r6:00000000 r5:00000010
[ 55.762776] r4:8080b3b4
[ 55.765427] [<80026b34>] (irq_exit) from [<8004cd38>] (__handle_domain_irq+0x60/0xb0)
[ 55.773333] r5:00000010 r4:8080b3b4
[ 55.777090] [<8004ccd8>] (__handle_domain_irq) from [<80009364>] (gic_handle_irq+0x2c/0x5c)
[ 55.785512] r9:8081f930 r8:807fa0cc r7:88002100 r6:807f9f20 r5:807fa364 r4:8800210c
[ 55.793648] [<80009338>] (gic_handle_irq) from [<80013780>] (__irq_svc+0x40/0x54)
[ 55.801261] Exception stack(0x807f9f20 to 0x807f9f68)
[ 55.806413] 9f20: 00000001 00000000 00000000 8001d5e0 807f8000 807fa0cc 00000000 00000000
[ 55.814685] 9f40: 807fa0cc 8081f930 807fa0d4 807f9f74 807f9f78 807f9f68 8000ffa8 8000ffac
[ 55.822924] 9f60: 60080013 ffffffff
[ 55.826477] r7:807f9f54 r6:ffffffff r5:60080013 r4:8000ffac
[ 55.832446] [<8000ff6c>] (arch_cpu_idle) from [<80045fc4>] (cpu_startup_entry+0x1c8/0x254)
[ 55.840823] [<80045dfc>] (cpu_startup_entry) from [<80585174>] (rest_init+0x78/0x7c)
[ 55.848660] r7:ffffffff
[ 55.851310] [<805850fc>] (rest_init) from [<80768cd4>] (start_kernel+0x390/0x39c)
[ 55.858884] [<80768944>] (start_kernel) from [<80008078>] (0x80008078)
[ 55.865493] bad: scheduling from the idle thread!
[ 55.870285] CPU: 0 PID: 0 Comm: swapper Tainted: G W O 4.1.15-ge3c858e-dirty #144
[ 55.878782] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
[ 55.885286] Backtrace:
[ 55.887886] [<80012aec>] (dump_backtrace) from [<80012d0c>] (show_stack+0x18/0x1c)
[ 55.895524] r7:00000000 r6:00000000 r5:80802310 r4:807fe4b0
[ 55.901474] [<80012cf4>] (show_stack) from [<80586900>] (dump_stack+0x24/0x28)
[ 55.908803] [<805868dc>] (dump_stack) from [<80042ad4>] (dequeue_task_idle+0x20/0x28)
[ 55.916730] [<80042ab4>] (dequeue_task_idle) from [<8003f21c>] (dequeue_task+0x80/0xc4)
[ 55.924827] [<8003f19c>] (dequeue_task) from [<80040164>] (deactivate_task+0x30/0x34)
[ 55.932724] r9:00000000 r8:807fe6fc r7:8083ddc0 r6:80802310 r5:807f9cd4 r4:807fe4b0
[ 55.940849] [<80040134>] (deactivate_task) from [<80587a54>] (__schedule+0x1e8/0x4bc)
[ 55.948772] [<8058786c>] (__schedule) from [<80587d6c>] (schedule+0x44/0x9c)
[ 55.955887] r9:00000000 r8:8083ddc0 r7:8083ddc0 r6:80802cd0 r5:807f9cd4 r4:807f8000
[ 55.964019] [<80587d28>] (schedule) from [<80589e90>] (schedule_timeout+0xe4/0x158)
[ 55.971741] r5:807f9cd4 r4:fffc44ed
[ 55.975502] [<80589dac>] (schedule_timeout) from [<800563ec>] (msleep_interruptible+0x4c/0x80)
[ 55.984183] r9:00000005 r8:807f8030 r7:80802cd0 r6:00000001 r5:fffc44ed r4:807f8018
[ 55.992312] [<800563a0>] (msleep_interruptible) from [<802fddbc>] (uart_wait_until_sent+0x90/0xec)
[ 56.001341] r5:fffc44ed r4:87a0b010
[ 56.005122] [<802fdd2c>] (uart_wait_until_sent) from [<7f00d6ac>] (SendFrame+0x160/0x278 [mstp])
[ 56.013985] r9:00000005 r8:00000008 r7:00000008 r6:85dbd200 r5:00000008 r4:7f00ed8c
[ 56.022199] [<7f00d54c>] (SendFrame [mstp]) from [<7f00da68>] (MasterNodeStateMachine+0x2a4/0xa10 [mstp])
[ 56.031844] r10:8083ddc0 r9:8083e7d8 r8:00000000 r7:00000005 r6:00000000 r5:7f00ebec
[ 56.040039] r4:7f00ed8c r3:00000000
[ 56.043850] [<7f00d7c4>] (MasterNodeStateMachine [mstp]) from [<7f00e1f4>] (mstpWork.part.2+0x20/0x48 [mstp])
[ 56.053838] r10:8083ddc0 r9:8083e7d8 r8:8083e5d8 r7:80802cd0 r6:7f00e21c r5:00000100
[ 56.062040] r4:7f00ed8c
[ 56.064748] [<7f00e1d4>] (mstpWork.part.2 [mstp]) from [<7f00e2e0>] (mstp_timer_function+0xc4/0x114 [mstp])
[ 56.074568] r5:00000100 r4:7f00ed8c
[ 56.078351] [<7f00e21c>] (mstp_timer_function [mstp]) from [<80056038>] (call_timer_fn+0x2c/0xa0)
[ 56.087300] r7:80802cd0 r6:7f00e21c r5:00000100 r4:807f9e28
[ 56.093251] [<8005600c>] (call_timer_fn) from [<800565a0>] (run_timer_softirq+0x180/0x1f4)
[ 56.101580] r6:00200200 r5:00000000 r4:807f9e28
[ 56.106420] [<80056420>] (run_timer_softirq) from [<80026834>] (__do_softirq+0x118/0x23c)
[ 56.114684] r10:40000001 r9:8082c1c0 r8:00000100 r7:807f8000 r6:8082c1c4 r5:00000001
[ 56.122875] r4:00000000
[ 56.125506] [<8002671c>] (__do_softirq) from [<80026bec>] (irq_exit+0xb8/0x100)
[ 56.132888] r10:807fa0d4 r9:8081f930 r8:87806000 r7:00000000 r6:00000000 r5:00000010
[ 56.141092] r4:8080b3b4
[ 56.143770] [<80026b34>] (irq_exit) from [<8004cd38>] (__handle_domain_irq+0x60/0xb0)
[ 56.151687] r5:00000010 r4:8080b3b4
[ 56.155435] [<8004ccd8>] (__handle_domain_irq) from [<80009364>] (gic_handle_irq+0x2c/0x5c)
[ 56.163853] r9:8081f930 r8:807fa0cc r7:88002100 r6:807f9f20 r5:807fa364 r4:8800210c
[ 56.171985] [<80009338>] (gic_handle_irq) from [<80013780>] (__irq_svc+0x40/0x54)
[ 56.179540] Exception stack(0x807f9f20 to 0x807f9f68)
[ 56.184687] 9f20: 00000001 00000000 00000000 8001d5e0 807f8000 807fa0cc 00000000 00000000
[ 56.192947] 9f40: 807fa0cc 8081f930 807fa0d4 807f9f74 807f9f78 807f9f68 8000ffa8 8000ffac
[ 56.201190] 9f60: 60080013 ffffffff
[ 56.204743] r7:807f9f54 r6:ffffffff r5:60080013 r4:8000ffac
[ 56.210727] [<8000ff6c>] (arch_cpu_idle) from [<80045fc4>] (cpu_startup_entry+0x1c8/0x254)
[ 56.219102] [<80045dfc>] (cpu_startup_entry) from [<80585174>] (rest_init+0x78/0x7c)
[ 56.226913] r7:ffffffff
[ 56.229560] [<805850fc>] (rest_init) from [<80768cd4>] (start_kernel+0x390/0x39c)
[ 56.237137] [<80768944>] (start_kernel) from [<80008078>] (0x80008078)
[ 56.244812] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 56.252935] pgd = 85c3c000
[ 56.255651] [00000000] *pgd=00000000
[ 56.259273] Internal error: Oops: 80000005 [#1] ARM
[ 56.264159] Modules linked in: mstp(O) ad7793 [last unloaded: ad7793]
[ 56.270689] CPU: 0 PID: 62 Comm: systemd-journal Tainted: G W O 4.1.15-ge3c858e-dirty #144
[ 56.279912] Hardware name: Freescale Vybrid VF5xx/VF6xx (Device Tree)
[ 56.286362] task: 85cd44c0 ti: 85ce2000 task.ti: 85ce2000
[ 56.291777] PC is at 0x0
[ 56.294336] LR is at enqueue_task+0x44/0x80
[ 56.298536] pc : [<00000000>] lr : [<8003f160>] psr: 60070193
[ 56.298536] sp : 85ce3c18 ip : 80802720 fp : 85ce3c3c
[ 56.310021] r10: 8083ddc0 r9 : 8083e7d8 r8 : 8083e5d8
[ 56.315254] r7 : 0000000d r6 : 1872e697 r5 : 60070113 r4 : 80802310
[ 56.321785] r3 : 00000000 r2 : 00000001 r1 : 807fe4b0 r0 : 80802310
[ 56.328321] Flags: nZCv IRQs off FIQs on Mode SVC_32 ISA ARM Segment user
[ 56.335553] Control: 10c5387d Table: 85c3c059 DAC: 00000015
[ 56.341312] Process systemd-journal (pid: 62, stack limit = 0x85ce2208)
[ 56.347930] Stack: (0x85ce3c18 to 0x85ce4000)
[ 56.352298] 3c00: 00000001 807fe4b0
[ 56.360494] 3c20: 80055c30 807fe4b0 80055ff8 80802cd0 85ce3c4c 85ce3c40 80040130 8003f128
[ 56.368691] 3c40: 85ce3c6c 85ce3c50 80040344 8004010c 7f00e21c 80802cd0 807fe4b0 00000100
[ 56.376888] 3c60: 85ce3c84 85ce3c70 80040444 80040304 85ce3cc8 00000100 85ce3c94 85ce3c88
[ 56.385085] 3c80: 80056008 80040424 85ce3cbc 85ce3c98 80056038 80056004 800267c4 20070113
[ 56.393282] 3ca0: 00000000 85ce3cc8 00000000 00200200 85ce3cfc 85ce3cc0 800565a0 80056018
[ 56.401479] 3cc0: 8082c180 8083e9d8 85ce3cc8 85ce3cc8 00000000 00000000 00000001 8082c1c4
[ 56.409677] 3ce0: 85ce2000 00000100 8082c1c0 40000001 85ce3d5c 85ce3d00 80026834 8005642c
[ 56.417873] 3d00: 00000010 87cd8140 00000000 00400100 80802cd0 fffc47d6 8058ce88 0000000a
[ 56.426071] 3d20: 8082c180 808027c8 8082c1c0 85ce2000 80050298 8080b3b4 00000010 00000000
[ 56.434268] 3d40: 807f9f20 87806000 00000000 875c5180 85ce3d74 85ce3d60 80026bec 80026728
[ 56.442465] 3d60: 8080b3b4 00000010 85ce3d9c 85ce3d78 8004cd38 80026b40 8800210c 807fa364
[ 56.450663] 3d80: 85ce3dc0 88002100 00000000 00000000 85ce3dbc 85ce3da0 80009364 8004cce4
[ 56.458859] 3da0: 8021eb60 60070013 ffffffff 85ce3df4 85ce3e34 85ce3dc0 80013780 80009344
[ 56.467056] 3dc0: 87b3b000 00000000 0001c720 00000000 85ce3e6c 87b3b000 87b3b640 87b3b630
[ 56.475253] 3de0: 00000000 00000000 875c5180 85ce3e34 00000000 85ce3e08 8020704c 8021eb60
[ 56.483450] 3e00: 60070013 ffffffff 00000000 00000000 00000000 00000001 87b3b000 85ce3e6c
[ 56.491648] 3e20: 875c52c0 00000000 85ce3eac 85ce3e38 8020704c 8021ea58 80298728 80297d4c
[ 56.499845] 3e40: 85ce3e64 00000044 8083221c 80802a68 00400000 00000000 85ce3edc 85ce3e68
[ 56.508042] 3e60: 800498f0 80589128 00000117 00100000 00000000 00000000 00000000 000000a0
[ 56.516239] 3e80: 800551cc 00002068 875c5180 85ce3ef8 85ce3ec0 875c3660 00000000 000081a0
[ 56.524437] 3ea0: 85ce3ef4 85ce3eb0 800dba6c 80206cac 00000000 85c9eb40 85ce3f80 85ce3f80
[ 56.532634] 3ec0: 565d667e 00000000 85ce2000 875c3660 85da4c00 00400000 00000000 00000000
[ 56.540831] 3ee0: 875c5180 875c3660 85ce3f4c 85ce3ef8 800c17a0 800db908 00002068 85ce3f88
[ 56.549028] 3f00: 185e5abf 00000107 00400000 00000000 565d667e 00000000 565d667e 00000000
[ 56.557225] 3f20: 565d667e 00000000 85da4c00 85da4c00 85da4c00 85da4c00 00400000 00000000
[ 56.565422] 3f40: 85ce3f8c 85ce3f50 800c1b64 800c1728 00000060 85da4c00 8005892c 8005bf70
[ 56.573619] 3f60: 00000038 00000000 7e9726ec 5675b6a0 000000c2 8000f7a4 85ce2000 00000000
[ 56.581816] 3f80: 85ce3fa4 85ce3f90 800c1c54 800c1a50 00000000 7e9723c4 00000000 85ce3fa8
[ 56.590013] 3fa0: 8000f600 800c1c44 00000000 7e9726ec 0000000d 00000000 00400000 00000000
[ 56.598211] 3fc0: 00000000 7e9726ec 5675b6a0 000000c2 00000009 00000009 e00e81aa e2cbbb21
[ 56.606408] 3fe0: 54b8be80 7e972334 54b668f9 76eb0b64 60070010 0000000d 00000000 00000000
[ 56.614586] Backtrace:
[ 56.617075] [<8003f11c>] (enqueue_task) from [<80040130>] (activate_task+0x30/0x34)
[ 56.624740] r7:80802cd0 r6:80055ff8 r4:807fe4b0
[ 56.629431] [<80040100>] (activate_task) from [<80040344>] (try_to_wake_up+0x4c/0x120)
[ 56.637368] [<800402f8>] (try_to_wake_up) from [<80040444>] (wake_up_process+0x2c/0x44)
[ 56.645374] r5:00000100 r4:807fe4b0
[ 56.649019] [<80040418>] (wake_up_process) from [<80056008>] (process_timeout+0x10/0x14)
[ 56.657111] r5:00000100 r4:85ce3cc8
[ 56.660740] [<80055ff8>] (process_timeout) from [<80056038>] (call_timer_fn+0x2c/0xa0)
[ 56.668678] [<8005600c>] (call_timer_fn) from [<800565a0>] (run_timer_softirq+0x180/0x1f4)
[ 56.676950] r6:00200200 r5:00000000 r4:85ce3cc8
[ 56.681649] [<80056420>] (run_timer_softirq) from [<80026834>] (__do_softirq+0x118/0x23c)
[ 56.689829] r10:40000001 r9:8082c1c0 r8:00000100 r7:85ce2000 r6:8082c1c4 r5:00000001
[ 56.697748] r4:00000000
[ 56.700307] [<8002671c>] (__do_softirq) from [<80026bec>] (irq_exit+0xb8/0x100)
[ 56.707621] r10:875c5180 r9:00000000 r8:87806000 r7:807f9f20 r6:00000000 r5:00000010
[ 56.715539] r4:8080b3b4
[ 56.718107] [<80026b34>] (irq_exit) from [<8004cd38>] (__handle_domain_irq+0x60/0xb0)
[ 56.725941] r5:00000010 r4:8080b3b4
[ 56.729577] [<8004ccd8>] (__handle_domain_irq) from [<80009364>] (gic_handle_irq+0x2c/0x5c)
[ 56.737928] r9:00000000 r8:00000000 r7:88002100 r6:85ce3dc0 r5:807fa364 r4:8800210c
[ 56.745769] [<80009338>] (gic_handle_irq) from [<80013780>] (__irq_svc+0x40/0x54)
[ 56.753260] Exception stack(0x85ce3dc0 to 0x85ce3e08)
[ 56.758330] 3dc0: 87b3b000 00000000 0001c720 00000000 85ce3e6c 87b3b000 87b3b640 87b3b630
[ 56.766526] 3de0: 00000000 00000000 875c5180 85ce3e34 00000000 85ce3e08 8020704c 8021eb60
[ 56.774711] 3e00: 60070013 ffffffff
[ 56.778202] r7:85ce3df4 r6:ffffffff r5:60070013 r4:8021eb60
[ 56.783954] [<8021ea4c>] (ubifs_release_budget) from [<8020704c>] (ubifs_setattr+0x3ac/0x42c)
[ 56.792481] r9:00000000 r8:875c52c0 r7:85ce3e6c r6:87b3b000 r5:00000001 r4:00000000
[ 56.800341] [<80206ca0>] (ubifs_setattr) from [<800dba6c>] (notify_change+0x170/0x348)
[ 56.808259] r10:000081a0 r9:00000000 r8:875c3660 r7:85ce3ec0 r6:85ce3ef8 r5:875c5180
[ 56.816168] r4:00002068
[ 56.818745] [<800db8fc>] (notify_change) from [<800c17a0>] (do_truncate+0x84/0xa8)
[ 56.826319] r10:875c3660 r9:875c5180 r8:00000000 r7:00000000 r6:00400000 r5:85da4c00
[ 56.834237] r4:875c3660
[ 56.836800] [<800c171c>] (do_truncate) from [<800c1b64>] (do_sys_ftruncate+0x120/0x198)
[ 56.844804] r7:00000000 r6:00400000 r5:85da4c00 r4:85da4c00
[ 56.850540] [<800c1a44>] (do_sys_ftruncate) from [<800c1c54>] (SyS_ftruncate64+0x1c/0x24)
[ 56.858717] r10:00000000 r9:85ce2000 r8:8000f7a4 r7:000000c2 r6:5675b6a0 r5:7e9726ec
[ 56.866635] r4:00000000
[ 56.869212] [<800c1c38>] (SyS_ftruncate64) from [<8000f600>] (ret_fast_syscall+0x0/0x3c)
[ 56.877317] Code: bad PC value
[ 56.880393] ---[ end trace 1c27de18a5dfd773 ]---
[ 56.885021] Kernel panic - not syncing: Fatal exception in interrupt
[ 56.891388] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
Thanks,
Paul