KVM: Use __print_symbolic() for vmexit tracepoints
authorStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Fri, 22 Jul 2011 11:46:53 +0000 (12:46 +0100)
committerAvi Kivity <avi@redhat.com>
Sun, 25 Sep 2011 16:17:59 +0000 (19:17 +0300)
commit0d460ffc0956d2dbe12ca9f5f6aa0f8701ea9d73
tree043ba67b92ac023b36bde109f15f5cff9d1c0091
parente097e5ffd69cbd7be61466e2d54c145468d48073
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>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/svm.c
arch/x86/kvm/trace.h
arch/x86/kvm/vmx.c