On Wed, 27 Feb 2019, Ricardo Neri wrote: > int hpet_alloc(struct hpet_data *hdp) > { > u64 cap, mcfg; > @@ -845,7 +868,6 @@ int hpet_alloc(struct hpet_data *hdp) > size_t siz; > struct hpet __iomem *hpet; > static struct hpets *last; > - unsigned long period; > unsigned long long temp; > u32 remainder; > > @@ -881,6 +903,8 @@ int hpet_alloc(struct hpet_data *hdp) > > cap = readq(&hpet->hpet_cap); > > + temp = hpet_get_ticks_per_sec(cap);
Just putting stuff to random places does not make the code any better. > ntimer = ((cap & HPET_NUM_TIM_CAP_MASK) >> HPET_NUM_TIM_CAP_SHIFT) + 1; > > if (hpetp->hp_ntimer != ntimer) { > @@ -897,11 +921,6 @@ int hpet_alloc(struct hpet_data *hdp) > > last = hpetp; > > - period = (cap & HPET_COUNTER_CLK_PERIOD_MASK) >> > - HPET_COUNTER_CLK_PERIOD_SHIFT; /* fs, 10^-15 */ > - temp = 1000000000000000uLL; /* 10^15 femtoseconds per second */ > - temp += period >> 1; /* round */ > - do_div(temp, period); > hpetp->hp_tick_freq = temp; /* ticks per second */ What's wrong with the obvious: hpetp->hp_tick_freq = hpet_get_ticks_per_sec(cap); Hmm? Thanks, tglx