From: Arnd Bergmann <arnd@arndb.de>
To: Shawn Guo <shawn.guo@freescale.com>
Cc: Wolfram Sang <w.sang@pengutronix.de>,
Russell King - ARM Linux <linux@arm.linux.org.uk>,
s.hauer@pengutronix.de, linux-mmc@vger.kernel.org,
cjb@laptop.org, linux-arm-kernel@lists.infradead.org,
LW@karo-electronics.de
Subject: Re: [PATCH v2 1/7] mmc: mxs-mmc: add mmc host driver for i.MX23/28
Date: Wed, 16 Feb 2011 16:59:18 +0100 [thread overview]
Message-ID: <201102161659.18475.arnd@arndb.de> (raw)
In-Reply-To: <20110216202818.GA11467@S2100-06.ap.freescale.net>
On Wednesday 16 February 2011, Shawn Guo wrote:
> It's caused by spinlock recursion introduced by mxs-dma functions
> mxs_dma_tx_submit and mxs_dma_tasklet. We have mmc_request_done
> invoked in the dma callback tasklet. At the meantime,
> mmc_request_done will issue retries in some case, which will call in
> mxs_dma_tx_submit.
>
> I added the lock by referring to other dma driver implementation, but
> now I'm considering to remove the lock completely, as I do not see
> any global data needs to be protected there. Comments?
You need to be sure that the data accessed in the tasklet does not
need to be locked against mxs_dma_tx_submit.
I haven't looked at the dmaengine code for this, but it's quite likely
that you actually need it, because you need to serialize adding an
element to the DMA device with removing it again.
Also, since the lock is taken in a tasklet, every thread that takes
it outside of a tasklet must do spin_lock_bh(), not spin_lock(), to
prevent the tasklet from running.
Arnd
next prev parent reply other threads:[~2011-02-16 16:00 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-14 2:32 [PATCH v2 0/7] Add mmc driver for i.MX23/28 Shawn Guo
2011-02-14 2:32 ` [PATCH v2 1/7] mmc: mxs-mmc: add mmc host " Shawn Guo
2011-02-13 19:26 ` Chris Ball
2011-02-13 22:35 ` Arnd Bergmann
2011-02-14 0:25 ` Chris Ball
2011-02-15 21:27 ` Shawn Guo
2011-02-15 21:26 ` Shawn Guo
2011-02-14 15:39 ` Wolfram Sang
2011-02-15 21:28 ` Shawn Guo
2011-02-14 16:59 ` Wolfram Sang
2011-02-15 22:39 ` Shawn Guo
2011-02-15 17:13 ` Wolfram Sang
2011-02-15 17:19 ` Russell King - ARM Linux
2011-02-15 17:29 ` Wolfram Sang
2011-02-15 17:32 ` Russell King - ARM Linux
2011-02-16 20:28 ` Shawn Guo
2011-02-16 15:33 ` Wolfram Sang
2011-02-17 4:17 ` Shawn Guo
2011-02-17 12:06 ` Wolfram Sang
2011-02-16 15:59 ` Arnd Bergmann [this message]
2011-02-17 2:44 ` Shawn Guo
2011-02-14 16:59 ` Russell King - ARM Linux
2011-02-15 22:03 ` Shawn Guo
2011-02-15 14:13 ` Russell King - ARM Linux
2011-02-14 2:32 ` [PATCH v2 2/7] ARM: mxs/clock: fix base address missing in name##_set_parent Shawn Guo
2011-02-14 2:32 ` [PATCH v2 3/7] ARM: mxs: make ssp error irq definition consistent Shawn Guo
2011-02-14 2:32 ` [PATCH v2 4/7] ARM: mxs: dynamically allocate mmc device Shawn Guo
2011-02-14 2:32 ` [PATCH v2 5/7] ARM: mxs: fix typo "GPO" in iomux-mx23.h Shawn Guo
2011-02-14 2:32 ` [PATCH v2 6/7] ARM: mxs/mx23evk: add mmc device Shawn Guo
2011-02-14 2:32 ` [PATCH v2 7/7] ARM: mxs/mx28evk: " Shawn Guo
2011-02-14 10:26 ` Wolfram Sang
2011-02-15 23:11 ` 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=201102161659.18475.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=LW@karo-electronics.de \
--cc=cjb@laptop.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=s.hauer@pengutronix.de \
--cc=shawn.guo@freescale.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