rcu_prempt when call to open function on a ttymxc

3

I face an issue on a linux system : when I call open() function on a ttymxc peripherique, I get an rcu_prempt error after fews seconds of inactivity. I pass O_RDWR, O_NDELAY and O_NOCTTY options.

I read this document and try explanations of "Fine-Tuning the RCU CPU Stall Detector" part but I obtain more informations on the consequence of rcu_prempt (what are the blocked processes ) but I don't manage to understand origin…

If someone have some idea to explore because I am stuck at the moment…

Here kernel log :

kernel: [   48.534370] INFO: rcu_preempt self-detected stall on CPU
kernel: [   48.539705]        0-...: (1 ticks this GP)
idle=26b/140000000000001/0 softirq=6846/6846 fqs=0 kernel: [  
48.547880]         (t=2717 jiffies g=1149 c=1148 q=6) kernel: [   48.552514] rcu_preempt kthread starved for 2717 jiffies! g1149 c1148 f0x0 s3 ->state=0x1 kernel: [   48.560693] Task dump for CPU 0:
kernel: [   48.563923] mmcqd/0         R running      0   135      2
0x00000002 kernel: [   48.570331] [<80015378>] (unwind_backtrace) from
[<800136a0>] (show_stack+0x10/0x14) kernel: [   48.570351]
[<800136a0>] (show_stack) from [<8006555c>]
(rcu_dump_cpu_stacks+0xa8/0x108) kernel: [   48.570371] [<8006555c>]
(rcu_dump_cpu_stacks) from [<80068d0c>]
(rcu_check_callbacks+0x478/0x8b8) kernel: [   48.570390] [<80068d0c>]
(rcu_check_callbacks) from [<8006c64c>]
(update_process_times+0x38/0x64) kernel: [   48.570408] [<8006c64c>]
(update_process_times) from [<8007b0cc>] (tick_sched_handle+0x54/0x60)
kernel: [   48.570421] [<8007b0cc>] (tick_sched_handle) from
[<8007b134>] (tick_sched_timer+0x5c/0xb0) kernel: [   48.570436]
[<8007b134>] (tick_sched_timer) from [<8006cc24>]
(__hrtimer_run_queues.constprop.6+0x130/0x1c8) kernel: [   48.570451]
[<8006cc24>] (__hrtimer_run_queues.constprop.6) from [<8006d5ec>]
(hrtimer_interrupt+0xa0/0x244) kernel: [   48.570470] [<8006d5ec>]
(hrtimer_interrupt) from [<80390800>] (mxc_timer_interrupt+0x34/0x3c)
kernel: [   48.570492] [<80390800>] (mxc_timer_interrupt) from
[<8005ce08>] (handle_irq_event_percpu+0x88/0x14c) kernel: [  
48.570509] [<8005ce08>] (handle_irq_event_percpu) from [<8005cf28>] (handle_irq_event+0x5c/0x88) kernel: [   48.570523] [<8005cf28>]
(handle_irq_event) from [<8005ff54>] (handle_fasteoi_irq+0xb8/0x1fc)
kernel: [   48.570535] [<8005ff54>] (handle_fasteoi_irq) from
[<8005c6f8>] (generic_handle_irq+0x24/0x34) kernel: [   48.570550]
[<8005c6f8>] (generic_handle_irq) from [<8005c75c>]
(__handle_domain_irq+0x54/0xa8) kernel: [   48.570563] [<8005c75c>]
(__handle_domain_irq) from [<80009478>] (gic_handle_irq+0x48/0x7c)
kernel: [   48.570578] [<80009478>] (gic_handle_irq) from [<80014114>]
(__irq_svc+0x54/0x90) kernel: [   48.570587] Exception
stack(0x8f0a5de8 to 0x8f0a5e30) kernel: [   48.570599] 5de0:          
a00a0013 00000000 806689f8 00000000 806689f8 806689f8 kernel: [  
48.570610] 5e00: a00a0013 802b686c 00000004 8f014a18 8f0a4000 24590000 00000000 8f0a5e38 kernel: [   48.570619] 5e20: 8039a02c 8039859c
600a0013 ffffffff kernel: [   48.570639] [<80014114>] (__irq_svc) from
[<8039859c>] (clk_enable_unlock+0x60/0x104) kernel: [   48.570655]
[<8039859c>] (clk_enable_unlock) from [<8039a02c>]
(clk_enable+0x2c/0x34) kernel: [   48.570677] [<8039a02c>]
(clk_enable) from [<8037d874>] (sdhci_esdhc_runtime_resume+0xa8/0xbc)
kernel: [   48.570699] [<8037d874>] (sdhci_esdhc_runtime_resume) from
[<802b7e30>] (__rpm_callback+0x50/0x84) kernel: [   48.570715]
[<802b7e30>] (__rpm_callback) from [<802b7eb8>]
(rpm_callback+0x54/0x80) kernel: [   48.570730] [<802b7eb8>]
(rpm_callback) from [<802b8724>] (rpm_resume+0x3f8/0x688) kernel: [  
48.570742] [<802b8724>] (rpm_resume) from [<802b940c>] (__pm_runtime_resume+0x34/0x98) kernel: [   48.570755] [<802b940c>]
(__pm_runtime_resume) from [<8036303c>] (__mmc_claim_host+0x1a0/0x1f0)
kernel: [   48.570773] [<8036303c>] (__mmc_claim_host) from
[<80373ac8>] (mmc_blk_issue_rq+0x288/0x518) kernel: [   48.570787]
[<80373ac8>] (mmc_blk_issue_rq) from [<803754cc>]
(mmc_queue_thread+0xc8/0x18c) kernel: [   48.570802] [<803754cc>]
(mmc_queue_thread) from [<80047c44>] (kthread+0xdc/0xf0) kernel: [  
48.570818] [<80047c44>] (kthread) from [<80010030>] (ret_from_fork+0x14/0x24)
linux
linux-kernel
tty
asked on Stack Overflow Nov 28, 2018 by romaric crailox • edited Nov 28, 2018 by romaric crailox

1 Answer

0

I appear that we were not power physical device before open() call. We don't understand why system falls into in this situation, but power device before open() eliminates problem.

answered on Stack Overflow Dec 19, 2018 by romaric crailox

User contributions licensed under CC BY-SA 3.0