All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicholas Mc Guire <der.herr@hofr.at>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
	Wolfram Sang <wsa@the-dreams.de>,
	Vinod Koul <vinod.koul@intel.com>,
	linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org,
	Nicholas Mc Guire <hofrat@osadl.org>,
	Brian Norris <computersforpeace@gmail.com>,
	David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH 1/3] mtd: sh_flctl: fixup wait_for_completion_timeout return handling
Date: Sat, 2 May 2015 08:49:18 +0200	[thread overview]
Message-ID: <20150502064917.GA17454@opentech.at> (raw)
In-Reply-To: <1840948.DRGdB3Gx66@avalon>

On Sat, 02 May 2015, Laurent Pinchart wrote:

> Hi Nicholas,
> 
> Thank you for the patch.
> 
> On Friday 01 May 2015 16:16:01 Nicholas Mc Guire wrote:
> > wait_for_completion_timeout() returns unsigned long not int so the check
> > for <= should be == and the type unsigned long. This fixes up the return
> > value handling and returns -ETIMEDOUT on timeout rather than 0 and 1 on
> > on success rather than a more or less random remaining number of jiffies.
> > 
> > Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
> > ---
> > 
> > call sites:
> > read_fiforeg,write_ec_fiforeg assume > 0 == success
> > and the comment in flctl_dma_fifo0_transfe states
> >         /* ret > 0 is success */
> >         return ret;
> > since it is only checking for > 0 in the call-sites
> > returning -ETIMEDOUT should be fine.
> > 
> > Patch was compile tested with ap325rxa_defconfig (implies
> > CONFIG_MTD_NAND_SH_FLCTL=y)
> > 
> > Patch is against 4.1-rc1 (localversion-next is -next-20150501)
> > 
> >  drivers/mtd/nand/sh_flctl.c |    9 ++++++---
> >  1 file changed, 6 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c
> > index c3ce81c..4450864 100644
> > --- a/drivers/mtd/nand/sh_flctl.c
> > +++ b/drivers/mtd/nand/sh_flctl.c
> > @@ -354,6 +354,7 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl
> > *flctl, unsigned long *buf, dma_cookie_t cookie = -EINVAL;
> >  	uint32_t reg;
> >  	int ret;
> > +	unsigned long time_left;
> > 
> >  	if (dir == DMA_FROM_DEVICE) {
> >  		chan = flctl->chan_fifo0_rx;
> > @@ -388,14 +389,16 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl
> > *flctl, unsigned long *buf, goto out;
> >  	}
> > 
> > -	ret =
> > +	time_left =
> >  	wait_for_completion_timeout(&flctl->dma_complete,
> >  				msecs_to_jiffies(3000));
> > 
> > -	if (ret <= 0) {
> > +	if (time_left == 0) {
> >  		dmaengine_terminate_all(chan);
> >  		dev_err(&flctl->pdev->dev, "wait_for_completion_timeout\n");
> > -	}
> > +		ret = -ETIMEDOUT;
> > +	} else
> > +		ret = 1;	/* completion succeeded */
> 
> I'd go one step further and make this function return < 0 on error and 0 on 
> success, like usually done through the kernel API. You could then simplify the 
> code using something like
> 
>         if (!wait_for_completion_timeout(&flctl->dma_complete,
>                                          msecs_to_jiffies(3000))) {
>                 dmaengine_terminate_all(chan);
>                 dev_err(&flctl->pdev->dev, "wait_for_completion_timeout\n");
>                 ret = -ETIMEDOUT;
>         }
> 
> (pre-initializing ret to 0)
> 
> > 
> >  out:
> >  	reg = readl(FLINTDMACR(flctl));
>

ok - given that this needs some fixup anyway due to
not properly reading dmaengine_submit() - I'll fix
things up and re-submit.

thx!
hofrat

WARNING: multiple messages have this Message-ID (diff)
From: Nicholas Mc Guire <der.herr@hofr.at>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Nicholas Mc Guire <hofrat@osadl.org>,
	David Woodhouse <dwmw2@infradead.org>,
	Brian Norris <computersforpeace@gmail.com>,
	Vinod Koul <vinod.koul@intel.com>,
	Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
	Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>,
	Wolfram Sang <wsa@the-dreams.de>, Arnd Bergmann <arnd@arndb.de>,
	linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/3] mtd: sh_flctl: fixup wait_for_completion_timeout return handling
Date: Sat, 2 May 2015 08:49:18 +0200	[thread overview]
Message-ID: <20150502064917.GA17454@opentech.at> (raw)
In-Reply-To: <1840948.DRGdB3Gx66@avalon>

On Sat, 02 May 2015, Laurent Pinchart wrote:

> Hi Nicholas,
> 
> Thank you for the patch.
> 
> On Friday 01 May 2015 16:16:01 Nicholas Mc Guire wrote:
> > wait_for_completion_timeout() returns unsigned long not int so the check
> > for <= should be == and the type unsigned long. This fixes up the return
> > value handling and returns -ETIMEDOUT on timeout rather than 0 and 1 on
> > on success rather than a more or less random remaining number of jiffies.
> > 
> > Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
> > ---
> > 
> > call sites:
> > read_fiforeg,write_ec_fiforeg assume > 0 == success
> > and the comment in flctl_dma_fifo0_transfe states
> >         /* ret > 0 is success */
> >         return ret;
> > since it is only checking for > 0 in the call-sites
> > returning -ETIMEDOUT should be fine.
> > 
> > Patch was compile tested with ap325rxa_defconfig (implies
> > CONFIG_MTD_NAND_SH_FLCTL=y)
> > 
> > Patch is against 4.1-rc1 (localversion-next is -next-20150501)
> > 
> >  drivers/mtd/nand/sh_flctl.c |    9 ++++++---
> >  1 file changed, 6 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/mtd/nand/sh_flctl.c b/drivers/mtd/nand/sh_flctl.c
> > index c3ce81c..4450864 100644
> > --- a/drivers/mtd/nand/sh_flctl.c
> > +++ b/drivers/mtd/nand/sh_flctl.c
> > @@ -354,6 +354,7 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl
> > *flctl, unsigned long *buf, dma_cookie_t cookie = -EINVAL;
> >  	uint32_t reg;
> >  	int ret;
> > +	unsigned long time_left;
> > 
> >  	if (dir == DMA_FROM_DEVICE) {
> >  		chan = flctl->chan_fifo0_rx;
> > @@ -388,14 +389,16 @@ static int flctl_dma_fifo0_transfer(struct sh_flctl
> > *flctl, unsigned long *buf, goto out;
> >  	}
> > 
> > -	ret =
> > +	time_left =
> >  	wait_for_completion_timeout(&flctl->dma_complete,
> >  				msecs_to_jiffies(3000));
> > 
> > -	if (ret <= 0) {
> > +	if (time_left == 0) {
> >  		dmaengine_terminate_all(chan);
> >  		dev_err(&flctl->pdev->dev, "wait_for_completion_timeout\n");
> > -	}
> > +		ret = -ETIMEDOUT;
> > +	} else
> > +		ret = 1;	/* completion succeeded */
> 
> I'd go one step further and make this function return < 0 on error and 0 on 
> success, like usually done through the kernel API. You could then simplify the 
> code using something like
> 
>         if (!wait_for_completion_timeout(&flctl->dma_complete,
>                                          msecs_to_jiffies(3000))) {
>                 dmaengine_terminate_all(chan);
>                 dev_err(&flctl->pdev->dev, "wait_for_completion_timeout\n");
>                 ret = -ETIMEDOUT;
>         }
> 
> (pre-initializing ret to 0)
> 
> > 
> >  out:
> >  	reg = readl(FLINTDMACR(flctl));
>

ok - given that this needs some fixup anyway due to
not properly reading dmaengine_submit() - I'll fix
things up and re-submit.

thx!
hofrat

  reply	other threads:[~2015-05-02  6:49 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-01 14:16 [PATCH 1/3] mtd: sh_flctl: fixup wait_for_completion_timeout return handling Nicholas Mc Guire
2015-05-01 14:16 ` Nicholas Mc Guire
2015-05-01 14:16 ` [PATCH 2/3] mtd: sh_flctl: fix alignment of function argument Nicholas Mc Guire
2015-05-01 14:16   ` Nicholas Mc Guire
2015-05-01 23:08   ` Laurent Pinchart
2015-05-01 23:08     ` Laurent Pinchart
2015-05-01 14:16 ` [PATCH 3/3] mtd: sh_flctl: remove unused variable and assignment Nicholas Mc Guire
2015-05-01 14:16   ` Nicholas Mc Guire
2015-05-01 23:07   ` Laurent Pinchart
2015-05-01 23:07     ` Laurent Pinchart
2015-05-01 23:20 ` [PATCH 1/3] mtd: sh_flctl: fixup wait_for_completion_timeout return handling Laurent Pinchart
2015-05-01 23:20   ` Laurent Pinchart
2015-05-02  6:49   ` Nicholas Mc Guire [this message]
2015-05-02  6:49     ` Nicholas Mc Guire

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=20150502064917.GA17454@opentech.at \
    --to=der.herr@hofr.at \
    --cc=arnd@arndb.de \
    --cc=computersforpeace@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=hofrat@osadl.org \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=vinod.koul@intel.com \
    --cc=wsa@the-dreams.de \
    /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.