Hello all, I'm trying to have a minimally functional mainline RT_PREEMPT_FULL on a olinuxino-A10-lime. Unfortunately there is an issue with the mmc driver. (The crash dump is at bottom). The driver seems to work in the RT_PREEMPT_BASE mode. I've very little knowledge of kernel internals, but after some search and tests I've understood that the problem arises because the mmc_request_done call (which eventually ends up with a re-schedule) is made from interrupt context, instead of from a threaded context. In the linux-sunxi kernel, in fact, a tasklet is used. In the mainline, on top of the sunxi_mmc_finalize_request there's a comment: * Called in interrupt context! */ that makes me think of some issues related to interrupt/non interrupt context. What is the relation between mainline driver and linux-sunxi one? Who is the person who wrote the mainline driver? Even without the RT_PREEMPT_FULL, shouln't be the bottom-half run on a threaded context, to avoid latencies? Any idea on how to solve the problem, even in un unclean manner? Thank you!
Kernel with default sunxi configuration and RT Patch patch-4.0.5-rt4.patch 4.191698] BUG: scheduling while atomic: mountkernfs.sh/94/0x00010001 [ 4.191710] CPU: 0 PID: 94 Comm: mountkernfs.sh Not tainted 4.0.5-rt4 #2 [ 4.191713] Hardware name: Allwinner A1X (Device Tree) [ 4.191751] [<c0013630>] (unwind_backtrace) from [<c00110a4>] (show_stack+0x10/0x14) [ 4.191765] [<c00110a4>] (show_stack) from [<c039ecd4>] (dump_stack+0x80/0xd8) [ 4.191775] [<c039ecd4>] (dump_stack) from [<c039c778>] (__schedule_bug+0x44/0x5c) [ 4.191785] [<c039c778>] (__schedule_bug) from [<c039f9e8>] (__schedule+0x388/0x424) [ 4.191793] [<c039f9e8>] (__schedule) from [<c039fb1c>] (schedule+0x40/0xdc) [ 4.191803] [<c039fb1c>] (schedule) from [<c03a0f30>] (rt_spin_lock_slowlock+0x178/0x2cc) [ 4.191814] [<c03a0f30>] (rt_spin_lock_slowlock) from [<c004e620>] (__wake_up+0x24/0x50) [ 4.191829] [<c004e620>] (__wake_up) from [<c02bb62c>] (mmc_request_done+0x44/0x88) [ 4.191846] [<c02bb62c>] (mmc_request_done) from [<c02cd45c>] (sunxi_mmc_irq+0x4e4/0x520) [ 4.191863] [<c02cd45c>] (sunxi_mmc_irq) from [<c0055d8c>] (handle_irq_event_percpu+0x60/0x14c) [ 4.191875] [<c0055d8c>] (handle_irq_event_percpu) from [<c0055ef0>] (handle_irq_event+0x78/0xac) [ 4.191885] [<c0055ef0>] (handle_irq_event) from [<c0058dec>] (handle_fasteoi_irq+0xa8/0x224) [ 4.191895] [<c0058dec>] (handle_fasteoi_irq) from [<c00556d4>] (generic_handle_irq+0x20/0x30) [ 4.191906] [<c00556d4>] (generic_handle_irq) from [<c0055738>] (__handle_domain_irq+0x54/0xb4) [ 4.191915] [<c0055738>] (__handle_domain_irq) from [<c0008620>] (sun4i_handle_irq+0x44/0x60) [ 4.191925] [<c0008620>] (sun4i_handle_irq) from [<c0011c00>] (__irq_svc+0x40/0x88) [ 4.191930] Exception stack(0xde81bda8 to 0xde81bdf0) [ 4.191938] bda0: df8c8b40 df89cb50 00000009 ffffffff 00000000 df8c8000 [ 4.191946] bdc0: b6fd1000 dffeb900 de828744 c04d02c4 0005f89c c0522180 b6fcfef8 de81bdf0 [ 4.191951] bde0: 00000000 c01dbbfc 20000113 ffffffff [ 4.191965] [<c0011c00>] (__irq_svc) from [<c01dbbfc>] (copy_page+0x3c/0x80) [ 4.192809] ------------[ cut here ]------------ [ 4.192831] WARNING: CPU: 0 PID: 94 at kernel/irq/handle.c:149 handle_irq_event_percpu+0x128/0x14c() [ 4.192841] irq 19 handler sunxi_mmc_irq+0x0/0x520 enabled interrupts [ 4.192851] CPU: 0 PID: 94 Comm: mountkernfs.sh Tainted: G W 4.0.5-rt4 #2 [ 4.192853] Hardware name: Allwinner A1X (Device Tree) [ 4.192869] [<c0013630>] (unwind_backtrace) from [<c00110a4>] (show_stack+0x10/0x14) [ 4.192879] [<c00110a4>] (show_stack) from [<c039ecd4>] (dump_stack+0x80/0xd8) [ 4.192894] [<c039ecd4>] (dump_stack) from [<c00201e4>] (warn_slowpath_common+0x70/0xac) [ 4.192904] [<c00201e4>] (warn_slowpath_common) from [<c002027c>] (warn_slowpath_fmt+0x30/0x40) [ 4.192915] [<c002027c>] (warn_slowpath_fmt) from [<c0055e54>] (handle_irq_event_percpu+0x128/0x14c) [ 4.192926] [<c0055e54>] (handle_irq_event_percpu) from [<c0055ef0>] (handle_irq_event+0x78/0xac) [ 4.192937] [<c0055ef0>] (handle_irq_event) from [<c0058dec>] (handle_fasteoi_irq+0xa8/0x224) [ 4.192946] [<c0058dec>] (handle_fasteoi_irq) from [<c00556d4>] (generic_handle_irq+0x20/0x30) [ 4.192957] [<c00556d4>] (generic_handle_irq) from [<c0055738>] (__handle_domain_irq+0x54/0xb4) [ 4.192966] [<c0055738>] (__handle_domain_irq) from [<c0008620>] (sun4i_handle_irq+0x44/0x60) [ 4.192976] [<c0008620>] (sun4i_handle_irq) from [<c0011c00>] (__irq_svc+0x40/0x88) [ 4.192980] Exception stack(0xde81bda8 to 0xde81bdf0) [ 4.192987] bda0: df8c8b40 df89cb50 00000009 ffffffff 00000000 df8c8000 [ 4.192995] bdc0: b6fd1000 dffeb900 de828744 c04d02c4 0005f89c c0522180 b6fcfef8 de81bdf0 [ 4.193000] bde0: 00000000 c01dbbfc 20000113 ffffffff [ 4.193011] [<c0011c00>] (__irq_svc) from [<c01dbbfc>] (copy_page+0x3c/0x80) [ 4.193015] ---[ end trace 0000000000000002 ]--- [ 4.224639] ------------[ cut here ]------------ -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
