lkml.org 
[lkml]   [2018]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 069/410] perf report: Fix -D output for user metadata events
    3.16.57-rc1 review patch.  If anyone has any objections, please let me know.

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

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

    commit f250b09c779550e4a7a412dae6d3ad34d5201019 upstream.

    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>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    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
    @@ -996,10 +996,11 @@ static int perf_session_deliver_event(st
    static int perf_session__process_user_event(struct perf_session *session, union perf_event *event,
    struct perf_tool *tool, u64 file_offset)
    {
    + struct perf_sample sample = { .time = 0, };
    int fd = perf_data_file__fd(session->file);
    int err;

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

    /* These events are processed right away */
    switch (event->header.type) {
    \
     
     \ /
      Last update: 2018-06-07 17:30    [W:4.085 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site