Commit b2d52255 authored by Sean Christopherson's avatar Sean Christopherson Committed by Paolo Bonzini
Browse files

KVM: x86: Add RIP to the kvm_entry, i.e. VM-Enter, tracepoint



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: default avatarSean Christopherson <sean.j.christopherson@intel.com>
Message-Id: <20200923201349.16097-2-sean.j.christopherson@intel.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 138534a8
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -15,18 +15,20 @@
 * Tracepoint for guest mode entry.
 * Tracepoint for guest mode entry.
 */
 */
TRACE_EVENT(kvm_entry,
TRACE_EVENT(kvm_entry,
	TP_PROTO(unsigned int vcpu_id),
	TP_PROTO(struct kvm_vcpu *vcpu),
	TP_ARGS(vcpu_id),
	TP_ARGS(vcpu),


	TP_STRUCT__entry(
	TP_STRUCT__entry(
		__field(	unsigned int,	vcpu_id		)
		__field(	unsigned int,	vcpu_id		)
		__field(	unsigned long,	rip		)
	),
	),


	TP_fast_assign(
	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)
);
);


/*
/*
+1 −1
Original line number Original line Diff line number Diff line
@@ -8563,7 +8563,7 @@ static int vcpu_enter_guest(struct kvm_vcpu *vcpu)
		kvm_x86_ops.request_immediate_exit(vcpu);
		kvm_x86_ops.request_immediate_exit(vcpu);
	}
	}


	trace_kvm_entry(vcpu->vcpu_id);
	trace_kvm_entry(vcpu);


	fpregs_assert_state_consistent();
	fpregs_assert_state_consistent();
	if (test_thread_flag(TIF_NEED_FPU_LOAD))
	if (test_thread_flag(TIF_NEED_FPU_LOAD))