mirror of https://gitee.com/openkylin/linux.git
KVM: Move kvm_exit tracepoint rip reading inside tracepoint
Reading rip is expensive on vmx, so move it inside the tracepoint so we only incur the cost if tracing is enabled. Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
d4f64b6cad
commit
5bfd8b5455
|
@ -2686,7 +2686,7 @@ static int handle_exit(struct kvm_vcpu *vcpu)
|
|||
struct kvm_run *kvm_run = vcpu->run;
|
||||
u32 exit_code = svm->vmcb->control.exit_code;
|
||||
|
||||
trace_kvm_exit(exit_code, svm->vmcb->save.rip);
|
||||
trace_kvm_exit(exit_code, vcpu);
|
||||
|
||||
if (unlikely(svm->nested.exit_required)) {
|
||||
nested_svm_vmexit(svm);
|
||||
|
|
|
@ -182,8 +182,8 @@ TRACE_EVENT(kvm_apic,
|
|||
* Tracepoint for kvm guest exit:
|
||||
*/
|
||||
TRACE_EVENT(kvm_exit,
|
||||
TP_PROTO(unsigned int exit_reason, unsigned long guest_rip),
|
||||
TP_ARGS(exit_reason, guest_rip),
|
||||
TP_PROTO(unsigned int exit_reason, struct kvm_vcpu *vcpu),
|
||||
TP_ARGS(exit_reason, vcpu),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field( unsigned int, exit_reason )
|
||||
|
@ -192,7 +192,7 @@ TRACE_EVENT(kvm_exit,
|
|||
|
||||
TP_fast_assign(
|
||||
__entry->exit_reason = exit_reason;
|
||||
__entry->guest_rip = guest_rip;
|
||||
__entry->guest_rip = kvm_rip_read(vcpu);
|
||||
),
|
||||
|
||||
TP_printk("reason %s rip 0x%lx",
|
||||
|
|
|
@ -3612,7 +3612,7 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
|
|||
u32 exit_reason = vmx->exit_reason;
|
||||
u32 vectoring_info = vmx->idt_vectoring_info;
|
||||
|
||||
trace_kvm_exit(exit_reason, kvm_rip_read(vcpu));
|
||||
trace_kvm_exit(exit_reason, vcpu);
|
||||
|
||||
/* If guest state is invalid, start emulating */
|
||||
if (vmx->emulation_required && emulate_invalid_guest_state)
|
||||
|
|
Loading…
Reference in New Issue