lkml.org 
[lkml]   [2013]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 27/28] tools lib traceevent: Update kvm plugin with is_writable_pte helper
    Date
    Adding is_writable_pte print helper function, so the
    kvmmmu:fast_page_fault print format gets resolved properly.

    The diff of 'perf script' output generated by old and new code:
    (data was generated by 'perf record -e 'kvm:*,kvmmmu:*' -a')

    --- script.kvm.old
    +++ script.kvm.new
    - qemu-system-x86 3290 [002] 10708.755312: kvmmmu:fast_page_fault: [FAILED TO PARSE] vcpu_id=0 gva=4094486080 error_code=3 sptep=0xffff88019f1e3670 old_spte=336391285 new_spte=336391287 retry=1
    + qemu-system-x86 3290 [002] 10708.755312: kvmmmu:fast_page_fault: vcpu 0 gva f40ce640 error_code P|W sptep 0xffff88019f1e3670 old 0x140cec75 new 140cec77 spurious 0 fixed 1

    Signed-off-by: Jiri Olsa <jolsa@redhat.com>
    Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: David Ahern <dsahern@gmail.com>
    ---
    tools/lib/traceevent/plugin_kvm.c | 17 +++++++++++++++++
    1 file changed, 17 insertions(+)

    diff --git a/tools/lib/traceevent/plugin_kvm.c b/tools/lib/traceevent/plugin_kvm.c
    index be9d9c6..a0e282c 100644
    --- a/tools/lib/traceevent/plugin_kvm.c
    +++ b/tools/lib/traceevent/plugin_kvm.c
    @@ -389,6 +389,16 @@ static int kvm_mmu_get_page_handler(struct trace_seq *s,
    return kvm_mmu_print_role(s, record, event, context);
    }

    +#define PT_WRITABLE_SHIFT 1
    +#define PT_WRITABLE_MASK (1ULL << PT_WRITABLE_SHIFT)
    +
    +static unsigned long long
    +process_is_writable_pte(struct trace_seq *s, unsigned long long *args)
    +{
    + unsigned long pte = args[0];
    + return pte & PT_WRITABLE_MASK;
    +}
    +
    int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
    {
    init_disassembler();
    @@ -415,5 +425,12 @@ int PEVENT_PLUGIN_LOADER(struct pevent *pevent)
    pevent_register_event_handler(pevent, -1, "kvmmmu",
    "kvm_mmu_prepare_zap_page", kvm_mmu_print_role,
    NULL);
    +
    + pevent_register_print_function(pevent,
    + process_is_writable_pte,
    + PEVENT_FUNC_ARG_INT,
    + "is_writable_pte",
    + PEVENT_FUNC_ARG_LONG,
    + PEVENT_FUNC_ARG_VOID);
    return 0;
    }
    --
    1.8.3.1


    \
     
     \ /
      Last update: 2013-12-03 19:21    [W:5.170 / U:0.312 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site