Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1245273
| From | Franklin S Cooper Jr <fcooper@ti.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH 2/5] mtd: nand: omap2: Start dma request before enabling prefetch |
| Date | 2015-10-13 03:50 +0200 |
| Message-ID | <qiWSZ-4U-5@gated-at.bofh.it> (permalink) |
| References | <qiWJk-8ld-3@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
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 */ wait_for_completion(&info->comp); tim = 0; -- 2.6.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 0/5] mtd: nand: Fix support for NAND DMA Prefetch Franklin S Cooper Jr <fcooper@ti.com> - 2015-10-13 03:40 +0200
[PATCH 3/5] mtd: nand: omap2: Fix high memory dma prefetch transfer Franklin S Cooper Jr <fcooper@ti.com> - 2015-10-13 03:40 +0200
[PATCH 5/5] ARM: OMAP2+: Update gpmc and nand DT binding documentation Franklin S Cooper Jr <fcooper@ti.com> - 2015-10-13 03:40 +0200
Re: [PATCH 5/5] ARM: OMAP2+: Update gpmc and nand DT binding documentation Roger Quadros <rogerq@ti.com> - 2015-10-14 14:00 +0200
Re: [PATCH 5/5] ARM: OMAP2+: Update gpmc and nand DT binding documentation "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-15 19:20 +0200
[PATCH 4/5] ARM: dts: am437x/am33xx/omap3/dm816x: Add gpmc dma channel Franklin S Cooper Jr <fcooper@ti.com> - 2015-10-13 03:40 +0200
Re: [PATCH 4/5] ARM: dts: am437x/am33xx/omap3/dm816x: Add gpmc dma channel Roger Quadros <rogerq@ti.com> - 2015-10-14 13:50 +0200
Re: [PATCH 4/5] ARM: dts: am437x/am33xx/omap3/dm816x: Add gpmc dma channel "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-14 16:00 +0200
[PATCH 2/5] mtd: nand: omap2: Start dma request before enabling prefetch Franklin S Cooper Jr <fcooper@ti.com> - 2015-10-13 03:50 +0200
Re: [PATCH 2/5] mtd: nand: omap2: Start dma request before enabling prefetch Roger Quadros <rogerq@ti.com> - 2015-10-14 13:50 +0200
Re: [PATCH 2/5] mtd: nand: omap2: Start dma request before enabling prefetch "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-14 15:50 +0200
[PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Franklin S Cooper Jr <fcooper@ti.com> - 2015-10-13 03:50 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Roger Quadros <rogerq@ti.com> - 2015-10-14 13:40 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Roger Quadros <rogerq@ti.com> - 2015-10-14 14:00 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-14 15:30 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Roger Quadros <rogerq@ti.com> - 2015-10-14 16:20 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-14 16:40 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Tony Lindgren <tony@atomide.com> - 2015-10-14 18:20 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-14 18:30 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Tony Lindgren <tony@atomide.com> - 2015-10-14 20:20 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-14 22:10 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT Roger Quadros <rogerq@ti.com> - 2015-10-15 09:40 +0200
Re: [PATCH 1/5] mtd: nand: omap2: Support parsing dma channel information from DT "Franklin S Cooper Jr." <fcooper@ti.com> - 2015-10-15 19:20 +0200
csiph-web