2019-05-07 14:37:45

by Philippe Schenker

[permalink] [raw]
Subject: [PATCH 4/5] iio: stmpe-adc: Use wait_for_completion_timeout

From: Philippe Schenker <[email protected]>

Use wait_for_completion_timeout instead of
wait_for_completion_interuptible_timeout.

The interruptible variant gets constantly interrupted if a user
program is compiled with the -pg option.
The killable variant was not used due to the fact that a second
program, reading on this device, that gets killed is then also killing
that wait.

Signed-off-by: Philippe Schenker <[email protected]>
---

drivers/iio/adc/stmpe-adc.c | 18 ++++--------------
1 file changed, 4 insertions(+), 14 deletions(-)

diff --git a/drivers/iio/adc/stmpe-adc.c b/drivers/iio/adc/stmpe-adc.c
index 82b43e4522b6..cc752a47444c 100644
--- a/drivers/iio/adc/stmpe-adc.c
+++ b/drivers/iio/adc/stmpe-adc.c
@@ -77,17 +77,11 @@ static int stmpe_read_voltage(struct stmpe_adc *info,
stmpe_reg_write(info->stmpe, STMPE_REG_ADC_CAPT,
STMPE_ADC_CH(info->channel));

- *val = info->value;
-
- ret = wait_for_completion_interruptible_timeout
- (&info->completion, STMPE_ADC_TIMEOUT);
+ ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);

if (ret <= 0) {
mutex_unlock(&info->lock);
- if (ret == 0)
- return -ETIMEDOUT;
- else
- return ret;
+ return -ETIMEDOUT;
}

*val = info->value;
@@ -116,15 +110,11 @@ static int stmpe_read_temp(struct stmpe_adc *info,
stmpe_reg_write(info->stmpe, STMPE_REG_TEMP_CTRL,
STMPE_START_ONE_TEMP_CONV);

- ret = wait_for_completion_interruptible_timeout
- (&info->completion, STMPE_ADC_TIMEOUT);
+ ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);

if (ret <= 0) {
mutex_unlock(&info->lock);
- if (ret == 0)
- return -ETIMEDOUT;
- else
- return ret;
+ return -ETIMEDOUT;
}

/*
--
2.21.0


2019-05-11 10:26:54

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH 4/5] iio: stmpe-adc: Use wait_for_completion_timeout

On Tue, 7 May 2019 16:36:14 +0200
Philippe Schenker <[email protected]> wrote:

> From: Philippe Schenker <[email protected]>
>
> Use wait_for_completion_timeout instead of
> wait_for_completion_interuptible_timeout.
>
> The interruptible variant gets constantly interrupted if a user
> program is compiled with the -pg option.
> The killable variant was not used due to the fact that a second
> program, reading on this device, that gets killed is then also killing
> that wait.
>
> Signed-off-by: Philippe Schenker <[email protected]>
Hi Phillippe

This one clashed a little bit with our earlier patch to remove the
unnecessary assignment. I've applied it by hand but please check it.

Applied to the togreg branch of iio.git and pushed out as testing
for the autobuilders to play with it.

Thanks,

Jonathan
> ---
>
> drivers/iio/adc/stmpe-adc.c | 18 ++++--------------
> 1 file changed, 4 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/iio/adc/stmpe-adc.c b/drivers/iio/adc/stmpe-adc.c
> index 82b43e4522b6..cc752a47444c 100644
> --- a/drivers/iio/adc/stmpe-adc.c
> +++ b/drivers/iio/adc/stmpe-adc.c
> @@ -77,17 +77,11 @@ static int stmpe_read_voltage(struct stmpe_adc *info,
> stmpe_reg_write(info->stmpe, STMPE_REG_ADC_CAPT,
> STMPE_ADC_CH(info->channel));
>
> - *val = info->value;
> -
> - ret = wait_for_completion_interruptible_timeout
> - (&info->completion, STMPE_ADC_TIMEOUT);
> + ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);
>
> if (ret <= 0) {
> mutex_unlock(&info->lock);
> - if (ret == 0)
> - return -ETIMEDOUT;
> - else
> - return ret;
> + return -ETIMEDOUT;
> }
>
> *val = info->value;
> @@ -116,15 +110,11 @@ static int stmpe_read_temp(struct stmpe_adc *info,
> stmpe_reg_write(info->stmpe, STMPE_REG_TEMP_CTRL,
> STMPE_START_ONE_TEMP_CONV);
>
> - ret = wait_for_completion_interruptible_timeout
> - (&info->completion, STMPE_ADC_TIMEOUT);
> + ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);
>
> if (ret <= 0) {
> mutex_unlock(&info->lock);
> - if (ret == 0)
> - return -ETIMEDOUT;
> - else
> - return ret;
> + return -ETIMEDOUT;
> }
>
> /*

2019-05-13 08:51:38

by Philippe Schenker

[permalink] [raw]
Subject: Re: [PATCH 4/5] iio: stmpe-adc: Use wait_for_completion_timeout

On Sat, 2019-05-11 at 11:15 +0100, Jonathan Cameron wrote:
> On Tue, 7 May 2019 16:36:14 +0200
> Philippe Schenker <[email protected]> wrote:
>
> > From: Philippe Schenker <[email protected]>
> >
> > Use wait_for_completion_timeout instead of
> > wait_for_completion_interuptible_timeout.
> >
> > The interruptible variant gets constantly interrupted if a user
> > program is compiled with the -pg option.
> > The killable variant was not used due to the fact that a second
> > program, reading on this device, that gets killed is then also killing
> > that wait.
> >
> > Signed-off-by: Philippe Schenker <[email protected]>
> Hi Phillippe
>
> This one clashed a little bit with our earlier patch to remove the
> unnecessary assignment. I've applied it by hand but please check it.
>
> Applied to the togreg branch of iio.git and pushed out as testing
> for the autobuilders to play with it.
>
> Thanks,
>
> Jonathan

Hmm, yeah I see it sorry for that! Somehow that line went in again in this
patch. Don't know why... Anyway I checked it and it looks good. Thank you!

Philippe

> > ---
> >
> > drivers/iio/adc/stmpe-adc.c | 18 ++++--------------
> > 1 file changed, 4 insertions(+), 14 deletions(-)
> >
> > diff --git a/drivers/iio/adc/stmpe-adc.c b/drivers/iio/adc/stmpe-adc.c
> > index 82b43e4522b6..cc752a47444c 100644
> > --- a/drivers/iio/adc/stmpe-adc.c
> > +++ b/drivers/iio/adc/stmpe-adc.c
> > @@ -77,17 +77,11 @@ static int stmpe_read_voltage(struct stmpe_adc *info,
> > stmpe_reg_write(info->stmpe, STMPE_REG_ADC_CAPT,
> > STMPE_ADC_CH(info->channel));
> >
> > - *val = info->value;
> > -
> > - ret = wait_for_completion_interruptible_timeout
> > - (&info->completion, STMPE_ADC_TIMEOUT);
> > + ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);
> >
> > if (ret <= 0) {
> > mutex_unlock(&info->lock);
> > - if (ret == 0)
> > - return -ETIMEDOUT;
> > - else
> > - return ret;
> > + return -ETIMEDOUT;
> > }
> >
> > *val = info->value;
> > @@ -116,15 +110,11 @@ static int stmpe_read_temp(struct stmpe_adc *info,
> > stmpe_reg_write(info->stmpe, STMPE_REG_TEMP_CTRL,
> > STMPE_START_ONE_TEMP_CONV);
> >
> > - ret = wait_for_completion_interruptible_timeout
> > - (&info->completion, STMPE_ADC_TIMEOUT);
> > + ret = wait_for_completion_timeout(&info->completion, STMPE_ADC_TIMEOUT);
> >
> > if (ret <= 0) {
> > mutex_unlock(&info->lock);
> > - if (ret == 0)
> > - return -ETIMEDOUT;
> > - else
> > - return ret;
> > + return -ETIMEDOUT;
> > }
> >
> > /*