diff options
author | Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> | 2011-07-22 07:46:53 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2011-09-25 12:17:59 -0400 |
commit | 0d460ffc0956d2dbe12ca9f5f6aa0f8701ea9d73 (patch) | |
tree | 043ba67b92ac023b36bde109f15f5cff9d1c0091 /arch/x86/include/asm | |
parent | e097e5ffd69cbd7be61466e2d54c145468d48073 (diff) |
KVM: Use __print_symbolic() for vmexit tracepoints
The vmexit tracepoints format the exit_reason to make it human-readable.
Since the exit_reason depends on the instruction set (vmx or svm),
formatting is handled with ftrace_print_symbols_seq() by referring to
the appropriate exit reason table.
However, the ftrace_print_symbols_seq() function is not meant to be used
directly in tracepoints since it does not export the formatting table
which userspace tools like trace-cmd and perf use to format traces.
In practice perf dies when formatting vmexit-related events and
trace-cmd falls back to printing the numeric value (with extra
formatting code in the kvm plugin to paper over this limitation). Other
userspace consumers of vmexit-related tracepoints would be in similar
trouble.
To avoid significant changes to the kvm_exit tracepoint, this patch
moves the vmx and svm exit reason tables into arch/x86/kvm/trace.h and
selects the right table with __print_symbolic() depending on the
instruction set. Note that __print_symbolic() is designed for exporting
the formatting table to userspace and allows trace-cmd and perf to work.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Diffstat (limited to 'arch/x86/include/asm')
-rw-r--r-- | arch/x86/include/asm/kvm_host.h | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h index c00ec28e7147..307e3cfa28ad 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h | |||
@@ -635,8 +635,6 @@ struct kvm_x86_ops { | |||
635 | int (*check_intercept)(struct kvm_vcpu *vcpu, | 635 | int (*check_intercept)(struct kvm_vcpu *vcpu, |
636 | struct x86_instruction_info *info, | 636 | struct x86_instruction_info *info, |
637 | enum x86_intercept_stage stage); | 637 | enum x86_intercept_stage stage); |
638 | |||
639 | const struct trace_print_flags *exit_reasons_str; | ||
640 | }; | 638 | }; |
641 | 639 | ||
642 | struct kvm_arch_async_pf { | 640 | struct kvm_arch_async_pf { |