lkml.org 
[lkml]   [2018]   [Mar]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.15 056/128] perf report: Fix -D output for user metadata events
    Date
    4.15-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Arnaldo Carvalho de Melo <acme@redhat.com>


    [ Upstream commit f250b09c779550e4a7a412dae6d3ad34d5201019 ]

    The PERF_RECORD_USER_ events are synthesized by the tool to assist in
    processing the PERF_RECORD_ ones generated by the kernel, the printing
    of that information doesn't come with a perf_sample structure, so, when
    dumping the event fields using 'perf report -D' there were columns that
    end up not being printed.

    To tidy up a bit this, fake a perf_sample structure with zeroes to have
    the missing columns printed and avoid the occasional surprise with that.

    Before:

    0 0x45b8 [0x68]: PERF_RECORD_MMAP -1/0: [0xffffffffc12ec000(0x4000) @ 0]: x /lib/modules/4.14.0+/kernel/fs/nls/nls_utf8.ko
    0x4620 [0x28]: PERF_RECORD_THREAD_MAP nr: 1 thread: 27820
    0x4648 [0x18]: PERF_RECORD_CPU_MAP: 0-3
    0 0x4660 [0x28]: PERF_RECORD_COMM: perf:27820/27820
    0x4a58 [0x8]: PERF_RECORD_FINISHED_ROUND
    447723433020976 0x4688 [0x28]: PERF_RECORD_SAMPLE(IP, 0x4001): 27820/27820: 0xffffffff8f1b6d7a period: 1 addr: 0

    After:

    $ perf report -D | grep PERF_RECORD_ | head
    0 0xe8 [0x20]: PERF_RECORD_TIME_CONV: unhandled!
    0 0x108 [0x28]: PERF_RECORD_THREAD_MAP nr: 1 thread: 32555
    0 0x130 [0x18]: PERF_RECORD_CPU_MAP: 0-3
    0 0x148 [0x28]: PERF_RECORD_COMM: perf:32555/32555
    0 0x4e8 [0x8]: PERF_RECORD_FINISHED_ROUND
    448743409421205 0x170 [0x28]: PERF_RECORD_COMM exec: sleep:32555/32555
    448743409431883 0x198 [0x68]: PERF_RECORD_MMAP2 32555/32555: [0x55e11d75a000(0x208000) @ 0 fd:00 3147174 2566255743]: r-xp /usr/bin/sleep
    448743409443873 0x200 [0x70]: PERF_RECORD_MMAP2 32555/32555: [0x7f0ced316000(0x229000) @ 0 fd:00 3151761 2566238119]: r-xp /usr/lib64/ld-2.25.so
    448743409454790 0x270 [0x60]: PERF_RECORD_MMAP2 32555/32555: [0x7ffe84f6d000(0x2000) @ 0 00:00 0 0]: r-xp [vdso]
    448743409479500 0x2d0 [0x28]: PERF_RECORD_SAMPLE(IP, 0x4002): 32555/32555: 0xffffffff8f84c7e7 period: 1 addr: 0
    $

    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Fixes: 9aefcab0de47 ("perf session: Consolidate the dump code")
    Link: https://lkml.kernel.org/n/tip-todcu15x0cwgppkh1gi6uhru@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/perf/util/session.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    --- a/tools/perf/util/session.c
    +++ b/tools/perf/util/session.c
    @@ -1350,10 +1350,11 @@ static s64 perf_session__process_user_ev
    {
    struct ordered_events *oe = &session->ordered_events;
    struct perf_tool *tool = session->tool;
    + struct perf_sample sample = { .time = 0, };
    int fd = perf_data__fd(session->data);
    int err;

    - dump_event(session->evlist, event, file_offset, NULL);
    + dump_event(session->evlist, event, file_offset, &sample);

    /* These events are processed right away */
    switch (event->header.type) {

    \
     
     \ /
      Last update: 2018-03-16 17:07    [W:3.121 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site