Re: [RFC PATCH v2 03/14] x86/hpet: Calculate ticks-per-second in a separate function
From: Thomas Gleixner
Date: Tue Mar 26 2019 - 17:03:14 EST
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