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 mmc hung task with Xenomai patched 3.8.13 BeagleBone kernel

I am working on real-time applications with the BeagleBone using a Xenomai patched kernel, and the mmc driver is hanging under heavy load.  I have been investigating the issue from the Xenomai side, and it generally sounds like the increased IRQ latency running under xenomai is tickling a driver bug and causing an interrupt to get lost, resulting in the hung mmc task which then basically shuts down the kernel (root is on the mmc device via an SD card).

Have there been any recent fixes to the omap2-plus mmc drivers that might have fixed this issue and wouldn't be in the beaglebone kernel tree?  Alternately, are there any xenomai kernels validated for use with the am335x?

If not, any pointers on how to debug the mmc driver, or advice from the author(s) would be appreciated.  Debugging someone else's IRQ and DMA driver code for potentially lost interrupts is never fun...

The xenomai list thread is here: http://www.xenomai.org/pipermail/xenomai/2013-October/029334.html

A typical hang looks like this:

[26160.894920] INFO: task mmcqd/0:74 blocked for more than 60 seconds.
[26160.901577] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[26160.909811] mmcqd/0         D c0699e08     0    74      2 0x00000000
[26160.916607] [<c0699e08>] (__schedule+0x5b8/0x774) from [<c0697f74>] (schedule_timeout+0x1c/0x21c)
[26160.925943] [<c0697f74>] (schedule_timeout+0x1c/0x21c) from [<c069a190>] (wait_for_common+0x130/0x170)
[26160.935718] [<c069a190>] (wait_for_common+0x130/0x170) from [<c051d090>] (mmc_wait_for_req_done+0x1c/0x74)
[26160.945851] [<c051d090>] (mmc_wait_for_req_done+0x1c/0x74) from [<c051dd18>] (mmc_start_req+0x50/0x158)
[26160.955712] [<c051dd18>] (mmc_start_req+0x50/0x158) from [<c05292d8>] (mmc_blk_issue_rw_rq+0xa4/0x348)
[26160.965485] [<c05292d8>] (mmc_blk_issue_rw_rq+0xa4/0x348) from [<c0529978>] (mmc_blk_issue_rq+0x3fc/0x450)
[26160.975624] [<c0529978>] (mmc_blk_issue_rq+0x3fc/0x450) from [<c0529fb4>] (mmc_queue_thread+0xa0/0x104)
[26160.985481] [<c0529fb4>] (mmc_queue_thread+0xa0/0x104) from [<c005a6f0>] (kthread+0xa0/0xb0)
[26160.994345] [<c005a6f0>] (kthread+0xa0/0xb0) from [<c000dc00>] (ret_from_fork+0x18/0x38)
[26161.002875] Kernel panic - not syncing: hung_task: blocked tasks
[26161.009184] [<c00138dc>] (unwind_backtrace+0x0/0xe0) from [<c0692d10>] (panic+0x84/0x1e0)
[26161.017756] [<c0692d10>] (panic+0x84/0x1e0) from [<c0094424>] (watchdog+0x1d4/0x234)
[26161.025866] [<c0094424>] (watchdog+0x1d4/0x234) from [<c005a6f0>] (kthread+0xa0/0xb0)
[26161.034065] [<c005a6f0>] (kthread+0xa0/0xb0) from [<c000dc00>] (ret_from_fork+0x18/0x38)
[26161.042529] drm_kms_helper: panic occurred, switching back to text console