On Wed, 29 Jul 2015, Adrian Hunter wrote:
> @@ -239,6 +239,8 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int 
> cpu)
>       unsigned long long tsc_now, ns_now;
>       struct cyc2ns_data *data;
>       unsigned long flags;
> +     u64 mult;
> +     u32 shft = 32;
>  
>       local_irq_save(flags);
>       sched_clock_idle_sleep_event();
> @@ -256,12 +258,17 @@ static void set_cyc2ns_scale(unsigned long cpu_khz, int 
> cpu)
>        * time function is continuous; see the comment near struct
>        * cyc2ns_data.
>        */
> -     data->cyc2ns_mul =
> -             DIV_ROUND_CLOSEST(NSEC_PER_MSEC << CYC2NS_SCALE_FACTOR,
> -                               cpu_khz);
> -     data->cyc2ns_shift = CYC2NS_SCALE_FACTOR;
> +     mult = (u64)NSEC_PER_MSEC << 32;
> +     mult += cpu_khz / 2;
> +     do_div(mult, cpu_khz);
> +     while (mult > U32_MAX) {
> +             mult >>= 1;
> +             shft -= 1;
> +     }

This is an open coded variant of clocks_calc_mult_shift(). Can we
please use that one?

Thanks,

        tglx
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to