Re: [PATCH] staging: greybus: loopback: fix broken udelay

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 26/01/17 11:37, Johan Hovold wrote:
> The loopback driver allows the user to set a minimum delay of up to one
> second to be inserted between test iterations (i.e. request
> submissions). The delay is currently specified in microseconds and is
> implemented using udelay.
> 
> Busy looping for long periods is not just anti-social; udelay must not
> be used for delays longer than a few milliseconds due to the risk of
> integer overflow.
> 
> Replace the broken udelay with a usleep_range with a 100 us range for
> short delays (< 20 ms) and otherwise revert to using msleep.
> 
> Fixes: b36f04fa9417 ("greybus: loopback: Convert thread delay to
> microseconds")
> Signed-off-by: Johan Hovold <johan@xxxxxxxxxx>
> ---
>  drivers/staging/greybus/loopback.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/greybus/loopback.c b/drivers/staging/greybus/loopback.c
> index 6c2a41c638c3..a8329daf1e57 100644
> --- a/drivers/staging/greybus/loopback.c
> +++ b/drivers/staging/greybus/loopback.c
> @@ -1061,8 +1061,13 @@ static int gb_loopback_fn(void *data)
>  			gb_loopback_calculate_stats(gb, !!error);
>  		}
>  		gb->send_count++;
> -		if (us_wait)
> -			udelay(us_wait);
> +
> +		if (us_wait) {
> +			if (us_wait < 20000)
> +				usleep_range(us_wait, us_wait + 100);
> +			else
> +				msleep(us_wait / 1000);
> +		}
>  	}
>  
>  	gb_pm_runtime_put_autosuspend(bundle);
> 

Makes sense to me, thanks.

Acked-by: Bryan O'Donoghue <pure.logic@xxxxxxxxxxxxxxxxx>
_______________________________________________
greybus-dev mailing list
greybus-dev@xxxxxxxxxxxxxxxx
https://lists.linaro.org/mailman/listinfo/greybus-dev




[Index of Archives]     [Asterisk App Development]     [PJ SIP]     [Gnu Gatekeeper]     [IETF Sipping]     [Info Cyrus]     [ALSA User]     [Fedora Linux Users]     [Linux SCTP]     [DCCP]     [Gimp]     [Yosemite News]     [Deep Creek Hot Springs]     [Yosemite Campsites]     [ISDN Cause Codes]     [Asterisk Books]

  Powered by Linux