]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
KVM: x86: Avoid gratuitous global clock reload in kvm_arch_vcpu_load()
authorDavid Woodhouse <dwmw@amazon.co.uk>
Sun, 28 Apr 2024 12:59:49 +0000 (13:59 +0100)
committerDavid Woodhouse <dwmw@amazon.co.uk>
Wed, 22 May 2024 00:05:41 +0000 (17:05 -0700)
Commit d98d07ca7e034 ("KVM: x86: update pvclock area conditionally, on
cpu migration") turned an unconditional KVM_REQ_CLOCK_UPDATE into a
conditional one, if either the master clock isn't enabled *or* the vCPU
was not previously scheduled (vcpu->cpu == -1). The commit message doesn't
explain the latter condition, which is specifically for the master clock
case.

Commit 0061d53daf26f ("KVM: x86: limit difference between kvmclock
updates") later turned that into a KVM_REQ_GLOBAL_CLOCK_UPDATE to avoid
skew between vCPUs.

In master clock mode there is no need for any of that, regardless of
whether/where this vCPU was previously scheduled.

Do it only if (!kvm->arch.use_master_clock).

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
arch/x86/kvm/x86.c

index 32a873d5ed00686128c3ffbe84a949edc03ffb0a..dd53860ca28457081bb1c1a23f32fa12088bbc84 100644 (file)
@@ -5161,7 +5161,7 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu)
                 * On a host with synchronized TSC, there is no need to update
                 * kvmclock on vcpu->cpu migration
                 */
-               if (!vcpu->kvm->arch.use_master_clock || vcpu->cpu == -1)
+               if (!vcpu->kvm->arch.use_master_clock)
                        kvm_make_request(KVM_REQ_GLOBAL_CLOCK_UPDATE, vcpu);
                if (vcpu->cpu != cpu)
                        kvm_make_request(KVM_REQ_MIGRATE_TIMER, vcpu);