From: "Franklin S Cooper Jr." <fcooper@ti.com>
To: Roger Quadros <rogerq@ti.com>, <linux-kernel@vger.kernel.org>,
<devicetree@vger.kernel.org>, <linux-omap@vger.kernel.org>,
<linux-mtd@lists.infradead.org>, <nsekhar@ti.com>,
<computersforpeace@gmail.com>, <dwmw2@infradead.org>,
<tony@atomide.com>
Subject: Re: [PATCH 2/5] mtd: nand: omap2: Start dma request before enabling prefetch
Date: Wed, 14 Oct 2015 08:45:22 -0500 [thread overview]
Message-ID: <561E5C72.1020505@ti.com> (raw)
In-Reply-To: <561E3F5B.6040102@ti.com>
On 10/14/2015 06:41 AM, Roger Quadros wrote:
> On 13/10/15 04:38, Franklin S Cooper Jr wrote:
>> The prefetch engine sends a dma request once a FIFO threshold has
>> been met. No other requests are received until the previous request
>> is handled.
>>
>> Starting an edma transfer (dma_async_issue_pending) results in any
>> previous event for the dma channel to be cleared. Therefore, starting
>> the prefetch engine before initiating the dma transfer may result in
>> the prefetch triggering a dma request but instead of it being handled
>> it can end up being cleared. This will result in a hang since the code
>> will continue to wait for the dma request to complete.
>>
>> By initiating the dma request before enabling the prefetch engine this
>> race condition is avoided and no dma request are missed/cleared.
>>
>> Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com>
>> ---
>> drivers/mtd/nand/omap2.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
>> index 957c32f..94d11de 100644
>> --- a/drivers/mtd/nand/omap2.c
>> +++ b/drivers/mtd/nand/omap2.c
>> @@ -509,6 +509,9 @@ static inline int omap_nand_dma_transfer(struct mtd_info *mtd, void *addr,
>> tx->callback_param = &info->comp;
>> dmaengine_submit(tx);
>>
>> + init_completion(&info->comp);
>> + dma_async_issue_pending(info->dma);
>> +
>> /* configure and start prefetch transfer */
>> ret = omap_prefetch_enable(info->gpmc_cs,
>> PREFETCH_FIFOTHRESHOLD_MAX, 0x1, len, is_write, info);
>> @@ -516,9 +519,6 @@ static inline int omap_nand_dma_transfer(struct mtd_info *mtd, void *addr,
>> /* PFPW engine is busy, use cpu copy method */
>> goto out_copy_unmap;
>>
>> - init_completion(&info->comp);
>> - dma_async_issue_pending(info->dma);
>> -
>> /* setup and start DMA using dma_addr */
> Is the above comment misplaced after this change?
Yup you right.
>
>> wait_for_completion(&info->comp);
>> tim = 0;
>>
> cheers,
> -roger
WARNING: multiple messages have this Message-ID (diff)
From: "Franklin S Cooper Jr." <fcooper-l0cyMroinI0@public.gmane.org>
To: Roger Quadros <rogerq-l0cyMroinI0@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-mtd-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
nsekhar-l0cyMroinI0@public.gmane.org,
computersforpeace-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
dwmw2-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org,
tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org
Subject: Re: [PATCH 2/5] mtd: nand: omap2: Start dma request before enabling prefetch
Date: Wed, 14 Oct 2015 08:45:22 -0500 [thread overview]
Message-ID: <561E5C72.1020505@ti.com> (raw)
In-Reply-To: <561E3F5B.6040102-l0cyMroinI0@public.gmane.org>
On 10/14/2015 06:41 AM, Roger Quadros wrote:
> On 13/10/15 04:38, Franklin S Cooper Jr wrote:
>> The prefetch engine sends a dma request once a FIFO threshold has
>> been met. No other requests are received until the previous request
>> is handled.
>>
>> Starting an edma transfer (dma_async_issue_pending) results in any
>> previous event for the dma channel to be cleared. Therefore, starting
>> the prefetch engine before initiating the dma transfer may result in
>> the prefetch triggering a dma request but instead of it being handled
>> it can end up being cleared. This will result in a hang since the code
>> will continue to wait for the dma request to complete.
>>
>> By initiating the dma request before enabling the prefetch engine this
>> race condition is avoided and no dma request are missed/cleared.
>>
>> Signed-off-by: Franklin S Cooper Jr <fcooper-l0cyMroinI0@public.gmane.org>
>> ---
>> drivers/mtd/nand/omap2.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c
>> index 957c32f..94d11de 100644
>> --- a/drivers/mtd/nand/omap2.c
>> +++ b/drivers/mtd/nand/omap2.c
>> @@ -509,6 +509,9 @@ static inline int omap_nand_dma_transfer(struct mtd_info *mtd, void *addr,
>> tx->callback_param = &info->comp;
>> dmaengine_submit(tx);
>>
>> + init_completion(&info->comp);
>> + dma_async_issue_pending(info->dma);
>> +
>> /* configure and start prefetch transfer */
>> ret = omap_prefetch_enable(info->gpmc_cs,
>> PREFETCH_FIFOTHRESHOLD_MAX, 0x1, len, is_write, info);
>> @@ -516,9 +519,6 @@ static inline int omap_nand_dma_transfer(struct mtd_info *mtd, void *addr,
>> /* PFPW engine is busy, use cpu copy method */
>> goto out_copy_unmap;
>>
>> - init_completion(&info->comp);
>> - dma_async_issue_pending(info->dma);
>> -
>> /* setup and start DMA using dma_addr */
> Is the above comment misplaced after this change?
Yup you right.
>
>> wait_for_completion(&info->comp);
>> tim = 0;
>>
> cheers,
> -roger
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-10-14 13:46 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-13 1:38 [PATCH 0/5] mtd: nand: Fix support for NAND DMA Prefetch Franklin S Cooper Jr
2015-10-13 1:38 ` Franklin S Cooper Jr
2015-10-13 1:38 ` [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Franklin S Cooper Jr
2015-10-14 11:36 ` Roger Quadros
2015-10-14 11:36 ` Roger Quadros
2015-10-14 11:52 ` Roger Quadros
2015-10-14 11:52 ` Roger Quadros
2015-10-14 13:26 ` Franklin S Cooper Jr.
2015-10-14 13:26 ` Franklin S Cooper Jr.
2015-10-14 14:11 ` Roger Quadros
2015-10-14 14:11 ` Roger Quadros
2015-10-14 14:32 ` Franklin S Cooper Jr.
2015-10-14 14:32 ` Franklin S Cooper Jr.
2015-10-14 16:18 ` Tony Lindgren
2015-10-14 16:18 ` Tony Lindgren
2015-10-14 16:23 ` Franklin S Cooper Jr.
2015-10-14 16:23 ` Franklin S Cooper Jr.
2015-10-14 18:13 ` Tony Lindgren
2015-10-14 20:03 ` Franklin S Cooper Jr.
2015-10-14 20:03 ` Franklin S Cooper Jr.
2015-10-15 7:35 ` Roger Quadros
2015-10-15 7:35 ` Roger Quadros
2015-10-15 17:12 ` Franklin S Cooper Jr.
2015-10-15 17:12 ` Franklin S Cooper Jr.
2015-10-13 1:38 ` [PATCH 2/5] mtd: nand: omap2: Start dma request before enabling prefetch Franklin S Cooper Jr
2015-10-14 11:41 ` Roger Quadros
2015-10-14 11:41 ` Roger Quadros
2015-10-14 13:45 ` Franklin S Cooper Jr. [this message]
2015-10-14 13:45 ` Franklin S Cooper Jr.
2015-10-13 1:38 ` [PATCH 3/5] mtd: nand: omap2: Fix high memory dma prefetch transfer Franklin S Cooper Jr
2015-10-13 1:38 ` [PATCH 4/5] ARM: dts: am437x/am33xx/omap3/dm816x: Add gpmc dma channel Franklin S Cooper Jr
2015-10-14 11:44 ` Roger Quadros
2015-10-14 11:44 ` Roger Quadros
2015-10-14 13:57 ` Franklin S Cooper Jr.
2015-10-14 13:57 ` Franklin S Cooper Jr.
2015-10-13 1:38 ` [PATCH 5/5] ARM: OMAP2+: Update gpmc and nand DT binding documentation Franklin S Cooper Jr
2015-10-14 11:50 ` Roger Quadros
2015-10-14 11:50 ` Roger Quadros
2015-10-15 17:14 ` Franklin S Cooper Jr.
2015-10-15 17:14 ` Franklin S Cooper Jr.
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=561E5C72.1020505@ti.com \
--to=fcooper@ti.com \
--cc=computersforpeace@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=nsekhar@ti.com \
--cc=rogerq@ti.com \
--cc=tony@atomide.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.