Subject: Re: rtl2830: __udivdi3 undefined

From: Antti Palosaari <[email-masked]>
Date: Mon, 12 Mar 2012 21:58:53 +0200

On 05.03.2012 00:19, Gianluca Gennari wrote:
> Il 29/02/2012 22:30, Geert Uytterhoeven ha scritto:
>> http://kisskb.ellerman.id.au/kisskb/buildresult/5759200/ ERROR:
>> "__udivdi3" [drivers/media/dvb/frontends/rtl2830.ko] undefined!
>>
>> I didn't look too deeply into it, but I think it's caused by the
>> "num /= priv->cfg.xtal" in rtl2830_init() (with num being u64).
>>
>> Can't it use do_div() instead?
>>
>> Gr{oetje,eeting}s,
>>
>> Geert
>>
>> -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 --
>> [email-masked]
>>
>> In personal conversations with technical people, I call myself a
>> hacker. But when I'm talking to journalists I just say "programmer"
>> or something like that. -- Linus Torvalds -- To unsubscribe from this
>> list: send the line "unsubscribe linux-media" in the body of a
>> message to [email-masked] More majordomo info at
>> http://vger.kernel.org/majordomo-info.html
>>
>
> Probably the best solution is to use div_u64.
> The following patch fixed the warning on my 32 bit system.
>
> Signed-off-by: Gianluca Gennari<[email-masked]>
> ---
>   drivers/media/dvb/frontends/rtl2830.c |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/media/dvb/frontends/rtl2830.c
> b/drivers/media/dvb/frontends/rtl2830.c
> index f971d94..45196c5 100644
> --- a/drivers/media/dvb/frontends/rtl2830.c
> +++ b/drivers/media/dvb/frontends/rtl2830.c
> @@ -244,7 +244,7 @@ static int rtl2830_init(struct dvb_frontend *fe)
>
>   	num = priv->cfg.if_dvbt % priv->cfg.xtal;
>   	num *= 0x400000;
> -	num /= priv->cfg.xtal;
> +	num = div_u64(num, priv->cfg.xtal);
>   	num = -num;
>   	if_ctl = num&  0x3fffff;
>   	dbg("%s: if_ctl=%08x", __func__, if_ctl);

Acked-by: Antti Palosaari <[email-masked]>

I have been two weeks on skiing trip and since didn't acked that earlier.

regards
Antti

-- 
http://palosaari.fi/