Hi Mauro,

Thanks for the fix!

On 10/7/19 4:37 PM, Mauro Carvalho Chehab wrote:
> As reported by jenk...@linuxtv.org, the build with i386 fails
> with:
> 
>       ld: drivers/media/platform/qcom/venus/helpers.o: in function 
> `venus_helper_load_scale_clocks':
>       (.text+0x1d77): undefined reference to `__udivdi3'
>       ld: (.text+0x1dce): undefined reference to `__udivdi3'
>       make: *** [Makefile:1094: vmlinux] Error 1
> 
> That's because it divides an u32 bit integer by a u64 one.

General question, shouldn't such errors been catch from builder on the
pull request?

> 
> Fix it by explicitly callind do_div.
> 
> That's said, why fps is a 64 bits integer?

I don't have other explanation than - just to avoid casting after the
math in vdec/venc_s_parm() functions.

> 
> Signed-off-by: Mauro Carvalho Chehab <mchehab+sams...@kernel.org>
> ---
>  drivers/media/platform/qcom/venus/helpers.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/qcom/venus/helpers.c 
> b/drivers/media/platform/qcom/venus/helpers.c
> index 5ea5d90f8e5f..09fa87e3c0a0 100644
> --- a/drivers/media/platform/qcom/venus/helpers.c
> +++ b/drivers/media/platform/qcom/venus/helpers.c
> @@ -522,8 +522,14 @@ static unsigned long calculate_inst_freq(struct 
> venus_inst *inst,
>       unsigned long vpp_freq = 0, vsp_freq = 0;
>       u64 fps = inst->fps;
>       u32 mbs_per_sec;
> +     u64 tmp;
> +

you have extra blank line here.

> +
> +     tmp = load_per_instance(inst);
> +     do_div(tmp, inst->fps);
> +
> +     mbs_per_sec = (u32)tmp;
>  
> -     mbs_per_sec = load_per_instance(inst) / inst->fps;
>       vpp_freq = mbs_per_sec * inst->clk_data.codec_freq_data->vpp_freq;
>       /* 21 / 20 is overhead factor */
>       vpp_freq += vpp_freq / 20;
> 

I guess this fix should be squashed with the commit which introduce it :(

Note taken, always build patches on i386 :/

-- 
regards,
Stan

Reply via email to