• Stefan Hajnoczi's avatar
    KVM: Use __print_symbolic() for vmexit tracepoints · 0d460ffc
    Stefan Hajnoczi authored
    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: default avatarStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
    Signed-off-by: default avatarAvi Kivity <avi@redhat.com>
    0d460ffc
vmx.c 202 KB