All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iio: mxs-lradc: Remove useless check in read_raw
@ 2013-07-02  0:08 Marek Vasut
  2013-07-02  3:38 ` Otavio Salvador
                   ` (2 more replies)
  0 siblings, 3 replies; 18+ messages in thread
From: Marek Vasut @ 2013-07-02  0:08 UTC (permalink / raw)
  To: linux-iio; +Cc: otavio, Marek Vasut, Jonathan Cameron, Fabio Estevam

The removed check in the read_raw implementation was always true,
therefore remove it.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Fabio Estevam <fabio.estevam@freescale.com>
---
 drivers/staging/iio/adc/mxs-lradc.c |    7 -------
 1 file changed, 7 deletions(-)

diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c
index d92c97a..c318eb6 100644
--- a/drivers/staging/iio/adc/mxs-lradc.c
+++ b/drivers/staging/iio/adc/mxs-lradc.c
@@ -234,7 +234,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev,
 {
 	struct mxs_lradc *lradc = iio_priv(iio_dev);
 	int ret;
-	unsigned long mask;
 
 	if (m != IIO_CHAN_INFO_RAW)
 		return -EINVAL;
@@ -243,12 +242,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev,
 	if (chan->channel > LRADC_MAX_TOTAL_CHANS)
 		return -EINVAL;
 
-	/* Validate the channel if it doesn't intersect with reserved chans. */
-	bitmap_set(&mask, chan->channel, 1);
-	ret = iio_validate_scan_mask_onehot(iio_dev, &mask);
-	if (ret)
-		return -EINVAL;
-
 	/*
 	 * See if there is no buffered operation in progess. If there is, simply
 	 * bail out. This can be improved to support both buffered and raw IO at
-- 
1.7.10.4

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02  0:08 [PATCH] iio: mxs-lradc: Remove useless check in read_raw Marek Vasut
@ 2013-07-02  3:38 ` Otavio Salvador
  2013-07-02 17:58   ` Marek Vasut
  2013-07-02  9:19 ` Hector Palacios
  2013-07-02 11:43 ` Alexandre Belloni
  2 siblings, 1 reply; 18+ messages in thread
From: Otavio Salvador @ 2013-07-02  3:38 UTC (permalink / raw)
  To: Marek Vasut; +Cc: linux-iio, Jonathan Cameron, Fabio Estevam

On Mon, Jul 1, 2013 at 9:08 PM, Marek Vasut <marex@denx.de> wrote:
> The removed check in the read_raw implementation was always true,
> therefore remove it.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Fabio Estevam <fabio.estevam@freescale.com>

This fixes the driver for MX23 but why this code were add at first?

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02  0:08 [PATCH] iio: mxs-lradc: Remove useless check in read_raw Marek Vasut
  2013-07-02  3:38 ` Otavio Salvador
@ 2013-07-02  9:19 ` Hector Palacios
  2013-07-02 11:43 ` Alexandre Belloni
  2 siblings, 0 replies; 18+ messages in thread
From: Hector Palacios @ 2013-07-02  9:19 UTC (permalink / raw)
  To: linux-iio
  Cc: public-linux-iio-u79uwXL29TY76Z2rM5mHXA,
	public-otavio-fKevB0iiKLMBZ+LybsDmbA, Jonathan Cameron,
	Fabio Estevam

Dear Marek,

On 07/02/2013 02:08 AM, Marek Vasut wrote:
> The removed check in the read_raw implementation was always true,
> therefore remove it.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Fabio Estevam <fabio.estevam@freescale.com>
> ---
>   drivers/staging/iio/adc/mxs-lradc.c |    7 -------
>   1 file changed, 7 deletions(-)
>
> diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c
> index d92c97a..c318eb6 100644
> --- a/drivers/staging/iio/adc/mxs-lradc.c
> +++ b/drivers/staging/iio/adc/mxs-lradc.c
> @@ -234,7 +234,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev,
>   {
>   	struct mxs_lradc *lradc = iio_priv(iio_dev);
>   	int ret;
> -	unsigned long mask;
>
>   	if (m != IIO_CHAN_INFO_RAW)
>   		return -EINVAL;
> @@ -243,12 +242,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev,
>   	if (chan->channel > LRADC_MAX_TOTAL_CHANS)
>   		return -EINVAL;
>
> -	/* Validate the channel if it doesn't intersect with reserved chans. */
> -	bitmap_set(&mask, chan->channel, 1);
> -	ret = iio_validate_scan_mask_onehot(iio_dev, &mask);
> -	if (ret)
> -		return -EINVAL;
> -
>   	/*
>   	 * See if there is no buffered operation in progess. If there is, simply
>   	 * bail out. This can be improved to support both buffered and raw IO at
>

By "always true" you mean that it always entered the if and exited with -EINVAL, right?
I just started to look at this driver on my MX28 platform and this check was always 
returning -EINVAL. With this patch I can now read the channels.
Was this what was happening to you as well?

Thank you,
-- 
Héctor Palacios


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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02  0:08 [PATCH] iio: mxs-lradc: Remove useless check in read_raw Marek Vasut
  2013-07-02  3:38 ` Otavio Salvador
  2013-07-02  9:19 ` Hector Palacios
@ 2013-07-02 11:43 ` Alexandre Belloni
  2013-07-02 11:53   ` Otavio Salvador
  2013-07-02 12:03   ` Marek Vasut
  2 siblings, 2 replies; 18+ messages in thread
From: Alexandre Belloni @ 2013-07-02 11:43 UTC (permalink / raw)
  To: Marek Vasut; +Cc: linux-iio, otavio, Jonathan Cameron, Fabio Estevam

Dear Marek,

I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
how to reproduce it ?

Regards,

On 02/07/2013 02:08, Marek Vasut wrote:
> The removed check in the read_raw implementation was always true,
> therefore remove it.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Jonathan Cameron <jic23@kernel.org>
> Cc: Fabio Estevam <fabio.estevam@freescale.com>
> ---
>  drivers/staging/iio/adc/mxs-lradc.c |    7 -------
>  1 file changed, 7 deletions(-)
> 
> diff --git a/drivers/staging/iio/adc/mxs-lradc.c b/drivers/staging/iio/adc/mxs-lradc.c
> index d92c97a..c318eb6 100644
> --- a/drivers/staging/iio/adc/mxs-lradc.c
> +++ b/drivers/staging/iio/adc/mxs-lradc.c
> @@ -234,7 +234,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev,
>  {
>  	struct mxs_lradc *lradc = iio_priv(iio_dev);
>  	int ret;
> -	unsigned long mask;
>  
>  	if (m != IIO_CHAN_INFO_RAW)
>  		return -EINVAL;
> @@ -243,12 +242,6 @@ static int mxs_lradc_read_raw(struct iio_dev *iio_dev,
>  	if (chan->channel > LRADC_MAX_TOTAL_CHANS)
>  		return -EINVAL;
>  
> -	/* Validate the channel if it doesn't intersect with reserved chans. */
> -	bitmap_set(&mask, chan->channel, 1);
> -	ret = iio_validate_scan_mask_onehot(iio_dev, &mask);
> -	if (ret)
> -		return -EINVAL;
> -
>  	/*
>  	 * See if there is no buffered operation in progess. If there is, simply
>  	 * bail out. This can be improved to support both buffered and raw IO at
> 


-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 11:43 ` Alexandre Belloni
@ 2013-07-02 11:53   ` Otavio Salvador
  2013-07-02 12:03   ` Marek Vasut
  1 sibling, 0 replies; 18+ messages in thread
From: Otavio Salvador @ 2013-07-02 11:53 UTC (permalink / raw)
  To: Alexandre Belloni; +Cc: Marek Vasut, linux-iio, Jonathan Cameron, Fabio Estevam

On Tue, Jul 2, 2013 at 8:43 AM, Alexandre Belloni
<alexandre.belloni@free-electrons.com> wrote:
> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
> how to reproduce it ?

I had this, but in MX23.

It seems like a race as if I put some prints in this code area it
works sometimes.

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 11:43 ` Alexandre Belloni
  2013-07-02 11:53   ` Otavio Salvador
@ 2013-07-02 12:03   ` Marek Vasut
  2013-07-02 12:49     ` Alexandre Belloni
  1 sibling, 1 reply; 18+ messages in thread
From: Marek Vasut @ 2013-07-02 12:03 UTC (permalink / raw)
  To: Alexandre Belloni; +Cc: linux-iio, otavio, Jonathan Cameron, Fabio Estevam

Dear Alexandre Belloni,

> Dear Marek,
> 
> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
> how to reproduce it ?

The check is just redundant, it's not a bug.

> Regards,
> 
> On 02/07/2013 02:08, Marek Vasut wrote:
> > The removed check in the read_raw implementation was always true,
> > therefore remove it.
> > 
> > Signed-off-by: Marek Vasut <marex@denx.de>
> > Cc: Jonathan Cameron <jic23@kernel.org>
> > Cc: Fabio Estevam <fabio.estevam@freescale.com>
> > ---
> > 
> >  drivers/staging/iio/adc/mxs-lradc.c |    7 -------
> >  1 file changed, 7 deletions(-)
> > 
> > diff --git a/drivers/staging/iio/adc/mxs-lradc.c
> > b/drivers/staging/iio/adc/mxs-lradc.c index d92c97a..c318eb6 100644
> > --- a/drivers/staging/iio/adc/mxs-lradc.c
> > +++ b/drivers/staging/iio/adc/mxs-lradc.c
> > @@ -234,7 +234,6 @@ static int mxs_lradc_read_raw(struct iio_dev
> > *iio_dev,
> > 
> >  {
> >  
> >  	struct mxs_lradc *lradc = iio_priv(iio_dev);
> >  	int ret;
> > 
> > -	unsigned long mask;
> > 
> >  	if (m != IIO_CHAN_INFO_RAW)
> >  	
> >  		return -EINVAL;
> > 
> > @@ -243,12 +242,6 @@ static int mxs_lradc_read_raw(struct iio_dev
> > *iio_dev,
> > 
> >  	if (chan->channel > LRADC_MAX_TOTAL_CHANS)
> >  	
> >  		return -EINVAL;
> > 
> > -	/* Validate the channel if it doesn't intersect with reserved chans. */
> > -	bitmap_set(&mask, chan->channel, 1);
> > -	ret = iio_validate_scan_mask_onehot(iio_dev, &mask);
> > -	if (ret)
> > -		return -EINVAL;
> > -
> > 
> >  	/*
> >  	
> >  	 * See if there is no buffered operation in progess. If there is,
> >  	 simply * bail out. This can be improved to support both buffered and
> >  	 raw IO at

Best regards,
Marek Vasut

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 12:03   ` Marek Vasut
@ 2013-07-02 12:49     ` Alexandre Belloni
  2013-07-02 16:13       ` Marek Vasut
  0 siblings, 1 reply; 18+ messages in thread
From: Alexandre Belloni @ 2013-07-02 12:49 UTC (permalink / raw)
  To: Marek Vasut; +Cc: linux-iio, otavio, Jonathan Cameron, Fabio Estevam

On 02/07/2013 14:03, Marek Vasut wrote:
> Dear Alexandre Belloni,
> 
>> Dear Marek,
>>
>> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
>> how to reproduce it ?
> 
> The check is just redundant, it's not a bug.
> 

Ok, that's what I understood first but then got confused by reports of
it solving a bug.

Thanks !


-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 12:49     ` Alexandre Belloni
@ 2013-07-02 16:13       ` Marek Vasut
  2013-07-02 16:37         ` Otavio Salvador
  2013-07-02 17:19         ` Alexandre Belloni
  0 siblings, 2 replies; 18+ messages in thread
From: Marek Vasut @ 2013-07-02 16:13 UTC (permalink / raw)
  To: Alexandre Belloni; +Cc: linux-iio, otavio, Jonathan Cameron, Fabio Estevam

Dear Alexandre Belloni,

> On 02/07/2013 14:03, Marek Vasut wrote:
> > Dear Alexandre Belloni,
> > 
> >> Dear Marek,
> >> 
> >> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
> >> how to reproduce it ?
> > 
> > The check is just redundant, it's not a bug.
> 
> Ok, that's what I understood first but then got confused by reports of
> it solving a bug.

It cannot solve a thing. If it does, then we have a problem.

What kind of bug do you see ? How can I replicate it ? Can you send me a 
testcase?

Best regards,
Marek Vasut

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 16:13       ` Marek Vasut
@ 2013-07-02 16:37         ` Otavio Salvador
  2013-07-02 17:36           ` Marek Vasut
  2013-07-02 17:19         ` Alexandre Belloni
  1 sibling, 1 reply; 18+ messages in thread
From: Otavio Salvador @ 2013-07-02 16:37 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Alexandre Belloni, linux-iio, Jonathan Cameron, Fabio Estevam

On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex@denx.de> wrote:
> Dear Alexandre Belloni,
>
>> On 02/07/2013 14:03, Marek Vasut wrote:
>> > Dear Alexandre Belloni,
>> >
>> >> Dear Marek,
>> >>
>> >> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
>> >> how to reproduce it ?
>> >
>> > The check is just redundant, it's not a bug.
>>
>> Ok, that's what I understood first but then got confused by reports of
>> it solving a bug.
>
> It cannot solve a thing. If it does, then we have a problem.
>
> What kind of bug do you see ? How can I replicate it ? Can you send me a
> testcase?

As I said this code sometimes work. If you put a printf before this
call it sometimes work. So I think we have a race somewhere.

When I were debugging this I found that when it works we have 10
active channels, it seems.

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 16:13       ` Marek Vasut
  2013-07-02 16:37         ` Otavio Salvador
@ 2013-07-02 17:19         ` Alexandre Belloni
  1 sibling, 0 replies; 18+ messages in thread
From: Alexandre Belloni @ 2013-07-02 17:19 UTC (permalink / raw)
  To: Marek Vasut; +Cc: linux-iio, otavio, Jonathan Cameron, Fabio Estevam

Hi,

On 02/07/2013 18:13, Marek Vasut wrote:
> Dear Alexandre Belloni,
> 
>> On 02/07/2013 14:03, Marek Vasut wrote:
>>> Dear Alexandre Belloni,
>>>
>>>> Dear Marek,
>>>>
>>>> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
>>>> how to reproduce it ?
>>>
>>> The check is just redundant, it's not a bug.
>>
>> Ok, that's what I understood first but then got confused by reports of
>> it solving a bug.
> 
> It cannot solve a thing. If it does, then we have a problem.
> 
> What kind of bug do you see ? How can I replicate it ? Can you send me a 
> testcase?
> 

It doesn't solve anything on my side, I never saw any issue with that
code. I was surprised by those reports though:

http://marc.info/?l=linux-iio&m=137275710622191&w=2
http://marc.info/?l=linux-iio&m=137273629716559&w=2

Hector and Otavio seem to be the ones with an issue ;)

-- 
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 16:37         ` Otavio Salvador
@ 2013-07-02 17:36           ` Marek Vasut
  2013-07-02 17:42             ` Otavio Salvador
  0 siblings, 1 reply; 18+ messages in thread
From: Marek Vasut @ 2013-07-02 17:36 UTC (permalink / raw)
  To: Otavio Salvador
  Cc: Alexandre Belloni, linux-iio, Jonathan Cameron, Fabio Estevam

Dear Otavio Salvador,

> On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex@denx.de> wrote:
> > Dear Alexandre Belloni,
> > 
> >> On 02/07/2013 14:03, Marek Vasut wrote:
> >> > Dear Alexandre Belloni,
> >> > 
> >> >> Dear Marek,
> >> >> 
> >> >> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
> >> >> how to reproduce it ?
> >> > 
> >> > The check is just redundant, it's not a bug.
> >> 
> >> Ok, that's what I understood first but then got confused by reports of
> >> it solving a bug.
> > 
> > It cannot solve a thing. If it does, then we have a problem.
> > 
> > What kind of bug do you see ? How can I replicate it ? Can you send me a
> > testcase?
> 
> As I said this code sometimes work. If you put a printf before this
> call it sometimes work. So I think we have a race somewhere.
> 
> When I were debugging this I found that when it works we have 10
> active channels, it seems.

Uh, the read_raw() should exit with -EBUSY, since the mutex_tryload() will fail 
iff buffered operation is in progress. Or what do you mean by having "10 active 
channels"?

Best regards,
Marek Vasut

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 17:36           ` Marek Vasut
@ 2013-07-02 17:42             ` Otavio Salvador
  2013-07-02 17:55               ` Marek Vasut
  0 siblings, 1 reply; 18+ messages in thread
From: Otavio Salvador @ 2013-07-02 17:42 UTC (permalink / raw)
  To: Marek Vasut; +Cc: Alexandre Belloni, linux-iio, Jonathan Cameron, Fabio Estevam

On Tue, Jul 2, 2013 at 2:36 PM, Marek Vasut <marex@denx.de> wrote:
> Dear Otavio Salvador,
>
>> On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex@denx.de> wrote:
>> > Dear Alexandre Belloni,
>> >
>> >> On 02/07/2013 14:03, Marek Vasut wrote:
>> >> > Dear Alexandre Belloni,
>> >> >
>> >> >> Dear Marek,
>> >> >>
>> >> >> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you know
>> >> >> how to reproduce it ?
>> >> >
>> >> > The check is just redundant, it's not a bug.
>> >>
>> >> Ok, that's what I understood first but then got confused by reports of
>> >> it solving a bug.
>> >
>> > It cannot solve a thing. If it does, then we have a problem.
>> >
>> > What kind of bug do you see ? How can I replicate it ? Can you send me a
>> > testcase?
>>
>> As I said this code sometimes work. If you put a printf before this
>> call it sometimes work. So I think we have a race somewhere.
>>
>> When I were debugging this I found that when it works we have 10
>> active channels, it seems.
>
> Uh, the read_raw() should exit with -EBUSY, since the mutex_tryload() will fail
> iff buffered operation is in progress. Or what do you mean by having "10 active
> channels"?

The read_raw returned invalid. The onehot always returns false and I
have 10 as mask comparing return.

--
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 17:42             ` Otavio Salvador
@ 2013-07-02 17:55               ` Marek Vasut
  2013-07-03  9:25                 ` Hector Palacios
  0 siblings, 1 reply; 18+ messages in thread
From: Marek Vasut @ 2013-07-02 17:55 UTC (permalink / raw)
  To: Otavio Salvador
  Cc: Alexandre Belloni, linux-iio, Jonathan Cameron, Fabio Estevam

Dear Otavio Salvador,

> On Tue, Jul 2, 2013 at 2:36 PM, Marek Vasut <marex@denx.de> wrote:
> > Dear Otavio Salvador,
> > 
> >> On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex@denx.de> wrote:
> >> > Dear Alexandre Belloni,
> >> > 
> >> >> On 02/07/2013 14:03, Marek Vasut wrote:
> >> >> > Dear Alexandre Belloni,
> >> >> > 
> >> >> >> Dear Marek,
> >> >> >> 
> >> >> >> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you
> >> >> >> know how to reproduce it ?
> >> >> > 
> >> >> > The check is just redundant, it's not a bug.
> >> >> 
> >> >> Ok, that's what I understood first but then got confused by reports
> >> >> of it solving a bug.
> >> > 
> >> > It cannot solve a thing. If it does, then we have a problem.
> >> > 
> >> > What kind of bug do you see ? How can I replicate it ? Can you send me
> >> > a testcase?
> >> 
> >> As I said this code sometimes work. If you put a printf before this
> >> call it sometimes work. So I think we have a race somewhere.
> >> 
> >> When I were debugging this I found that when it works we have 10
> >> active channels, it seems.
> > 
> > Uh, the read_raw() should exit with -EBUSY, since the mutex_tryload()
> > will fail iff buffered operation is in progress. Or what do you mean by
> > having "10 active channels"?
> 
> The read_raw returned invalid. The onehot always returns false and I
> have 10 as mask comparing return.

Looking at the code.

the bitmap_set() will set (1 << chan->channel) into "mask" var.

The iio_validate_scan_mask_onehot is implemented like this:

688 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
689         const unsigned long *mask)
690 {
691         return bitmap_weight(mask, indio_dev->masklength) == 1;
692 }

So if mask _always_ has exactly one bit set, the iio_validate_scan_mask_onehot 
will always return 1. Aaaand ... now I see why it fixes a bug for you.

if (ret)
 return -EINVAL;

This stuff above will always be if (1) so will always return -EINVAL. Dang!

Best regards,
Marek Vasut

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02  3:38 ` Otavio Salvador
@ 2013-07-02 17:58   ` Marek Vasut
  0 siblings, 0 replies; 18+ messages in thread
From: Marek Vasut @ 2013-07-02 17:58 UTC (permalink / raw)
  To: Otavio Salvador; +Cc: linux-iio, Jonathan Cameron, Fabio Estevam

Dear Otavio Salvador,

> On Mon, Jul 1, 2013 at 9:08 PM, Marek Vasut <marex@denx.de> wrote:
> > The removed check in the read_raw implementation was always true,
> > therefore remove it.
> > 
> > Signed-off-by: Marek Vasut <marex@denx.de>
> > Cc: Jonathan Cameron <jic23@kernel.org>
> > Cc: Fabio Estevam <fabio.estevam@freescale.com>
> 
> This fixes the driver for MX23 but why this code were add at first?

Obviously because I wrote the code incorrectly. I appologize for the trouble.

Jonathan, can we get this one into 3.10.1 maybe ?

Best regards,
Marek Vasut

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-02 17:55               ` Marek Vasut
@ 2013-07-03  9:25                 ` Hector Palacios
  2013-07-03 11:38                   ` Marek Vasut
  0 siblings, 1 reply; 18+ messages in thread
From: Hector Palacios @ 2013-07-03  9:25 UTC (permalink / raw)
  To: Marek Vasut, Alexandre Belloni, linux-iio@vger.kernel.org,
	fabio.estevam@freescale.com, jic23

Dear Marek,

On 07/02/2013 07:55 PM, Marek Vasut wrote:
> Dear Otavio Salvador,
>
>> On Tue, Jul 2, 2013 at 2:36 PM, Marek Vasut <marex-ynQEQJNshbs@public.gmane.org> wrote:
>>> Dear Otavio Salvador,
>>>
>>>> On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex-ynQEQJNshbs@public.gmane.org> wrote:
>>>>> Dear Alexandre Belloni,
>>>>>
>>>>>> On 02/07/2013 14:03, Marek Vasut wrote:
>>>>>>> Dear Alexandre Belloni,
>>>>>>>
>>>>>>>> Dear Marek,
>>>>>>>>
>>>>>>>> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you
>>>>>>>> know how to reproduce it ?
>>>>>>>
>>>>>>> The check is just redundant, it's not a bug.
>>>>>>
>>>>>> Ok, that's what I understood first but then got confused by reports
>>>>>> of it solving a bug.
>>>>>
>>>>> It cannot solve a thing. If it does, then we have a problem.
>>>>>
>>>>> What kind of bug do you see ? How can I replicate it ? Can you send me
>>>>> a testcase?
>>>>
>>>> As I said this code sometimes work. If you put a printf before this
>>>> call it sometimes work. So I think we have a race somewhere.
>>>>
>>>> When I were debugging this I found that when it works we have 10
>>>> active channels, it seems.
>>>
>>> Uh, the read_raw() should exit with -EBUSY, since the mutex_tryload()
>>> will fail iff buffered operation is in progress. Or what do you mean by
>>> having "10 active channels"?
>>
>> The read_raw returned invalid. The onehot always returns false and I
>> have 10 as mask comparing return.
>
> Looking at the code.
>
> the bitmap_set() will set (1 << chan->channel) into "mask" var.
>
> The iio_validate_scan_mask_onehot is implemented like this:
>
> 688 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
> 689         const unsigned long *mask)
> 690 {
> 691         return bitmap_weight(mask, indio_dev->masklength) == 1;
> 692 }
>
> So if mask _always_ has exactly one bit set, the iio_validate_scan_mask_onehot
> will always return 1. Aaaand ... now I see why it fixes a bug for you.
>
> if (ret)
>   return -EINVAL;
>
> This stuff above will always be if (1) so will always return -EINVAL. Dang!

Yes, this was exactly what was happening on my MX28 when trying to read one channel.
Now, after the different comments I'm confused, was this a bug that your patch solved 
or was I doing something wrong?

Best regards,
--
Hector Palacios

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-03  9:25                 ` Hector Palacios
@ 2013-07-03 11:38                   ` Marek Vasut
  2013-07-03 13:58                     ` Hector Palacios
  0 siblings, 1 reply; 18+ messages in thread
From: Marek Vasut @ 2013-07-03 11:38 UTC (permalink / raw)
  To: Hector Palacios
  Cc: Alexandre Belloni, linux-iio@vger.kernel.org,
	fabio.estevam@freescale.com, jic23

Dear Hector Palacios,

> Dear Marek,
> 
> On 07/02/2013 07:55 PM, Marek Vasut wrote:
> > Dear Otavio Salvador,
> > 
> >> On Tue, Jul 2, 2013 at 2:36 PM, Marek Vasut <marex-
ynQEQJNshbs@public.gmane.org> wrote:
> >>> Dear Otavio Salvador,
> >>> 
> >>>> On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex-
ynQEQJNshbs@public.gmane.org> wrote:
> >>>>> Dear Alexandre Belloni,
> >>>>> 
> >>>>>> On 02/07/2013 14:03, Marek Vasut wrote:
> >>>>>>> Dear Alexandre Belloni,
> >>>>>>> 
> >>>>>>>> Dear Marek,
> >>>>>>>> 
> >>>>>>>> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you
> >>>>>>>> know how to reproduce it ?
> >>>>>>> 
> >>>>>>> The check is just redundant, it's not a bug.
> >>>>>> 
> >>>>>> Ok, that's what I understood first but then got confused by reports
> >>>>>> of it solving a bug.
> >>>>> 
> >>>>> It cannot solve a thing. If it does, then we have a problem.
> >>>>> 
> >>>>> What kind of bug do you see ? How can I replicate it ? Can you send
> >>>>> me a testcase?
> >>>> 
> >>>> As I said this code sometimes work. If you put a printf before this
> >>>> call it sometimes work. So I think we have a race somewhere.
> >>>> 
> >>>> When I were debugging this I found that when it works we have 10
> >>>> active channels, it seems.
> >>> 
> >>> Uh, the read_raw() should exit with -EBUSY, since the mutex_tryload()
> >>> will fail iff buffered operation is in progress. Or what do you mean by
> >>> having "10 active channels"?
> >> 
> >> The read_raw returned invalid. The onehot always returns false and I
> >> have 10 as mask comparing return.
> > 
> > Looking at the code.
> > 
> > the bitmap_set() will set (1 << chan->channel) into "mask" var.
> > 
> > The iio_validate_scan_mask_onehot is implemented like this:
> > 
> > 688 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
> > 689         const unsigned long *mask)
> > 690 {
> > 691         return bitmap_weight(mask, indio_dev->masklength) == 1;
> > 692 }
> > 
> > So if mask _always_ has exactly one bit set, the
> > iio_validate_scan_mask_onehot will always return 1. Aaaand ... now I see
> > why it fixes a bug for you.
> > 
> > if (ret)
> > 
> >   return -EINVAL;
> > 
> > This stuff above will always be if (1) so will always return -EINVAL.
> > Dang!
> 
> Yes, this was exactly what was happening on my MX28 when trying to read one
> channel. Now, after the different comments I'm confused, was this a bug
> that your patch solved or was I doing something wrong?

This patch accidentally (in completely unintended way) solved a bug, yes. But 
the main idea was to just remove redundant code.

Best regards,
Marek Vasut

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-03 11:38                   ` Marek Vasut
@ 2013-07-03 13:58                     ` Hector Palacios
  2013-07-03 19:26                       ` Jonathan Cameron
  0 siblings, 1 reply; 18+ messages in thread
From: Hector Palacios @ 2013-07-03 13:58 UTC (permalink / raw)
  To: Marek Vasut
  Cc: Alexandre Belloni, linux-iio@vger.kernel.org,
	fabio.estevam@freescale.com, jic23@kernel.org

Dear Marek,

On 07/03/2013 01:38 PM, Marek Vasut wrote:
> Dear Hector Palacios,
>
>> Dear Marek,
>>
>> On 07/02/2013 07:55 PM, Marek Vasut wrote:
>>> Dear Otavio Salvador,
>>>
>>>> On Tue, Jul 2, 2013 at 2:36 PM, Marek Vasut <marex-
> ynQEQJNshbs@public.gmane.org> wrote:
>>>>> Dear Otavio Salvador,
>>>>>
>>>>>> On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex-
> ynQEQJNshbs@public.gmane.org> wrote:
>>>>>>> Dear Alexandre Belloni,
>>>>>>>
>>>>>>>> On 02/07/2013 14:03, Marek Vasut wrote:
>>>>>>>>> Dear Alexandre Belloni,
>>>>>>>>>
>>>>>>>>>> Dear Marek,
>>>>>>>>>>
>>>>>>>>>> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you
>>>>>>>>>> know how to reproduce it ?
>>>>>>>>>
>>>>>>>>> The check is just redundant, it's not a bug.
>>>>>>>>
>>>>>>>> Ok, that's what I understood first but then got confused by reports
>>>>>>>> of it solving a bug.
>>>>>>>
>>>>>>> It cannot solve a thing. If it does, then we have a problem.
>>>>>>>
>>>>>>> What kind of bug do you see ? How can I replicate it ? Can you send
>>>>>>> me a testcase?
>>>>>>
>>>>>> As I said this code sometimes work. If you put a printf before this
>>>>>> call it sometimes work. So I think we have a race somewhere.
>>>>>>
>>>>>> When I were debugging this I found that when it works we have 10
>>>>>> active channels, it seems.
>>>>>
>>>>> Uh, the read_raw() should exit with -EBUSY, since the mutex_tryload()
>>>>> will fail iff buffered operation is in progress. Or what do you mean by
>>>>> having "10 active channels"?
>>>>
>>>> The read_raw returned invalid. The onehot always returns false and I
>>>> have 10 as mask comparing return.
>>>
>>> Looking at the code.
>>>
>>> the bitmap_set() will set (1 << chan->channel) into "mask" var.
>>>
>>> The iio_validate_scan_mask_onehot is implemented like this:
>>>
>>> 688 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
>>> 689         const unsigned long *mask)
>>> 690 {
>>> 691         return bitmap_weight(mask, indio_dev->masklength) == 1;
>>> 692 }
>>>
>>> So if mask _always_ has exactly one bit set, the
>>> iio_validate_scan_mask_onehot will always return 1. Aaaand ... now I see
>>> why it fixes a bug for you.
>>>
>>> if (ret)
>>>
>>>    return -EINVAL;
>>>
>>> This stuff above will always be if (1) so will always return -EINVAL.
>>> Dang!
>>
>> Yes, this was exactly what was happening on my MX28 when trying to read one
>> channel. Now, after the different comments I'm confused, was this a bug
>> that your patch solved or was I doing something wrong?
>
> This patch accidentally (in completely unintended way) solved a bug, yes. But
> the main idea was to just remove redundant code.

Maybe you should then amend the commit message to make clear that it solves a bug.

Best regards,
--
Hector Palacios

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

* Re: [PATCH] iio: mxs-lradc: Remove useless check in read_raw
  2013-07-03 13:58                     ` Hector Palacios
@ 2013-07-03 19:26                       ` Jonathan Cameron
  0 siblings, 0 replies; 18+ messages in thread
From: Jonathan Cameron @ 2013-07-03 19:26 UTC (permalink / raw)
  To: Hector Palacios
  Cc: Marek Vasut, Alexandre Belloni, linux-iio@vger.kernel.org,
	fabio.estevam@freescale.com

On 07/03/2013 02:58 PM, Hector Palacios wrote:
> Dear Marek,
> 
> On 07/03/2013 01:38 PM, Marek Vasut wrote:
>> Dear Hector Palacios,
>>
>>> Dear Marek,
>>>
>>> On 07/02/2013 07:55 PM, Marek Vasut wrote:
>>>> Dear Otavio Salvador,
>>>>
>>>>> On Tue, Jul 2, 2013 at 2:36 PM, Marek Vasut <marex-
>> ynQEQJNshbs@public.gmane.org> wrote:
>>>>>> Dear Otavio Salvador,
>>>>>>
>>>>>>> On Tue, Jul 2, 2013 at 1:13 PM, Marek Vasut <marex-
>> ynQEQJNshbs@public.gmane.org> wrote:
>>>>>>>> Dear Alexandre Belloni,
>>>>>>>>
>>>>>>>>> On 02/07/2013 14:03, Marek Vasut wrote:
>>>>>>>>>> Dear Alexandre Belloni,
>>>>>>>>>>
>>>>>>>>>>> Dear Marek,
>>>>>>>>>>>
>>>>>>>>>>> I don't seem to be hitting that issue. I'm using 3.10rc7. Do you
>>>>>>>>>>> know how to reproduce it ?
>>>>>>>>>>
>>>>>>>>>> The check is just redundant, it's not a bug.
>>>>>>>>>
>>>>>>>>> Ok, that's what I understood first but then got confused by reports
>>>>>>>>> of it solving a bug.
>>>>>>>>
>>>>>>>> It cannot solve a thing. If it does, then we have a problem.
>>>>>>>>
>>>>>>>> What kind of bug do you see ? How can I replicate it ? Can you send
>>>>>>>> me a testcase?
>>>>>>>
>>>>>>> As I said this code sometimes work. If you put a printf before this
>>>>>>> call it sometimes work. So I think we have a race somewhere.
>>>>>>>
>>>>>>> When I were debugging this I found that when it works we have 10
>>>>>>> active channels, it seems.
>>>>>>
>>>>>> Uh, the read_raw() should exit with -EBUSY, since the mutex_tryload()
>>>>>> will fail iff buffered operation is in progress. Or what do you mean by
>>>>>> having "10 active channels"?
>>>>>
>>>>> The read_raw returned invalid. The onehot always returns false and I
>>>>> have 10 as mask comparing return.
>>>>
>>>> Looking at the code.
>>>>
>>>> the bitmap_set() will set (1 << chan->channel) into "mask" var.
>>>>
>>>> The iio_validate_scan_mask_onehot is implemented like this:
>>>>
>>>> 688 bool iio_validate_scan_mask_onehot(struct iio_dev *indio_dev,
>>>> 689         const unsigned long *mask)
>>>> 690 {
>>>> 691         return bitmap_weight(mask, indio_dev->masklength) == 1;
>>>> 692 }
>>>>
>>>> So if mask _always_ has exactly one bit set, the
>>>> iio_validate_scan_mask_onehot will always return 1. Aaaand ... now I see
>>>> why it fixes a bug for you.
>>>>
>>>> if (ret)
>>>>
>>>>    return -EINVAL;
>>>>
>>>> This stuff above will always be if (1) so will always return -EINVAL.
>>>> Dang!
>>>
>>> Yes, this was exactly what was happening on my MX28 when trying to read one
>>> channel. Now, after the different comments I'm confused, was this a bug
>>> that your patch solved or was I doing something wrong?
>>
>> This patch accidentally (in completely unintended way) solved a bug, yes. But
>> the main idea was to just remove redundant code.
> 
> Maybe you should then amend the commit message to make clear that it solves a bug.
Definitely.

I'll apply a version that mentions the bug in the commit comment to a branch that
will hopefully be applied just after rc1 then can be picked up by stable as appropriate.

Jonathan
> 
> Best regards,
> -- 
> Hector Palacios
> -- 
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

end of thread, other threads:[~2013-07-03 19:26 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-02  0:08 [PATCH] iio: mxs-lradc: Remove useless check in read_raw Marek Vasut
2013-07-02  3:38 ` Otavio Salvador
2013-07-02 17:58   ` Marek Vasut
2013-07-02  9:19 ` Hector Palacios
2013-07-02 11:43 ` Alexandre Belloni
2013-07-02 11:53   ` Otavio Salvador
2013-07-02 12:03   ` Marek Vasut
2013-07-02 12:49     ` Alexandre Belloni
2013-07-02 16:13       ` Marek Vasut
2013-07-02 16:37         ` Otavio Salvador
2013-07-02 17:36           ` Marek Vasut
2013-07-02 17:42             ` Otavio Salvador
2013-07-02 17:55               ` Marek Vasut
2013-07-03  9:25                 ` Hector Palacios
2013-07-03 11:38                   ` Marek Vasut
2013-07-03 13:58                     ` Hector Palacios
2013-07-03 19:26                       ` Jonathan Cameron
2013-07-02 17:19         ` Alexandre Belloni

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.