From: Chris Ball <cjb@laptop.org>
To: Lauri Hintsala <lauri.hintsala@bluegiga.com>
Cc: Shawn Guo <shawn.guo@linaro.org>, Marek Vasut <marex@denx.de>,
attila@kinali.ch, koen.beel@barco.com,
Wolfram Sang <w.sang@pengutronix.de>,
linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
veli-pekka.peltola@bluegiga.com
Subject: Re: [PATCH 2/2] mmc: mxs-mmc: fix deadlock caused by recursion loop
Date: Fri, 31 Aug 2012 06:12:13 -0400 [thread overview]
Message-ID: <87txvjnzeq.fsf@octavius.laptop.org> (raw)
In-Reply-To: <1342534570-8293-3-git-send-email-lauri.hintsala@bluegiga.com> (Lauri Hintsala's message of "Tue, 17 Jul 2012 17:16:10 +0300")
Hi,
On Tue, Jul 17 2012, Lauri Hintsala wrote:
> Release the lock before mmc_signal_sdio_irq is called by
> mxs_mmc_enable_sdio_irq.
>
> Backtrace:
> [ 65.470000] =============================================
> [ 65.470000] [ INFO: possible recursive locking detected ]
> [ 65.470000] 3.5.0-rc5 #2 Not tainted
> [ 65.470000] ---------------------------------------------
> [ 65.470000] ksdioirqd/mmc0/73 is trying to acquire lock:
> [ 65.470000] (&(&host->lock)->rlock#2){-.-...}, at: [<bf054120>] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
> [ 65.470000]
> [ 65.470000] but task is already holding lock:
> [ 65.470000] (&(&host->lock)->rlock#2){-.-...}, at: [<bf054120>] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
> [ 65.470000]
> [ 65.470000] other info that might help us debug this:
> [ 65.470000] Possible unsafe locking scenario:
> [ 65.470000]
> [ 65.470000] CPU0
> [ 65.470000] ----
> [ 65.470000] lock(&(&host->lock)->rlock#2);
> [ 65.470000] lock(&(&host->lock)->rlock#2);
> [ 65.470000]
> [ 65.470000] *** DEADLOCK ***
> [ 65.470000]
> [ 65.470000] May be due to missing lock nesting notation
> [ 65.470000]
> [ 65.470000] 1 lock held by ksdioirqd/mmc0/73:
> [ 65.470000] #0: (&(&host->lock)->rlock#2){-.-...}, at: [<bf054120>] mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]
> [ 65.470000]
> [ 65.470000] stack backtrace:
> [ 65.470000] [<c0014990>] (unwind_backtrace+0x0/0xf4) from [<c005ccb8>] (__lock_acquire+0x14f8/0x1b98)
> [ 65.470000] [<c005ccb8>] (__lock_acquire+0x14f8/0x1b98) from [<c005d3f8>] (lock_acquire+0xa0/0x108)
> [ 65.470000] [<c005d3f8>] (lock_acquire+0xa0/0x108) from [<c02f671c>] (_raw_spin_lock_irqsave+0x48/0x5c)
> [ 65.470000] [<c02f671c>] (_raw_spin_lock_irqsave+0x48/0x5c) from [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
> [ 65.470000] [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
> [ 65.470000] [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [<c0219b38>] (sdio_irq_thread+0x1bc/0x274)
> [ 65.470000] [<c0219b38>] (sdio_irq_thread+0x1bc/0x274) from [<c003c324>] (kthread+0x8c/0x98)
> [ 65.470000] [<c003c324>] (kthread+0x8c/0x98) from [<c00101ac>] (kernel_thread_exit+0x0/0x8)
> [ 65.470000] BUG: spinlock lockup suspected on CPU#0, ksdioirqd/mmc0/73
> [ 65.470000] lock: 0xc3358724, .magic: dead4ead, .owner: ksdioirqd/mmc0/73, .owner_cpu: 0
> [ 65.470000] [<c0014990>] (unwind_backtrace+0x0/0xf4) from [<c01b46b0>] (do_raw_spin_lock+0x100/0x144)
> [ 65.470000] [<c01b46b0>] (do_raw_spin_lock+0x100/0x144) from [<c02f6724>] (_raw_spin_lock_irqsave+0x50/0x5c)
> [ 65.470000] [<c02f6724>] (_raw_spin_lock_irqsave+0x50/0x5c) from [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc])
> [ 65.470000] [<bf054120>] (mxs_mmc_enable_sdio_irq+0x18/0xdc [mxs_mmc]) from [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc])
> [ 65.470000] [<bf0541d0>] (mxs_mmc_enable_sdio_irq+0xc8/0xdc [mxs_mmc]) from [<c0219b38>] (sdio_irq_thread+0x1bc/0x274)
> [ 65.470000] [<c0219b38>] (sdio_irq_thread+0x1bc/0x274) from [<c003c324>] (kthread+0x8c/0x98)
> [ 65.470000] [<c003c324>] (kthread+0x8c/0x98) from [<c00101ac>] (kernel_thread_exit+0x0/0x8)
>
> Reported-by: Attila Kinali <attila@kinali.ch>
> Signed-off-by: Lauri Hintsala <lauri.hintsala@bluegiga.com>
> Acked-by: Shawn Guo <shawn.guo@linaro.org>
> ---
> drivers/mmc/host/mxs-mmc.c | 10 +++++-----
> 1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
> index 20a0550..e1fd2c8 100644
> --- 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 = {
Thanks, pushed to mmc-next for 3.6 with a stable@ tag.
- Chris.
--
Chris Ball <cjb@laptop.org> <http://printf.net/>
One Laptop Per Child
next prev parent reply other threads:[~2012-08-31 10:12 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-17 14:16 [PATCH 0/2] mmc: mxs-mmc: fix deadlocks Lauri Hintsala
2012-07-17 14:16 ` [PATCH 1/2] mmc: mxs-mmc: fix deadlock in SDIO IRQ case Lauri Hintsala
2012-08-31 10:11 ` Chris Ball
2012-07-17 14:16 ` [PATCH 2/2] mmc: mxs-mmc: fix deadlock caused by recursion loop Lauri Hintsala
2012-08-31 10:12 ` Chris Ball [this message]
2012-08-28 8:08 ` [PATCH 0/2] mmc: mxs-mmc: fix deadlocks Lauri Hintsala
2012-08-30 21:05 ` Shawn Guo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87txvjnzeq.fsf@octavius.laptop.org \
--to=cjb@laptop.org \
--cc=attila@kinali.ch \
--cc=koen.beel@barco.com \
--cc=lauri.hintsala@bluegiga.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mmc@vger.kernel.org \
--cc=marex@denx.de \
--cc=shawn.guo@linaro.org \
--cc=veli-pekka.peltola@bluegiga.com \
--cc=w.sang@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox