[PATCH v7 clocksource] Do not mark clocks unstable due to delays for v5.13

From: Paul E. McKenney
Date: Fri Apr 02 2021 - 18:48:31 EST


Hello!

If there is a sufficient delay between reading the watchdog clock and the
clock under test, the clock under test will be marked unstable through no
fault of its own. This series checks for this, doing limited retries
to get a good set of clock reads. If the clock is marked unstable
and is marked as being per-CPU, cross-CPU synchronization is checked.
This series also provides delay injection, which may be enabled via
kernel boot parameters to test the checking for delays.

Note that "sufficient delay" can be provided by SMIs, NMIs, and of course
vCPU preemption.

1. Provide module parameters to inject delays in watchdog.

2. Retry clock read if long delays detected.

3. Check per-CPU clock synchronization when marked unstable.

4. Provide a module parameter to fuzz per-CPU clock checking.

5. Do pairwise clock-desynchronization checking.

Changes since v7:

o Fix embarrassing git-format-patch operator error.

Changes since v5:

o Rebased to v5.12-rc5.

Changes since v4:

o Rebased to v5.12-rc1.

Changes since v3:

o Rebased to v5.11.

o Apply Randy Dunlap feedback.

Changes since v2:

o Rebased to v5.11-rc6.

o Updated Cc: list.

Changes since v1:

o Applied feedback from Rik van Riel.

o Rebased to v5.11-rc3.

o Stripped "RFC" from the subject lines.

Thanx, Paul

------------------------------------------------------------------------

Documentation/admin-guide/kernel-parameters.txt | 38 +++++
arch/x86/kernel/kvmclock.c | 2
arch/x86/kernel/tsc.c | 3
include/linux/clocksource.h | 2
kernel/time/clocksource.c | 174 +++++++++++++++++++++---
5 files changed, 195 insertions(+), 24 deletions(-)