From: David Woodhouse Date: Sun, 28 Apr 2024 12:27:17 +0000 (+0100) Subject: KVM: x86: Avoid global clock update on setting KVM clock MSR X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=0e723f6ec64d6b389ae8e0196c0d39323ac41c74;p=users%2Fdwmw2%2Flinux.git KVM: x86: Avoid global clock update on setting KVM clock MSR Commit 0061d53daf26 ("KVM: x86: limit difference between kvmclock updates") introduced a KVM_REQ_GLOBAL_CLOCK_UPDATE when one vCPU set up its clock. This was a workaround for the ever-drifting clocks which were based on the host's CLOCK_MONOTONIC and thus subject to NTP skew. On booting or resuming a guest, it just leads to running kvm_guest_time_update() twice for each vCPU for now good reason. Just use KVM_REQ_CLOCK_UPDATE on the vCPU itself, and only in the case where the KVM clock is being set up, not turned off. Signed-off-by: David Woodhouse Reviewed-by: Paul Durrant --- diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 3fdd708e02b8f..5be9f7cddcac2 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2351,13 +2351,13 @@ static void kvm_write_system_time(struct kvm_vcpu *vcpu, gpa_t system_time, } vcpu->arch.time = system_time; - kvm_make_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu); /* we verify if the enable bit is set... */ - if (system_time & 1) + if (system_time & 1) { kvm_gpc_activate(&vcpu->arch.pv_time, system_time & ~1ULL, sizeof(struct pvclock_vcpu_time_info)); - else + kvm_make_request(KVM_REQ_CLOCK_UPDATE, vcpu); + } else kvm_gpc_deactivate(&vcpu->arch.pv_time); return;