All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] mtd: nand: sh_flctl: handle dma_submit() errors
@ 2016-05-05 19:42 Brian Norris
  2016-08-14 15:50 ` Boris Brezillon
  0 siblings, 1 reply; 2+ messages in thread
From: Brian Norris @ 2016-05-05 19:42 UTC (permalink / raw)
  To: Boris Brezillon; +Cc: Richard Weinberger, Brian Norris, linux-kernel, linux-mtd

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

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] mtd: nand: sh_flctl: handle dma_submit() errors
  2016-05-05 19:42 [PATCH] mtd: nand: sh_flctl: handle dma_submit() errors Brian Norris
@ 2016-08-14 15:50 ` Boris Brezillon
  0 siblings, 0 replies; 2+ messages in thread
From: Boris Brezillon @ 2016-08-14 15:50 UTC (permalink / raw)
  To: Brian Norris; +Cc: Richard Weinberger, linux-kernel, linux-mtd

On Thu,  5 May 2016 12:42:44 -0700
Brian Norris <computersforpeace@gmail.com> wrote:

> 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.
> 

Applied. I know it's only been compile tested, and even if nobody
acked/reviewed/tested it, it seems to be correct.
Let's see if someone complains about a regression (the commit will be in
-next for the whole 4.8-rc cycle).

Thanks,

Boris

> 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 {

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-08-14 15:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-05 19:42 [PATCH] mtd: nand: sh_flctl: handle dma_submit() errors Brian Norris
2016-08-14 15:50 ` Boris Brezillon

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.