KVM: SVM: Invoke trace_kvm_exit() for fastpath VM-Exits
authorSean Christopherson <seanjc@google.com>
Fri, 2 Jun 2023 01:19:20 +0000 (18:19 -0700)
committerSean Christopherson <seanjc@google.com>
Fri, 2 Jun 2023 23:40:27 +0000 (16:40 -0700)
Move SVM's call to trace_kvm_exit() from the "slow" VM-Exit handler to
svm_vcpu_run() so that KVM traces fastpath VM-Exits that re-enter the
guest without bouncing through the slow path.  This bug is benign in the
current code base as KVM doesn't currently support any such exits on SVM.

Fixes: a9ab13ff6e84 ("KVM: X86: Improve latency for single target IPI fastpath")
Link: https://lore.kernel.org/r/20230602011920.787844-3-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/svm/svm.c

index 616ea6f..3a29273 100644 (file)
@@ -3405,8 +3405,6 @@ static int svm_handle_exit(struct kvm_vcpu *vcpu, fastpath_t exit_fastpath)
        struct kvm_run *kvm_run = vcpu->run;
        u32 exit_code = svm->vmcb->control.exit_code;
 
-       trace_kvm_exit(vcpu, KVM_ISA_SVM);
-
        /* SEV-ES guests must use the CR write traps to track CR registers. */
        if (!sev_es_guest(vcpu->kvm)) {
                if (!svm_is_intercept(svm, INTERCEPT_CR0_WRITE))
@@ -4132,6 +4130,8 @@ static __no_kcsan fastpath_t svm_vcpu_run(struct kvm_vcpu *vcpu)
                     SVM_EXIT_EXCP_BASE + MC_VECTOR))
                svm_handle_mce(vcpu);
 
+       trace_kvm_exit(vcpu, KVM_ISA_SVM);
+
        svm_complete_interrupts(vcpu);
 
        if (is_guest_mode(vcpu))