Thread (13 messages) flat view 13 messages, 5 authors, 2012-07-17

mmc: mxs: DEADLOCK

From: Shawn Guo <hidden>
Date: 2012-07-17 12:40:34
Also in: linux-mmc

On Tue, Jul 17, 2012 at 07:54:39AM +0300, Lauri Hintsala wrote:
Shawn,

Could you review this patch? Attila reported it fixes his SDIO
initialization issue.
Thanks for fixing it.

Acked-by: Shawn Guo <redacted>
Lauri


On 07/16/2012 08:57 AM, Lauri Hintsala wrote:
quoted
quoted
Any hints how to work around or fix this, would be appreciated

Does this patch fix your issue?
quoted
quoted
quoted
quoted
quoted
quoted
quoted
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -637,11 +637,6 @@ static void mxs_mmc_enable_sdio_irq(struct mmc_host
*mmc, int enable)
                host->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_SET);
         writel(BM_SSP_CTRL1_SDIO_IRQ_EN,
                host->base + HW_SSP_CTRL1(host) + STMP_OFFSET_REG_SET);
-
-        if (readl(host->base + HW_SSP_STATUS(host)) &
-                BM_SSP_STATUS_SDIO_IRQ)
-            mmc_signal_sdio_irq(host->mmc);
-
     } else {
         writel(BM_SSP_CTRL0_SDIO_IRQ_CHECK,
                host->base + HW_SSP_CTRL0 + STMP_OFFSET_REG_CLR);
@@ -650,6 +645,11 @@ static void mxs_mmc_enable_sdio_irq(struct mmc_host
*mmc, int enable)
     }

     spin_unlock_irqrestore(&host->lock, flags);
+
+    if (enable && readl(host->base + HW_SSP_STATUS(host)) &
+            BM_SSP_STATUS_SDIO_IRQ)
+        mmc_signal_sdio_irq(host->mmc);
+
 }

 static const struct mmc_host_ops mxs_mmc_ops = {
<<<<<<<

mxs_mmc_enable_sdio_irq was called by mmc_signal_sdio_irq.
mmc_signal_sdio_irq was called inside spin lock. So the lock was tried
to acquire before it was released.


Best regards,
Lauri Hintsala
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help