Re: [PATCH 2/3] genirq/timings: Add array suffix computation code

From: Daniel Lezcano
Date: Tue Mar 26 2019 - 11:23:05 EST



Hi Thomas,

thanks for reviewing this patch.

[ ... ]

>> +
>> +/*
>> + * Exponential moving average computation
>> + */
>> +static int irq_timings_ema_new(s64 value, s64 ema_old)
>
> There is a mixed bag of s64/u64 all over this code. Please stay
> consistent. We had enough sign confusion bugs in the past.

Right.

I have a question, ema_old and value will be always u64 type and the
function irq_timings_ema_new() will return an u64 ...

> value = (value - ema_old) * EMA_ALPHA_VAL;
> return ema_old + value >> EMA_ALPHA_SHIFT;

... how can I deal with the operations above when value < ema_old ?

Shall I use an intermediate s64 ?

eg:

s64 aux = (value - ema_old) * EMA_ALPHA_VAL;
return ema_old + aux >> EMA_ALPHA_SHIFT;
?

[ ... ]

> Other than that this looks good to me. Nice work!

Thanks, I appreciate.

--
<http://www.linaro.org/> Linaro.org â Open source software for ARM SoCs

Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog