On Tue, May 14, 2019 at 07:23:47AM -0700, Randy Dunlap wrote: > On 5/14/19 7:01 AM, Ricardo Neri wrote: > > It is easier to compute the expiration times of an HPET timer by using > > its frequency (i.e., the number of times it ticks in a second) than its > > period, as given in the capabilities register. > > > > In addition to the HPET char driver, the HPET-based hardlockup detector > > will also need to know the timer's frequency. Thus, create a common > > function that both can use. > > > > Cc: "H. Peter Anvin" <[email protected]> > > Cc: Ashok Raj <[email protected]> > > Cc: Andi Kleen <[email protected]> > > Cc: Tony Luck <[email protected]> > > Cc: Clemens Ladisch <[email protected]> > > Cc: Arnd Bergmann <[email protected]> > > Cc: Philippe Ombredanne <[email protected]> > > Cc: Kate Stewart <[email protected]> > > Cc: "Rafael J. Wysocki" <[email protected]> > > Cc: Stephane Eranian <[email protected]> > > Cc: Suravee Suthikulpanit <[email protected]> > > Cc: "Ravi V. Shankar" <[email protected]> > > Cc: [email protected] > > Signed-off-by: Ricardo Neri <[email protected]> > > --- > > drivers/char/hpet.c | 31 ++++++++++++++++++++++++------- > > include/linux/hpet.h | 1 + > > 2 files changed, 25 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c > > index d0ad85900b79..bdcbecfdb858 100644 > > --- a/drivers/char/hpet.c > > +++ b/drivers/char/hpet.c > > @@ -836,6 +836,29 @@ static unsigned long hpet_calibrate(struct hpets > > *hpetp) > > return ret; > > } > > > > +u64 hpet_get_ticks_per_sec(u64 hpet_caps) > > +{ > > + u64 ticks_per_sec, period; > > + > > + period = (hpet_caps & HPET_COUNTER_CLK_PERIOD_MASK) >> > > + HPET_COUNTER_CLK_PERIOD_SHIFT; /* fs, 10^-15 */ > > + > > + /* > > + * The frequency is the reciprocal of the period. The period is given > > + * femtoseconds per second. Thus, prepare a dividend to obtain the > > * in femtoseconds per second. >
Thanks for your review Randy! I'll fix this grammar issue. > > + * frequency in ticks per second. > > + */ > > + > > + /* 10^15 femtoseconds per second */ > > + ticks_per_sec = 1000000000000000uLL; > > ULL is overwhelmingly used in the kernel. > Sure, I'll update it. BR, Ricardo
