1. 30 Mar, 2017 9 commits
  2. 28 Mar, 2017 11 commits
  3. 27 Mar, 2017 20 commits
    • Tommi Rantala's avatar
      perf utils: Readlink /proc/self/exe to find the perf binary · 55f77128
      Tommi Rantala authored
      Simplification: it is easier to open /proc/self/exe than /proc/$pid/exe.
      Signed-off-by: default avatarTommi Rantala <tommi.t.rantala@nokia.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20170322130624.21881-7-tommi.t.rantala@nokia.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      55f77128
    • Tommi Rantala's avatar
      perf utils: Null terminate buf in read_ftrace_printk() · d4b364df
      Tommi Rantala authored
      Ensure that the string that we read from the data file is null terminated.
      
      Valgrind was complaining:
      
        ==31357== Invalid read of size 1
        ==31357==    at 0x4EC8C1: __strtok_r_1c (string2.h:200)
        ==31357==    by 0x4EC8C1: parse_ftrace_printk (trace-event-parse.c:161)
        ==31357==    by 0x4F82A8: read_ftrace_printk (trace-event-read.c:204)
        ==31357==    by 0x4F82A8: trace_report (trace-event-read.c:468)
        ==31357==    by 0x4CD552: process_tracing_data (header.c:1576)
        ==31357==    by 0x4D3397: perf_file_section__process (header.c:2705)
        ==31357==    by 0x4D3397: perf_header__process_sections (header.c:2488)
        ==31357==    by 0x4D3397: perf_session__read_header (header.c:2925)
        ==31357==    by 0x4E71E2: perf_session__open (session.c:32)
        ==31357==    by 0x4E71E2: perf_session__new (session.c:139)
        ==31357==    by 0x429F5D: cmd_annotate (builtin-annotate.c:472)
        ==31357==    by 0x497150: run_builtin (perf.c:359)
        ==31357==    by 0x428CE0: handle_internal_command (perf.c:421)
        ==31357==    by 0x428CE0: run_argv (perf.c:467)
        ==31357==    by 0x428CE0: main (perf.c:614)
        ==31357==  Address 0x8ac0efb is 0 bytes after a block of size 1,963 alloc'd
        ==31357==    at 0x4C2DB9D: malloc (vg_replace_malloc.c:299)
        ==31357==    by 0x4F827B: read_ftrace_printk (trace-event-read.c:195)
        ==31357==    by 0x4F827B: trace_report (trace-event-read.c:468)
        ==31357==    by 0x4CD552: process_tracing_data (header.c:1576)
        ==31357==    by 0x4D3397: perf_file_section__process (header.c:2705)
        ==31357==    by 0x4D3397: perf_header__process_sections (header.c:2488)
        ==31357==    by 0x4D3397: perf_session__read_header (header.c:2925)
        ==31357==    by 0x4E71E2: perf_session__open (session.c:32)
        ==31357==    by 0x4E71E2: perf_session__new (session.c:139)
        ==31357==    by 0x429F5D: cmd_annotate (builtin-annotate.c:472)
        ==31357==    by 0x497150: run_builtin (perf.c:359)
        ==31357==    by 0x428CE0: handle_internal_command (perf.c:421)
        ==31357==    by 0x428CE0: run_argv (perf.c:467)
        ==31357==    by 0x428CE0: main (perf.c:614)
      Signed-off-by: default avatarTommi Rantala <tommi.t.rantala@nokia.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20170322130624.21881-6-tommi.t.rantala@nokia.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d4b364df
    • Tommi Rantala's avatar
      perf utils: use sizeof(buf) - 1 in readlink() call · b7126ef7
      Tommi Rantala authored
      Ensure that we have space for the null byte in buf.
      Signed-off-by: default avatarTommi Rantala <tommi.t.rantala@nokia.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20170322130624.21881-5-tommi.t.rantala@nokia.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b7126ef7
    • Tommi Rantala's avatar
      perf tests: Do not assume that readlink() returns a null terminated string · 0e6ba115
      Tommi Rantala authored
      Ensure that the string in buf is null terminated.
      Signed-off-by: default avatarTommi Rantala <tommi.t.rantala@nokia.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20170322130624.21881-4-tommi.t.rantala@nokia.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0e6ba115
    • Tommi Rantala's avatar
      perf buildid: Do not assume that readlink() returns a null terminated string · 5a234211
      Tommi Rantala authored
      Valgrind was complaining:
      
        $ valgrind ./perf list >/dev/null
        ==11643== Memcheck, a memory error detector
        ==11643== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
        ==11643== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info
        ==11643== Command: ./perf list
        ==11643==
        ==11643== Conditional jump or move depends on uninitialised value(s)
        ==11643==    at 0x4C30620: rindex (vg_replace_strmem.c:199)
        ==11643==    by 0x49DAA9: build_id_cache__origname (build-id.c:198)
        ==11643==    by 0x49E1C7: build_id_cache__valid_id (build-id.c:222)
        ==11643==    by 0x49E1C7: build_id_cache__list_all (build-id.c:507)
        ==11643==    by 0x4B9C8F: print_sdt_events (parse-events.c:2067)
        ==11643==    by 0x4BB0B3: print_events (parse-events.c:2313)
        ==11643==    by 0x439501: cmd_list (builtin-list.c:53)
        ==11643==    by 0x497150: run_builtin (perf.c:359)
        ==11643==    by 0x428CE0: handle_internal_command (perf.c:421)
        ==11643==    by 0x428CE0: run_argv (perf.c:467)
        ==11643==    by 0x428CE0: main (perf.c:614)
        [...]
      
      Additionally, a zero length result from readlink() is not very interesting.
      Signed-off-by: default avatarTommi Rantala <tommi.t.rantala@nokia.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/20170322130624.21881-3-tommi.t.rantala@nokia.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5a234211
    • Tommi Rantala's avatar
      perf buildid: Do not update SDT cache with null filename · 2ccc2202
      Tommi Rantala authored
      Valgrind was complaining:
      
        ==2633== Syscall param open(filename) points to unaddressable byte(s)
        ==2633==    at 0x5281CC0: __open_nocancel (syscall-template.S:84)
        ==2633==    by 0x537D38: open (fcntl2.h:53)
        ==2633==    by 0x537D38: get_sdt_note_list (symbol-elf.c:2017)
        ==2633==    by 0x5396FD: probe_cache__scan_sdt (probe-file.c:700)
        ==2633==    by 0x49EA2C: build_id_cache__add_sdt_cache (build-id.c:625)
        ==2633==    by 0x49EA2C: build_id_cache__add_s (build-id.c:697)
        ==2633==    by 0x49EE72: build_id_cache__add_b (build-id.c:717)
        ==2633==    by 0x49EE72: dso__cache_build_id (build-id.c:782)
        ==2633==    by 0x49F190: __dsos__cache_build_ids (build-id.c:793)
        ==2633==    by 0x49F190: machine__cache_build_ids (build-id.c:801)
        ==2633==    by 0x49F190: perf_session__cache_build_ids (build-id.c:815)
        ==2633==    by 0x4CD4F2: write_build_id (header.c:165)
        ==2633==    by 0x4D26F7: do_write_feat (header.c:2296)
        ==2633==    by 0x4D26F7: perf_header__adds_write (header.c:2335)
        ==2633==    by 0x4D26F7: perf_session__write_header (header.c:2414)
        ==2633==    by 0x43B324: __cmd_record (builtin-record.c:1154)
        ==2633==    by 0x43B324: cmd_record (builtin-record.c:1839)
        ==2633==    by 0x455A07: __cmd_record (builtin-kmem.c:1868)
        ==2633==    by 0x455A07: cmd_kmem (builtin-kmem.c:1944)
        ==2633==    by 0x497150: run_builtin (perf.c:359)
        ==2633==    by 0x428CE0: handle_internal_command (perf.c:421)
        ==2633==    by 0x428CE0: run_argv (perf.c:467)
        ==2633==    by 0x428CE0: main (perf.c:614)
        ==2633==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
      Signed-off-by: default avatarTommi Rantala <tommi.t.rantala@nokia.com>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Tommi Rantala <tommi.t.rantala@nokia.com>
      Link: http://lkml.kernel.org/r/20170322130624.21881-2-tommi.t.rantala@nokia.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2ccc2202
    • Linus Torvalds's avatar
      Merge tag 'edac_for_4.11_2' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp · ad0376eb
      Linus Torvalds authored
      Pull EDAC updates from Borislav Petkov:
       "A new EDAC driver for the Pondicherry2 memory controller IP found in
        the Intel Apollo Lake platform and the Denverton microserver.
      
        Plus small fixlets.
      
        Normally I had this queued for 4.12 but Tony requested for the
        pnd2_edac driver to possibly land in 4.11 therefore I'm sending it to
        you now.
      
        It is a driver for new hardware which people don't have yet so it
        shouldn't cause any regressions.
      
        The couple of patches ontop of it show that Qiuxu actually did test it
        on the hardware he has access to :)"
      
      * tag 'edac_for_4.11_2' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
        EDAC, pnd2_edac: Fix reported DIMM number
        EDAC, pnd2_edac: Fix !EDAC_DEBUG build
        EDAC: Select DEBUG_FS
        EDAC, pnd2_edac: Add new EDAC driver for Intel SoC platforms
        EDAC, i5000, i5400: Fix use of MTR_DRAM_WIDTH macro
        EDAC, xgene: Fix wrongly spelled "procesing"
      ad0376eb
    • Taeung Song's avatar
      perf annotate: Fix a bug of division by zero when calculating percent · 2e933b12
      Taeung Song authored
      Currently perf-annotate with --print-line can print
      -nan(0x8000000000000) because of division by zero when calculating
      percent. The division by zero happens when a sum of samples is zero in
      symbol__get_source_line(), so fix it.
      
      For example:
      
      After running 'perf record' like below,
      
          $ perf record -e "{cycles,page-faults,branch-misses}" ./a.out
      
      Before:
      
          $ perf annotate --stdio -l
      
        Sorted summary for file /home/taeung/workspace/a.out
        ----------------------------------------------
      
         32.89    -nan    7.04 a.c:38
         25.14    -nan    0.00 a.c:34
         16.26    -nan   56.34 a.c:31
         15.88    -nan    1.41 a.c:37
          5.67    -nan    0.00 a.c:39
          1.13    -nan   35.21 a.c:26
          0.95    -nan    0.00 a.c:44
          0.57    -nan    0.00 a.c:32
         Percent                 |      Source code & Disassembly of a.out for cycles (529 samples)
        -----------------------------------------------------------------------------------------
                               :
        ...
      
         a.c:26    0.57    -nan    4.23 :         40081a:       mov    %edi,-0x24(%rbp)
         a.c:26    0.00    -nan    9.86 :         40081d:       mov    %rsi,-0x30(%rbp)
      
        ...
      
      However, if a sum of samples is zero (e.g. 'page-faults'),
      skip calculating percent.
      
      After:
      
          $ perf annotate --stdio -l
      
        Sorted summary for file /home/taeung/workspace/a.out
        ----------------------------------------------
      
         32.89    0.00    7.04 a.c:38
         25.14    0.00    0.00 a.c:34
         16.26    0.00   56.34 a.c:31
         15.88    0.00    1.41 a.c:37
          5.67    0.00    0.00 a.c:39
          1.13    0.00   35.21 a.c:26
          0.95    0.00    0.00 a.c:44
          0.57    0.00    0.00 a.c:32
         Percent                 |      Source code & Disassembly of old for cycles (529 samples)
        -----------------------------------------------------------------------------------------
                               :
        ...
      
        a.c:26    0.57    0.00    4.23 :         40081a:       mov    %edi,-0x24(%rbp)
        a.c:26    0.00    0.00    9.86 :         40081d:       mov    %rsi,-0x30(%rbp)
      
        ...
      Signed-off-by: default avatarTaeung Song <treeze.taeung@gmail.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1490598638-13947-3-git-send-email-treeze.taeung@gmail.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2e933b12
    • Taeung Song's avatar
      perf annotate: Fix a bug following symbolic link of a build-id file · 6ebd2547
      Taeung Song authored
      It is wrong way to read link name from a build-id file.  Because a
      build-id file is not anymore a symbolic link but build-id directory of
      it is symbolic link, so fix it.
      
      For example, if build-id file name gotten from
      dso__build_id_filename() is as below,
      
        /root/.debug/.build-id/4f/75c7d197c951659d1c1b8b5fd49bcdf8f3f8b1/elf
      
      To correctly read link name of build-id, use the build-id dir path that
      is a symbolic link, instead of the above build-id file name like below.
      
        /root/.debug/.build-id/4f/75c7d197c951659d1c1b8b5fd49bcdf8f3f8b1
      Signed-off-by: default avatarTaeung Song <treeze.taeung@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Masami Hiramatsu <mhiramat@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/1490598638-13947-2-git-send-email-treeze.taeung@gmail.com
      Fixes: 01412261 ("perf buildid-cache: Use path/to/bin/buildid/elf instead of path/to/bin/buildid")
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6ebd2547
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v4.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 85f91d5c
      Linus Torvalds authored
      Pull more pin control fixes from Linus Walleij:
       "Here is a bunch of pin control fixes again
      
        A bit more than I'd like for this subsystem at this point, but what
        can I do. They are all driver fixes for hardware issues, as like "we
        forgot", "we didn't think of the fact that this could happen", "oops
        that one goes there" etc
      
         - Kconfig fixup for the TI IOdelay pinctrl-single add-on
      
         - fix up a typo in the meson i2c ao groups
      
         - switch a remapping back to use devm_ioremap() as
           devm_ioremap_resource() does not allow for sharing memory regions
      
         - do not clear the Qualcomm irq status bit in irq_unmask(), as this
           can lead to missing interrupts while the irq handler is executing
      
         - add irq_request/release_resources() on the ST driver
      
         - add a bunch of mysteriously missing pingroups for high numbered
           pins in the Qualcomm ipq4019 driver"
      
      * tag 'pinctrl-v4.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: qcom: ipq4019: add missing pingroups for pins > 70
        pinctrl: st: add irq_request/release_resources callbacks
        pinctrl: qcom: Don't clear status bit on irq_unmask
        pinctrl: samsung: Fix memory mapping code
        pinctrl: meson-gxbb: Fix typo in i2c ao groups
        pinctrl: ti: The IODelay driver is a DRA7xxx feature so depend on that SoC
      85f91d5c
    • Linus Torvalds's avatar
      Merge tag 'm68k-for-v4.11-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k · d3e68cef
      Linus Torvalds authored
      Pull m68k updates from Geert Uytterhoeven:
      
        - build warning fix
      
        - defconfig updates
      
        - wire up new statx syscall
      
      * tag 'm68k-for-v4.11-tag2' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
        m68k: Wire up statx
        m68k/defconfig: Update defconfigs for v4.11-rc1
        m68k/bitops: Correct signature of test_bit()
      d3e68cef
    • Milian Wolff's avatar
      perf report: Enable sorting by srcline as key · 5dfa210e
      Milian Wolff authored
      Often it is interesting to know how costly a given source line is in
      total. Previously, one had to build these sums manually based on all
      addresses that pointed to the same source line. This patch introduces
      srcline as a sort key, which will do the aggregation for us.
      
      Paired with the recent addition of showing inline frames, this makes
      perf report much more useful for many C++ work loads.
      
      The following shows the new feature in action. First, let's show the
      status quo output when we sort by address. The result contains many hist
      entries that generate the same output:
      
        ~~~~~~~~~~~~~~~~
        $ perf report --stdio --inline -g address
        # Children      Self  Command       Shared Object        Symbol
        # ........  ........  ............  ...................  .........................................
        #
            99.89%    35.34%  cpp-inlining  cpp-inlining         [.] main
                  |
                  |--64.55%--main complex:655
                  |          /home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39 (inline)
                  |          /usr/include/c++/6.3.1/complex:664 (inline)
                  |          |
                  |          |--60.31%--hypot +20
                  |          |          |
                  |          |          |--8.52%--__hypot_finite +273
                  |          |          |
                  |          |          |--7.32%--__hypot_finite +411
      ...
                   --35.34%--_start +4194346
                             __libc_start_main +241
                             |
                             |--6.65%--main random.tcc:3326
                             |          /home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1809 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1818 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:185 (inline)
                             |
                             |--2.70%--main random.tcc:3326
                             |          /home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1809 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1818 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:185 (inline)
                             |
                             |--1.69%--main random.tcc:3326
                             |          /home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1809 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1818 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:185 (inline)
        ...
        ~~~~~~~~~~~~~~~~
      
      With this patch and `-g srcline` we instead get the following output:
      
        ~~~~~~~~~~~~~~~~
        $ perf report --stdio --inline -g srcline
        # Children      Self  Command       Shared Object        Symbol
        # ........  ........  ............  ...................  .........................................
        #
            99.89%    35.34%  cpp-inlining  cpp-inlining         [.] main
                  |
                  |--64.55%--main complex:655
                  |          /home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39 (inline)
                  |          /usr/include/c++/6.3.1/complex:664 (inline)
                  |          |
                  |          |--64.02%--hypot
                  |          |          |
                  |          |           --59.81%--__hypot_finite
                  |          |
                  |           --0.53%--cabs
                  |
                   --35.34%--_start
                             __libc_start_main
                             |
                             |--12.48%--main random.tcc:3326
                             |          /home/milian/projects/kdab/rnd/hotspot/tests/test-clients/cpp-inlining/main.cpp:39 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1809 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:1818 (inline)
                             |          /usr/include/c++/6.3.1/bits/random.h:185 (inline)
        ...
        ~~~~~~~~~~~~~~~~
      Signed-off-by: default avatarMilian Wolff <milian.wolff@kdab.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Yao Jin <yao.jin@linux.intel.com>
      Link: http://lkml.kernel.org/r/20170318214928.9047-1-milian.wolff@kdab.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5dfa210e
    • Jin Yao's avatar
      perf report: Show inline stack for browser mode · 0d3eb0b7
      Jin Yao authored
      If the address belongs to an inlined function, the source information
      back to the first non-inlined function will be printed.
      
      For example:
      
      1. Show inlined function name
         perf report -g function --inline
      
      -    0.69%     0.00%  inline   ld-2.23.so           [.] dl_main
         - dl_main
              0.56% _dl_relocate_object
               _dl_relocate_object (inline)
               elf_dynamic_do_Rela (inline)
      
      2. Show the file/line information
         perf report -g address --inline
      
      -    0.69%     0.00%  inline   ld-2.23.so           [.] _dl_start
           _dl_start rtld.c:307
            /build/glibc-GKVZIf/glibc-2.23/elf/rtld.c:413 (inline)
         + _dl_sysdep_start dl-sysdep.c:250
      Signed-off-by: default avatarYao Jin <yao.jin@linux.intel.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarMilian Wolff <milian.wolff@kdab.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@intel.com>
      Link: http://lkml.kernel.org/r/1490474069-15823-6-git-send-email-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0d3eb0b7
    • Jin Yao's avatar
      perf report: Show inline stack for stdio mode · 0db64dd0
      Jin Yao authored
      If the address belongs to an inlined function, the source information
      back to the first non-inlined function will be printed.
      
      For example:
      
      1. Show inlined function name
         perf report --stdio -g function --inline
      
           0.69%     0.00%  inline   ld-2.23.so           [.] dl_main
                  |
                  ---dl_main
                     |
                      --0.56%--_dl_relocate_object
                                _dl_relocate_object (inline)
                                elf_dynamic_do_Rela (inline)
      
      2. Show the file/line information
         perf report --stdio -g address --inline
      
           0.69%     0.00%  inline   ld-2.23.so           [.] _dl_start_user
                  |
                  ---_dl_start_user .:0
                     _dl_start rtld.c:307
                     /build/glibc-GKVZIf/glibc-2.23/elf/rtld.c:413 (inline)
                     _dl_sysdep_start dl-sysdep.c:250
                     |
                      --0.56%--dl_main rtld.c:2076
      
      Committer tests:
      
        # perf record --call-graph dwarf ~/bin/perf stat usleep 1
      
       Performance counter stats for 'usleep 1':
      
                0.443020      task-clock (msec)         #    0.449 CPUs utilized
                       1      context-switches          #    0.002 M/sec
                       0      cpu-migrations            #    0.000 K/sec
                      52      page-faults               #    0.117 M/sec
               1,049,423      cycles                    #    2.369 GHz
                 801,456      instructions              #    0.76  insn per cycle
                 155,609      branches                  #  351.246 M/sec
                   7,026      branch-misses             #    4.52% of all branches
      
             0.000987570 seconds time elapsed
      
        [ perf record: Woken up 2 times to write data ]
        [ perf record: Captured and wrote 0.553 MB perf.data (66 samples) ]
        # perf report --stdio --inline fs__get_mountpoint
        <SNIP>
           1.73%     0.00%  perf     perf           [.] fs__get_mountpoint
                  |
                  ---fs__get_mountpoint
                     fs__get_mountpoint (inline)
                     fs__check_mounts (inline)
                     __statfs
                     entry_SYSCALL_64
                     sys_statfs
                     SYSC_statfs
                     user_statfs
                     user_path_at_empty
                     filename_lookup
                     path_lookupat
                     link_path_walk
                     inode_permission
                     __inode_permission
                     kernfs_iop_permission
                     kernfs_refresh_inode
                     security_inode_notifysecctx
                     selinux_inode_notifysecctx
                     selinux_inode_setsecurity
                     security_context_to_sid
                     security_context_to_sid_core
                     string_to_context_struct
                     symcmp
      Signed-off-by: default avatarYao Jin <yao.jin@linux.intel.com>
      Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Tested-by: default avatarMilian Wolff <milian.wolff@kdab.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@intel.com>
      Link: http://lkml.kernel.org/r/1490474069-15823-5-git-send-email-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      0db64dd0
    • Jin Yao's avatar
      perf report: Introduce --inline option · f3a60646
      Jin Yao authored
      It takes some time to look for inline stack for callgraph addresses.  So
      it provides new option "--inline" to let user decide if enable this
      feature.
      
        --inline:
      
        If a callgraph address belongs to an inlined function, the inline stack
        will be printed. Each entry is the inline function name or file/line.
      Signed-off-by: default avatarYao Jin <yao.jin@linux.intel.com>
      Tested-by: default avatarMilian Wolff <milian.wolff@kdab.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@intel.com>
      Link: http://lkml.kernel.org/r/1490474069-15823-4-git-send-email-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f3a60646
    • Jin Yao's avatar
      perf report: Find the inline stack for a given address · a64489c5
      Jin Yao authored
      It would be useful for perf to support a mode to query the inline stack
      for a given callgraph address. This would simplify finding the right
      code in code that does a lot of inlining.
      
      The srcline.c has contained the code which supports to translate the
      address to filename:line_nr. This patch just extends the function to let
      it support getting the inline stacks.
      
      It introduces the inline_list which will store the inline function
      result (filename:line_nr and funcname).
      
      If BFD lib is not supported, the result is only filename:line_nr.
      Signed-off-by: default avatarYao Jin <yao.jin@linux.intel.com>
      Tested-by: default avatarMilian Wolff <milian.wolff@kdab.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@intel.com>
      Link: http://lkml.kernel.org/r/1490474069-15823-3-git-send-email-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a64489c5
    • Jin Yao's avatar
      perf report: Refactor common code in srcline.c · 5580338d
      Jin Yao authored
      Introduce dso__name() and filename_split() out of existing code because
      these codes will be used in several places in next patch.
      
      For filename_split(), it may also solve a potential memory leak in
      existing code. In existing addr2line(),
      
              sep = strchr(filename, ':');
              if (sep) {
                      *sep++ = '\0';
                      *file = filename;
                      *line_nr = strtoul(sep, NULL, 0);
                      ret = 1;
              }
      
      out:
              pclose(fp);
              return ret;
      
      If sep is NULL, filename is not freed or returned via file.
      Signed-off-by: default avatarYao Jin <yao.jin@linux.intel.com>
      Tested-by: default avatarMilian Wolff <milian.wolff@kdab.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kan Liang <kan.liang@intel.com>
      Link: http://lkml.kernel.org/r/1490474069-15823-2-git-send-email-yao.jin@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      5580338d
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Remove unused 'prefix' from builtin functions · b0ad8ea6
      Arnaldo Carvalho de Melo authored
      We got it from the git sources but never used it for anything, with the
      place where this would be somehow used remaining:
      
        static int run_builtin(struct cmd_struct *p, int argc, const char **argv)
        {
      	prefix = NULL;
      	if (p->option & RUN_SETUP)
      		prefix = NULL; /* setup_perf_directory(); */
      
      Ditch it.
      
      Cc: Adrian Hunter <adrian.hunter@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>
      Link: http://lkml.kernel.org/n/tip-uw5swz05vol0qpr32c5lpvus@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b0ad8ea6
    • Ravi Bangoria's avatar
      perf list sdt: Show option in man page · 6963d3c3
      Ravi Bangoria authored
      Commit 40218dae ("perf list: Show SDT and pre-cached events") added
      sdt support in perf list, but it missed to update documentation.
      
      Show sdt option in man perf-list.
      Signed-off-by: default avatarRavi Bangoria <ravi.bangoria@linux.vnet.ibm.com>
      Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
      Cc: Andi Kleen <ak@linux.intel.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
      Link: http://lkml.kernel.org/r/20170327025538.1753-1-ravi.bangoria@linux.vnet.ibm.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6963d3c3
    • Adrian Hunter's avatar
      perf auxtrace: Fix no_size logic in addr_filter__resolve_kernel_syms() · c3a0bbc7
      Adrian Hunter authored
      Address filtering with kernel symbols incorrectly resulted in the error
      "Cannot determine size of symbol" because the no_size logic was the wrong
      way around.
      Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
      Tested-by: default avatarAndi Kleen <ak@linux.intel.com>
      Cc: stable@vger.kernel.org # v4.9+
      Link: http://lkml.kernel.org/r/1490357752-27942-1-git-send-email-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      c3a0bbc7