Re: [RFC PATCH v2 12/14] x86/watchdog/hardlockup/hpet: Determine if HPET timer caused NMI

From: Ricardo Neri
Date: Mon Apr 08 2019 - 22:04:01 EST


On Tue, Mar 26, 2019 at 09:55:35PM +0100, Thomas Gleixner wrote:
> On Wed, 27 Feb 2019, Ricardo Neri wrote:
> > @@ -62,7 +67,18 @@ static inline void set_comparator(struct hpet_hld_data *hdata,
> > static void kick_timer(struct hpet_hld_data *hdata, bool force)
> > {
> > bool kick_needed = force || !(hdata->flags & HPET_DEV_PERI_CAP);
> > - unsigned long new_compare, count;
> > + unsigned long tsc_curr, tsc_delta, new_compare, count;
> > +
> > + /* Start obtaining the current TSC and HPET counts. */
> > + tsc_curr = rdtsc();
> > +
> > + if (kick_needed)
> > + count = get_count();
>
> Can you please keep the TSC code in one block and the HPET block in the
> next one? Having this inbetween is really bad to follow.
>
> It really does not matter whether you read the HPET counter before or after
> the calculation. This is a crystal ball estimation anyway so a few cyles
> more or less are completely irrelevant.

Sure! I will implement this change.

Thanks and BR,
Ricardo

>
> > + tsc_delta = (unsigned long)watchdog_thresh * (unsigned long)tsc_khz
> > + * 1000L;
> > + hdata->tsc_next = tsc_curr + tsc_delta;
> > + hdata->tsc_next_error = tsc_delta >> 6;
>
> Thanks,
>
> tglx