提交 e097e5ff 编写于 作者: S Stefan Hajnoczi 提交者: Avi Kivity

KVM: Record instruction set in all vmexit tracepoints

The kvm_exit tracepoint recently added the isa argument to aid decoding
exit_reason.  The semantics of exit_reason depend on the instruction set
(vmx or svm) and the isa argument allows traces to be analyzed on other
machines.

Add the isa argument to kvm_nested_vmexit and kvm_nested_vmexit_inject
so these tracepoints can also be self-describing.
Signed-off-by: NStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: NAvi Kivity <avi@redhat.com>
上级 d1613ad5
...@@ -2182,7 +2182,8 @@ static int nested_svm_vmexit(struct vcpu_svm *svm) ...@@ -2182,7 +2182,8 @@ static int nested_svm_vmexit(struct vcpu_svm *svm)
vmcb->control.exit_info_1, vmcb->control.exit_info_1,
vmcb->control.exit_info_2, vmcb->control.exit_info_2,
vmcb->control.exit_int_info, vmcb->control.exit_int_info,
vmcb->control.exit_int_info_err); vmcb->control.exit_int_info_err,
KVM_ISA_SVM);
nested_vmcb = nested_svm_map(svm, svm->nested.vmcb, &page); nested_vmcb = nested_svm_map(svm, svm->nested.vmcb, &page);
if (!nested_vmcb) if (!nested_vmcb)
...@@ -3335,7 +3336,8 @@ static int handle_exit(struct kvm_vcpu *vcpu) ...@@ -3335,7 +3336,8 @@ static int handle_exit(struct kvm_vcpu *vcpu)
svm->vmcb->control.exit_info_1, svm->vmcb->control.exit_info_1,
svm->vmcb->control.exit_info_2, svm->vmcb->control.exit_info_2,
svm->vmcb->control.exit_int_info, svm->vmcb->control.exit_int_info,
svm->vmcb->control.exit_int_info_err); svm->vmcb->control.exit_int_info_err,
KVM_ISA_SVM);
vmexit = nested_svm_exit_special(svm); vmexit = nested_svm_exit_special(svm);
......
...@@ -486,9 +486,9 @@ TRACE_EVENT(kvm_nested_intercepts, ...@@ -486,9 +486,9 @@ TRACE_EVENT(kvm_nested_intercepts,
TRACE_EVENT(kvm_nested_vmexit, TRACE_EVENT(kvm_nested_vmexit,
TP_PROTO(__u64 rip, __u32 exit_code, TP_PROTO(__u64 rip, __u32 exit_code,
__u64 exit_info1, __u64 exit_info2, __u64 exit_info1, __u64 exit_info2,
__u32 exit_int_info, __u32 exit_int_info_err), __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
TP_ARGS(rip, exit_code, exit_info1, exit_info2, TP_ARGS(rip, exit_code, exit_info1, exit_info2,
exit_int_info, exit_int_info_err), exit_int_info, exit_int_info_err, isa),
TP_STRUCT__entry( TP_STRUCT__entry(
__field( __u64, rip ) __field( __u64, rip )
...@@ -497,6 +497,7 @@ TRACE_EVENT(kvm_nested_vmexit, ...@@ -497,6 +497,7 @@ TRACE_EVENT(kvm_nested_vmexit,
__field( __u64, exit_info2 ) __field( __u64, exit_info2 )
__field( __u32, exit_int_info ) __field( __u32, exit_int_info )
__field( __u32, exit_int_info_err ) __field( __u32, exit_int_info_err )
__field( __u32, isa )
), ),
TP_fast_assign( TP_fast_assign(
...@@ -506,6 +507,7 @@ TRACE_EVENT(kvm_nested_vmexit, ...@@ -506,6 +507,7 @@ TRACE_EVENT(kvm_nested_vmexit,
__entry->exit_info2 = exit_info2; __entry->exit_info2 = exit_info2;
__entry->exit_int_info = exit_int_info; __entry->exit_int_info = exit_int_info;
__entry->exit_int_info_err = exit_int_info_err; __entry->exit_int_info_err = exit_int_info_err;
__entry->isa = isa;
), ),
TP_printk("rip: 0x%016llx reason: %s ext_inf1: 0x%016llx " TP_printk("rip: 0x%016llx reason: %s ext_inf1: 0x%016llx "
"ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x", "ext_inf2: 0x%016llx ext_int: 0x%08x ext_int_err: 0x%08x",
...@@ -522,9 +524,9 @@ TRACE_EVENT(kvm_nested_vmexit, ...@@ -522,9 +524,9 @@ TRACE_EVENT(kvm_nested_vmexit,
TRACE_EVENT(kvm_nested_vmexit_inject, TRACE_EVENT(kvm_nested_vmexit_inject,
TP_PROTO(__u32 exit_code, TP_PROTO(__u32 exit_code,
__u64 exit_info1, __u64 exit_info2, __u64 exit_info1, __u64 exit_info2,
__u32 exit_int_info, __u32 exit_int_info_err), __u32 exit_int_info, __u32 exit_int_info_err, __u32 isa),
TP_ARGS(exit_code, exit_info1, exit_info2, TP_ARGS(exit_code, exit_info1, exit_info2,
exit_int_info, exit_int_info_err), exit_int_info, exit_int_info_err, isa),
TP_STRUCT__entry( TP_STRUCT__entry(
__field( __u32, exit_code ) __field( __u32, exit_code )
...@@ -532,6 +534,7 @@ TRACE_EVENT(kvm_nested_vmexit_inject, ...@@ -532,6 +534,7 @@ TRACE_EVENT(kvm_nested_vmexit_inject,
__field( __u64, exit_info2 ) __field( __u64, exit_info2 )
__field( __u32, exit_int_info ) __field( __u32, exit_int_info )
__field( __u32, exit_int_info_err ) __field( __u32, exit_int_info_err )
__field( __u32, isa )
), ),
TP_fast_assign( TP_fast_assign(
...@@ -540,6 +543,7 @@ TRACE_EVENT(kvm_nested_vmexit_inject, ...@@ -540,6 +543,7 @@ TRACE_EVENT(kvm_nested_vmexit_inject,
__entry->exit_info2 = exit_info2; __entry->exit_info2 = exit_info2;
__entry->exit_int_info = exit_int_info; __entry->exit_int_info = exit_int_info;
__entry->exit_int_info_err = exit_int_info_err; __entry->exit_int_info_err = exit_int_info_err;
__entry->isa = isa;
), ),
TP_printk("reason: %s ext_inf1: 0x%016llx " TP_printk("reason: %s ext_inf1: 0x%016llx "
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册