10 Jul 2012 16:04
mmc: mxs: DEADLOCK
Lauri Hintsala <lauri.hintsala <at> bluegiga.com>
2012-07-10 14:04:42 GMT
2012-07-10 14:04:42 GMT
Hi,
I was able to get deadlock with CONFIG_DEBUG_SPINLOCK enabled. I added
also CONFIG_PROVE_LOCKING to get more verbose output. I got following
error message after SDIO device has been powered.
I'm able to replicate issue with Linux next-20120710. Platform is imx28.
[ 79.660000] =============================================
[ 79.660000] [ INFO: possible recursive locking detected ]
[ 79.660000] 3.4.0-00009-g3e96082-dirty #11 Not tainted
[ 79.660000] ---------------------------------------------
[ 79.660000] swapper/0 is trying to acquire lock:
[ 79.660000] (&(&host->lock)->rlock#2){-.....}, at: [<c026ea3c>]
mxs_mmc_enable_sdio_irq+0x18/0xd4
[ 79.660000]
[ 79.660000] but task is already holding lock:
[ 79.660000] (&(&host->lock)->rlock#2){-.....}, at: [<c026f744>]
mxs_mmc_irq_handler+0x1c/0xe8
[ 79.660000]
[ 79.660000] other info that might help us debug this:
[ 79.660000] Possible unsafe locking scenario:
[ 79.660000]
[ 79.660000] CPU0
[ 79.660000] ----
[ 79.660000] lock(&(&host->lock)->rlock#2);
[ 79.660000] lock(&(&host->lock)->rlock#2);
[ 79.660000]
[ 79.660000] *** DEADLOCK ***
[ 79.660000]
(Continue reading)
> if (stat & BM_SSP_CTRL1_RESP_TIMEOUT_IRQ)
> cmd->error = -ETIMEDOUT;
> else if (stat & BM_SSP_CTRL1_RESP_ERR_IRQ)
>
>
> Is there any reason to keep mmc_signal_sdio_irq inside the spinlock?
> mmc_signal_sdio_irq calls mxs_mmc_enable_sdio_irq and it tries to
> acquire lock while it is already acquired.
>
RSS Feed