From: David Woodhouse <[email protected]> The master clock depends on the pvclock being based on TSC, so the only way kvm_get_walltime_and_clockread() can fail when use_master_clock is true is if the clocksource changed and use_master_clock is stale, in which case a seqcount retry should be pending.
Add a WARN_ON_ONCE if the seqcount has not been invalidated, to catch any case where the failure is genuinely unexpected. Signed-off-by: David Woodhouse <[email protected]> --- arch/x86/kvm/x86.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 1e1834533e98..ccdfd3fa3402 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3474,7 +3474,8 @@ uint64_t kvm_get_wall_clock_epoch(struct kvm *kvm) local_tsc_khz = get_cpu_tsc_khz(); if (local_tsc_khz && - !kvm_get_walltime_and_clockread(&ts, &host_tsc)) + !kvm_get_walltime_and_clockread(&ts, &host_tsc) && + WARN_ON_ONCE(!read_seqcount_retry(&ka->pvclock_sc, seq))) local_tsc_khz = 0; /* Fall back to old method */ put_cpu(); -- 2.51.0

