Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1395331 > unrolled thread

[PATCH] mtd: nand: sh_flctl: handle dma_submit() errors

Started byBrian Norris <computersforpeace@gmail.com>
First post2016-05-05 21:50 +0200
Last post2016-05-05 21:50 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH] mtd: nand: sh_flctl: handle dma_submit() errors Brian Norris <computersforpeace@gmail.com> - 2016-05-05 21:50 +0200

#1395331 — [PATCH] mtd: nand: sh_flctl: handle dma_submit() errors

FromBrian Norris <computersforpeace@gmail.com>
Date2016-05-05 21:50 +0200
Subject[PATCH] mtd: nand: sh_flctl: handle dma_submit() errors
Message-ID<rvxrA-6ic-27@gated-at.bofh.it>
Some build tools noticed that 'cookie' is being set but not used. Might
as well catch the errors here and handle them the same way we handle
other DMA prep steps.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
---
Compile tested only

 drivers/mtd/nand/sh_flctl.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c
index 6fa3bcd59769..442ce619b3b6 100644
--- a/drivers/mtd/nand/sh_flctl.c
+++ b/drivers/mtd/nand/sh_flctl.c
@@ -397,7 +397,7 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl *flctl, unsigned long *buf,
 	struct dma_chan *chan;
 	enum dma_transfer_direction tr_dir;
 	dma_addr_t dma_addr;
-	dma_cookie_t cookie = -EINVAL;
+	dma_cookie_t cookie;
 	uint32_t reg;
 	int ret;
 
@@ -423,6 +423,12 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl *flctl, unsigned long *buf,
 		desc->callback = flctl_dma_complete;
 		desc->callback_param = flctl;
 		cookie = dmaengine_submit(desc);
+		if (dma_submit_error(cookie)) {
+			ret = dma_submit_error(cookie);
+			dev_warn(&flctl->pdev->dev,
+				 "DMA submit failed, falling back to PIO\n");
+			goto out;
+		}
 
 		dma_async_issue_pending(chan);
 	} else {
-- 
2.8.0.rc3.226.g39d4020

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web