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/