KVM: x86/mmu: Stop kicking vCPUs to sync the dirty log when PML is disabled
authorDavid Matlack <dmatlack@google.com>
Mon, 16 Oct 2023 22:12:28 +0000 (15:12 -0700)
committerSean Christopherson <seanjc@google.com>
Tue, 17 Oct 2023 20:54:52 +0000 (13:54 -0700)
Stop kicking vCPUs in kvm_arch_sync_dirty_log() when PML is disabled.
Kicking vCPUs when PML is disabled serves no purpose and could
negatively impact guest performance.

This restores KVM's behavior to prior to 5.12 commit a018eba53870 ("KVM:
x86: Move MMU's PML logic to common code"), which replaced a
static_call_cond(kvm_x86_flush_log_dirty) with unconditional calls to
kvm_vcpu_kick().

Fixes: a018eba53870 ("KVM: x86: Move MMU's PML logic to common code")
Signed-off-by: David Matlack <dmatlack@google.com>
Link: https://lore.kernel.org/r/20231016221228.1348318-1-dmatlack@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/x86.c

index 94ccad95f7e074c04b31f8c5413b773dd1322e90..051ca1978442e91de5c87f1c82beb698464e0299 100644 (file)
@@ -6355,6 +6355,9 @@ void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot)
        struct kvm_vcpu *vcpu;
        unsigned long i;
 
+       if (!kvm_x86_ops.cpu_dirty_log_size)
+               return;
+
        kvm_for_each_vcpu(i, vcpu, kvm)
                kvm_vcpu_kick(vcpu);
 }