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 appreciatedDoes 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