KVM: x86: Add RIP to the kvm_entry, i.e. VM-Enter, tracepoint
authorSean Christopherson <sean.j.christopherson@intel.com>
Wed, 23 Sep 2020 20:13:43 +0000 (13:13 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 28 Sep 2020 11:57:49 +0000 (07:57 -0400)
Add RIP to the kvm_entry tracepoint to help debug if the kvm_exit
tracepoint is disabled or if VM-Enter fails, in which case the kvm_exit
tracepoint won't be hit.

Read RIP from within the tracepoint itself to avoid a potential VMREAD
and retpoline if the guest's RIP isn't available.

Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Message-Id: <20200923201349.16097-2-sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/kvm/trace.h
arch/x86/kvm/x86.c

index 11cb4c0..7e8edc7 100644 (file)
  * Tracepoint for guest mode entry.
  */
 TRACE_EVENT(kvm_entry,
-       TP_PROTO(unsigned int vcpu_id),
-       TP_ARGS(vcpu_id),
+       TP_PROTO(struct kvm_vcpu *vcpu),
+       TP_ARGS(vcpu),
 
        TP_STRUCT__entry(
                __field(        unsigned int,   vcpu_id         )
+               __field(        unsigned long,  rip             )
        ),
 
        TP_fast_assign(
-               __entry->vcpu_id        = vcpu_id;
+               __entry->vcpu_id        = vcpu->vcpu_id;
+               __entry->rip            = kvm_rip_read(vcpu);
        ),
 
-       TP_printk("vcpu %u", __entry->vcpu_id)
+       TP_printk("vcpu %u, rip 0x%lx", __entry->vcpu_id, __entry->rip)
 );
 
 /*
index 5f3e9ab..b4c581c 100644 (file)
@@ -8563,7 +8563,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
                kvm_x86_ops.request_immediate_exit(vcpu);
        }
 
-       trace_kvm_entry(vcpu->vcpu_id);
+       trace_kvm_entry(vcpu);
 
        fpregs_assert_state_consistent();
        if (test_thread_flag(TIF_NEED_FPU_LOAD))