Re: [PATCH v8 clocksource 3/5] clocksource: Check per-CPU clock synchronization when marked unstable

From: Paul E. McKenney
Date: Sun Apr 18 2021 - 12:20:55 EST


On Sat, Apr 17, 2021 at 04:51:36PM -0700, Paul E. McKenney wrote:
> On Sat, Apr 17, 2021 at 02:47:18PM +0200, Thomas Gleixner wrote:

[ . . . ]

> > > + delta = (s64)((csnow_mid - csnow_begin) & cs->mask);
> > > + if (delta < 0)
> > > + cpumask_set_cpu(cpu, &cpus_behind);
> > > + delta = (csnow_end - csnow_mid) & cs->mask;
> > > + if (delta < 0)
> > > + cpumask_set_cpu(cpu, &cpus_ahead);
> > > + delta = clocksource_delta(csnow_end, csnow_begin, cs->mask);
> > > + cs_nsec = clocksource_cyc2ns(delta, cs->mult, cs->shift);
> >
> > > + if (firsttime || cs_nsec > cs_nsec_max)
> > > + cs_nsec_max = cs_nsec;
> > > + if (firsttime || cs_nsec < cs_nsec_min)
> > > + cs_nsec_min = cs_nsec;
> > > + firsttime = 0;
> >
> > int64_t cs_nsec_max = 0, cs_nsec_min = LLONG_MAX;
> >
> > and then the firsttime muck is not needed at all.
>
> Good point, will fix!
>
> And again, thank you for looking all of this over.

And overnight testing with a 50-microsecond WATCHDOG_MAX_SKEW was
uneventful. However, I managed to miss printing when a retry was
necessary, so all that says is that no more than three retries were
ever required. So I added test code to print a message whenever two
or more retries are required and restarted the tests. Shorter run,
but more systems, so hopefully similar coverage.

If that works OK, I will resend the series this evening, Pacific Time.

Thanx, Paul