From: Mika Westerberg <mika.westerberg@iki.fi>
To: Rafal Prylowski <prylowski@metasoft.pl>
Cc: linux-arm-kernel@lists.infradead.org, rmallon@gmail.com,
vinod.koul@intel.com, broonie@opensource.wolfsonmicro.com,
linux-kernel@vger.kernel.org, grant.likely@secretlab.ca,
hsweeten@visionengravers.com, dan.j.williams@intel.com,
lrg@ti.com
Subject: Re: [PATCH v2 1/5] dmaengine: add ep93xx DMA support
Date: Mon, 21 Nov 2011 10:01:58 +0200 [thread overview]
Message-ID: <20111121080158.GA2713@mwesterb-mobl.ger.corp.intel.com> (raw)
In-Reply-To: <4ECA0147.4020806@metasoft.pl>
On Mon, Nov 21, 2011 at 08:44:07AM +0100, Rafal Prylowski wrote:
>
> I'm calling dma_terminate_all from interrupt. It seems that tasklet_kill is not
> allowed to be called from this context.
Ah, right.
One more try - this time we set a flag which prevents the tasktlet from
referencing an empty list.
diff --git a/drivers/dma/ep93xx_dma.c b/drivers/dma/ep93xx_dma.c
index 6181811..f7244b3 100644
--- a/drivers/dma/ep93xx_dma.c
+++ b/drivers/dma/ep93xx_dma.c
@@ -155,6 +155,8 @@ struct ep93xx_dma_chan {
unsigned long flags;
/* Channel is configured for cyclic transfers */
#define EP93XX_DMA_IS_CYCLIC 0
+/* Channel is enabled */
+#define EP93xx_DMA_IS_RUNNING 1
int buffer;
dma_cookie_t last_completed;
@@ -673,6 +675,9 @@ static void ep93xx_dma_tasklet(unsigned long data)
void *callback_param;
LIST_HEAD(list);
+ if (!test_bit(EP93XX_DMA_IS_RUNNING, &edmac->flags))
+ return;
+
spin_lock_irq(&edmac->lock);
desc = ep93xx_dma_get_active(edmac);
if (desc->complete) {
@@ -758,6 +763,8 @@ static dma_cookie_t ep93xx_dma_tx_submit(struct dma_async_tx_descriptor *tx)
edmac->chan.cookie = cookie;
desc->txd.cookie = cookie;
+ set_bit(EP93XX_DMA_IS_RUNNING, &edmac->flags);
+
/*
* If nothing is currently prosessed, we push this descriptor
* directly to the hardware. Otherwise we put the descriptor
@@ -1106,6 +1113,7 @@ static int ep93xx_dma_terminate_all(struct ep93xx_dma_chan *edmac)
spin_lock_irqsave(&edmac->lock, flags);
/* First we disable and flush the DMA channel */
edmac->edma->hw_shutdown(edmac);
+ clear_bit(EP93XX_DMA_IS_RUNNING, &edmac->flags);
clear_bit(EP93XX_DMA_IS_CYCLIC, &edmac->flags);
list_splice_init(&edmac->active, &list);
list_splice_init(&edmac->queue, &list);
next prev parent reply other threads:[~2011-11-21 8:02 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-29 10:10 [PATCH v2 0/5] ep93xx DMA patches Mika Westerberg
2011-05-29 10:10 ` [PATCH v2 1/5] dmaengine: add ep93xx DMA support Mika Westerberg
2011-11-15 15:02 ` Rafal Prylowski
2011-11-15 17:59 ` H Hartley Sweeten
2011-11-16 6:48 ` Mika Westerberg
2011-11-16 9:00 ` Rafal Prylowski
2011-11-16 6:55 ` Mika Westerberg
2011-11-16 8:31 ` Rafal Prylowski
2011-11-19 12:38 ` Mika Westerberg
2011-11-21 7:44 ` Rafal Prylowski
2011-11-21 8:01 ` Mika Westerberg [this message]
2011-11-21 8:32 ` Vinod Koul
2011-11-22 5:59 ` Mika Westerberg
2011-11-23 10:47 ` Vinod Koul
2011-11-21 8:54 ` Rafal Prylowski
2011-11-22 6:47 ` Mika Westerberg
2011-11-22 8:45 ` Rafal Prylowski
2011-05-29 10:10 ` [PATCH v2 2/5] ep93xx: add dmaengine platform code Mika Westerberg
2011-05-29 10:10 ` [PATCH v2 3/5] ASoC: ep93xx: convert to use the DMA engine API Mika Westerberg
2011-05-29 10:10 ` [PATCH v2 4/5] ep93xx: remove the old M2P DMA code Mika Westerberg
2011-05-29 10:10 ` [PATCH v2 5/5] spi/ep93xx: add DMA support Mika Westerberg
2011-06-03 20:44 ` Grant Likely
2011-06-07 17:14 ` Mika Westerberg
2011-06-07 18:45 ` Grant Likely
2011-06-07 19:06 ` Mika Westerberg
2011-06-07 19:18 ` Grant Likely
2011-06-07 19:29 ` Mika Westerberg
2011-06-07 19:40 ` Grant Likely
2011-06-08 3:58 ` Koul, Vinod
2011-06-08 21:53 ` Grant Likely
2011-06-09 16:42 ` Koul, Vinod
2011-06-09 18:46 ` Grant Likely
2011-06-09 19:15 ` Mika Westerberg
2011-06-05 8:19 ` [PATCH v2 0/5] ep93xx DMA patches Mika Westerberg
2011-06-06 6:39 ` Koul, Vinod
2011-06-06 16:42 ` Mika Westerberg
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=20111121080158.GA2713@mwesterb-mobl.ger.corp.intel.com \
--to=mika.westerberg@iki.fi \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=dan.j.williams@intel.com \
--cc=grant.likely@secretlab.ca \
--cc=hsweeten@visionengravers.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lrg@ti.com \
--cc=prylowski@metasoft.pl \
--cc=rmallon@gmail.com \
--cc=vinod.koul@intel.com \
/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
all inboxes | Powered by JetHome®