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=e97b5fc9834ecc8ede60b40c0cfd38d041332f91;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 f7d9f858dee26..614a57d6bedc3 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -2338,13 +2338,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;