25 Sep, 2019

2 commits

  • The libperf_set_print() function needs to be called in any case so let's
    merge it with libperf_init(), so we have just one init function.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Michael Petlan
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20190913132355.21634-34-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • We need the 'page_size' variable in libperf, so move it there.

    Add a libperf_init() as a global libperf init function to obtain this
    value via sysconf() at tool start.

    Committer notes:

    Add internal/lib.h to tools/perf/ files using 'page_size', sometimes
    replacing util.h with it if that was the only reason for having util.h
    included.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Michael Petlan
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lore.kernel.org/lkml/20190913132355.21634-33-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

20 Sep, 2019

1 commit


01 Sep, 2019

3 commits

  • Remove the last unneeded use of cache.h in a header, we can check where
    it is really needed, i.e. we can remove it and be sure that it isn't
    being obtained indirectly.

    This is an old file, used by now incorrectly in many places, so it was
    providing includes needed indirectly, fixup this fallout.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-3x3l8gihoaeh7714os861ia7@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • bpf.h and build-id.h are not needed at all in event.h, remove them.

    And fixup the fallout of files that were getting needed stuff from this
    now pruned include.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-rdm3dgtlrndmmnlc4bafsg3b@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • All we need there is a forward declaration for 'union perf_event', so
    remove it from there and add missing header directives in places using
    things from this indirect include.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: https://lkml.kernel.org/n/tip-7ftk0ztstqub1tirjj8o8xbl@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

30 Aug, 2019

2 commits


29 Aug, 2019

1 commit


13 Aug, 2019

1 commit

  • We had this comment in Documentation/perf_counter/config.c, i.e. since
    when we got this from the git sources, but never really did that
    getenv("PERF_CONFIG"), do it now as I need to disable whatever
    ~/.perfconfig root has so that tests parsing tool output are done for
    the expected default output or that we specify an alternate config file
    that when read will make the tools produce expected output.

    Cc: Adrian Hunter
    Cc: Jiri Olsa
    Cc: Luis Cláudio Gonçalves
    Cc: Namhyung Kim
    Cc: Taeung Song
    Fixes: 078006012401 ("perf_counter tools: add in basic glue from Git")
    Link: https://lkml.kernel.org/n/tip-jo209zac9rut0dz1rqvbdlgm@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

09 Jul, 2019

1 commit


26 Jun, 2019

1 commit


20 Mar, 2019

1 commit

  • bpf_prog_info contains information necessary to annotate bpf programs.

    This patch saves bpf_prog_info for bpf programs loaded in the system.

    Some big picture of the next few patches:

    To fully annotate BPF programs with source code mapping, 4 different
    informations are needed:

    1) PERF_RECORD_KSYMBOL
    2) PERF_RECORD_BPF_EVENT
    3) bpf_prog_info
    4) btf

    Before this set, 1) and 2) in the list are already saved to perf.data
    file. For BPF programs that are already loaded before perf run, 1) and 2)
    are synthesized by perf_event__synthesize_bpf_events(). For short living
    BPF programs, 1) and 2) are generated by kernel.

    This set handles 3) and 4) from the list. Again, it is necessary to handle
    existing BPF program and short living program separately.

    This patch handles 3) for exising BPF programs while synthesizing 1) and
    2) in perf_event__synthesize_bpf_events(). These data are stored in
    perf_env. The next patch saves these data from perf_env to perf.data as
    headers.

    Similarly, the two patches after the next saves 4) of existing BPF
    programs to perf_env and perf.data.

    Another patch later will handle 3) and 4) for short living BPF programs
    by monitoring 1) and 2) in a dedicate thread.

    Signed-off-by: Song Liu
    Reviewed-by: Jiri Olsa
    Cc: Alexei Starovoitov
    Cc: Daniel Borkmann
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stanislav Fomichev
    Cc: kernel-team@fb.com
    Link: http://lkml.kernel.org/r/20190312053051.2690567-7-songliubraving@fb.com
    [ set env->bpf_progs.infos_cnt to zero in perf_env__purge_bpf() as noted by jolsa ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Song Liu
     

04 Jun, 2018

1 commit

  • In c68677014bac ("perf tools: Remove support for command aliases") we
    removed the only remaining use of a function provided by these files, so
    ditch it.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: https://lkml.kernel.org/n/tip-mgnzqbi46gucs48d7bzfwr55@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

18 May, 2018

2 commits


17 May, 2018

2 commits

  • One should use tracing_path_mount() instead, so more things get done
    lazily instead of at every 'perf' tool call startup.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: https://lkml.kernel.org/n/tip-fci4yll35idd9yuslp67vqc2@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     
  • We check what perf_config__init() does at each perf_config() call,
    namely if the static perf_config instance was created, so instead of
    bailing out in that case, try to allocate it, bailing if it fails.

    Now to get the perf_config() call out of the start of perf's main()
    function, doing it also lazily.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Taeung Song
    Cc: Wang Nan
    Link: https://lkml.kernel.org/n/tip-4bo45k6ivsmbxpfpdte4orsg@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

12 Apr, 2018

1 commit

  • To be consistent with other HAVE_XXX_SUPPORT uses in Makefile.config,
    this patch renames HAVE_SYSCALL_TABLE to HAVE_SYSCALL_TABLE_SUPPORT and
    updates the C code accordingly.

    Signed-off-by: Jin Yao
    Suggested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1523269609-28824-3-git-send-email-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Jin Yao
     

03 Apr, 2018

1 commit

  • We keep having bug reports that when users build perf on their own, but
    they don't install some needed libraries such as libelf,
    libbfd/libibery.

    The perf can build, but it is missing important functionality.

    This patch provides a new option '-vv' for perf which will print the
    compiled-in status of libraries.

    The 'perf -vv' is mapped to 'perf version --build-options'.

    For example:

    $ ./perf -vv

    perf version 4.13.rc5.g6727c5
    dwarf: [ on ] # HAVE_DWARF_SUPPORT
    dwarf_getlocations: [ on ] # HAVE_DWARF_GETLOCATIONS_SUPPORT
    glibc: [ on ] # HAVE_GLIBC_SUPPORT
    gtk2: [ on ] # HAVE_GTK2_SUPPORT
    libaudit: [ OFF ] # HAVE_LIBAUDIT_SUPPORT
    libbfd: [ on ] # HAVE_LIBBFD_SUPPORT
    libelf: [ on ] # HAVE_LIBELF_SUPPORT
    libnuma: [ on ] # HAVE_LIBNUMA_SUPPORT
    numa_num_possible_cpus: [ on ] # HAVE_LIBNUMA_SUPPORT
    libperl: [ on ] # HAVE_LIBPERL_SUPPORT
    libpython: [ on ] # HAVE_LIBPYTHON_SUPPORT
    libslang: [ on ] # HAVE_SLANG_SUPPORT
    libcrypto: [ on ] # HAVE_LIBCRYPTO_SUPPORT
    libunwind: [ on ] # HAVE_LIBUNWIND_SUPPORT
    libdw-dwarf-unwind: [ on ] # HAVE_DWARF_SUPPORT
    zlib: [ on ] # HAVE_ZLIB_SUPPORT
    lzma: [ on ] # HAVE_LZMA_SUPPORT
    get_cpuid: [ on ] # HAVE_AUXTRACE_SUPPORT
    bpf: [ on ] # HAVE_LIBBPF_SUPPORT

    v3:

    One bug is found in v2. It didn't process the option like '-vabc'
    correctly. Fix this bug.

    v2:

    Use a global variable version_verbose to record the number of 'v'.

    Signed-off-by: Jin Yao
    Tested-by: Arnaldo Carvalho de Melo
    Acked-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jin Yao
    Cc: Kan Liang
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1522402036-22915-6-git-send-email-yao.jin@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Jin Yao
     

23 Jan, 2018

1 commit

  • Change the Makefile and build process to no longer require audit-libs
    interfaces when the architecture provides system call tables.

    Committer notes:

    Its not enough to hook into the NO_LIBAUDIT makefile block, we need to
    define a CONFIG_TRACE that gets selected by both architectures
    generating the syscall tables from the kernel headers and from detecting
    the availability of libaudit.

    With that in place we will not link against libaudit even if the
    necessary files are available for that, in fact we will not even try to
    detect its availability, speeding up a bit the feature detection phase.

    Signed-off-by: Hendrik Brueckner
    Reviewed-by: Thomas Richter
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Jiri Olsa
    Cc: Michael Petlan
    Cc: linux-s390@vger.kernel.org
    LPU-Reference: 1516352177-11106-6-git-send-email-brueckner@linux.vnet.ibm.com
    Link: https://lkml.kernel.org/n/tip-j68lub6ipm8apvy52vd3l4cm@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Hendrik Brueckner
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

12 Sep, 2017

1 commit

  • Previously the part behind "perf-" was interpreted as an internal perf
    command. If the suffix could not be handled, the execution was stopped.
    This makes it impossible to launch perf binaries that got renamed to
    have the `perf-` prefix. This is e.g. the case for appimages (e.g.
    "perf-x86_64.AppImage"), but would also apply to all other scenarios
    where users symlink or rename perf themselves:

    Status quo with the broken behavior:

    $ ln -s ./perf ./perf-custom-suffix
    $ ./perf-custom-suffix list
    cannot handle custom-suffix internally$

    Also note the missing newline at the end of the error message.

    With this patch applied, the above works properly:

    $ ./perf-custom-suffix list

    List of pre-defined events (to be used in -e):
    ...

    Signed-off-by: Milian Wolff
    Acked-by: David Ahern
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Yao Jin
    Link: http://lkml.kernel.org/r/20170911111422.31903-1-milian.wolff@kdab.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Milian Wolff
     

21 Jul, 2017

1 commit

  • Replacing prefixcmp(), same purpose, inverted result, so standardize on
    the kernel variant, to reduce silly differences among tools/ and the
    kernel sources, making it easier for people to work in both codebases.

    And then doing:

    if (strstarts(option, "no-"))

    Looks clearer than doing:

    if (!prefixcmp(option, "no-"))

    To figure out if option starts witn "no-".

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Josh Poimboeuf
    Cc: Namhyung Kim
    Cc: Rusty Russell
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-kaei42gi7lpa8subwtv7eug8@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

26 Apr, 2017

1 commit


25 Apr, 2017

2 commits


21 Apr, 2017

1 commit


20 Apr, 2017

3 commits


04 Apr, 2017

1 commit


28 Mar, 2017

1 commit

  • This came from 'git', but isn't documented anywhere in
    tools/perf/Documentation/, looks like baggage we can do without, ditch
    it.

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-e7uwkn60t4hmlnwj99ba4t2s@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

27 Mar, 2017

1 commit

  • 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
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-uw5swz05vol0qpr32c5lpvus@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

27 Jan, 2017

1 commit

  • Previously these were being ignored, sometimes silently.

    Stop doing that, emitting debug messages and handling the errors.

    Testing it:

    $ cat ~/.perfconfig
    cat: /home/acme/.perfconfig: No such file or directory
    $ perf stat -e cycles usleep 1

    Performance counter stats for 'usleep 1':

    938,996 cycles:u

    0.003813731 seconds time elapsed

    $ perf top --stdio
    Error:
    You may not have permission to collect system-wide stats.

    Consider tweaking /proc/sys/kernel/perf_event_paranoid,

    [ perf record: Captured and wrote 0.019 MB perf.data (7 samples) ]
    [acme@jouet linux]$ perf report --stdio
    # To display the perf.data header info, please use --header/--header-only options.
    # Overhead Command Shared Object Symbol
    # ........ ....... ................. .........................
    71.77% usleep libc-2.24.so [.] _dl_addr
    27.07% usleep ld-2.24.so [.] _dl_next_ld_env_entry
    1.13% usleep [kernel.kallsyms] [k] page_fault
    $
    $ touch ~/.perfconfig
    $ ls -la ~/.perfconfig
    -rw-rw-r--. 1 acme acme 0 Jan 27 12:14 /home/acme/.perfconfig
    $
    $ perf stat -e instructions usleep 1

    Performance counter stats for 'usleep 1':

    244,610 instructions:u

    0.000805383 seconds time elapsed

    $
    [root@jouet ~]# chown acme.acme ~/.perfconfig
    [root@jouet ~]# perf stat -e cycles usleep 1
    Warning: File /root/.perfconfig not owned by current user or root, ignoring it.

    Performance counter stats for 'usleep 1':

    937,615 cycles

    0.000836931 seconds time elapsed
    #

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-j2rq96so6xdqlr8p8rd6a3jx@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

26 Jan, 2017

1 commit

  • The 'perf ftrace' command is a simple wrapper of kernel's ftrace
    functionality. It only supports single thread tracing currently and
    just reads trace_pipe in text and then write it to stdout.

    Committer notes:

    Testing it:

    # perf ftrace -f function_graph usleep 123456

    2) | SyS_nanosleep() {
    2) | _copy_from_user() {

    2) 0.900 us | }
    2) 1.354 us | }
    2) | hrtimer_nanosleep() {
    2) 0.062 us | __hrtimer_init();
    2) | do_nanosleep() {
    2) | hrtimer_start_range_ns() {

    2) 5.025 us | }
    2) | schedule() {
    2) 0.125 us | rcu_note_context_switch();
    2) 0.057 us | _raw_spin_lock();
    2) | deactivate_task() {
    2) 0.369 us | update_rq_clock.part.77();
    2) | dequeue_task_fair() {

    2) + 22.453 us | }
    2) + 23.736 us | }
    2) | pick_next_task_fair() {

    2) + 47.167 us | }
    2) | pick_next_task_idle() {

    2) 4.462 us | }
    ------------------------------------------
    2) usleep-20387 => -0
    ------------------------------------------

    2) 0.806 us | switch_mm_irqs_off();
    ------------------------------------------
    2) -0 => usleep-20387
    ------------------------------------------

    2) 0.151 us | finish_task_switch();
    2) @ 123597.2 us | }
    2) 0.037 us | _cond_resched();
    2) | hrtimer_try_to_cancel() {
    2) 0.064 us | hrtimer_active();
    2) 0.353 us | }
    2) @ 123605.3 us | }
    2) @ 123606.2 us | }
    2) @ 123608.3 us | } /* SyS_nanosleep */
    2) | __do_page_fault() {

    Signed-off-by: Namhyung Kim
    Tested-by: Arnaldo Carvalho de Melo
    Tested-by: Masami Hiramatsu
    Cc: Frederic Weisbecker
    Cc: Jeremy Eder
    Cc: Jiri Olsa ,
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/n/tip-r1hgmsj4dxny8arn3o9mw512@git.kernel.org
    [ Various foward port fixes, add man page ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

17 Jan, 2017

1 commit

  • The use_browser and perf_version_string variables are both declared in
    perf.c but they are also referenced by other functions of libperf.a.

    Therefore a user linking an own main() with libperf.a must declare those
    two variables in their files even if the files never use the browser or
    the version information.

    This patch fixes this issue by moving use_browser and
    perf_version_string out of perf.c to some other files.

    Signed-off-by: Soramichi Akiyama
    Cc: Alexander Shishkin
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20170117002237.c1aec0ce3b4d675dca018deb@m.soramichi.jp
    Signed-off-by: Arnaldo Carvalho de Melo

    Soramichi AKIYAMA
     

12 Jan, 2017

1 commit

  • Its similar to doing grep on a /proc/kallsyms, but it also shows extra
    information like the path to the kernel module and the unrelocated
    addresses in it, to help in diagnosing problems.

    It is also helps demonstrate the use of the symbols routines so that
    tool writers can use them more effectively.

    Using it:

    $ perf kallsyms e1000_xmit_frame netif_rx usb_stor_set_xfer_buf
    e1000_xmit_frame: [e1000e] /lib/modules/4.9.0+/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko 0xffffffffc046fc10-0xffffffffc0470bb0 (0x19c80-0x1ac20)
    netif_rx: [kernel] [kernel.kallsyms] 0xffffffff916f03a0-0xffffffff916f0410 (0xffffffff916f03a0-0xffffffff916f0410)
    usb_stor_set_xfer_buf: [usb_storage] /lib/modules/4.9.0+/kernel/drivers/usb/storage/usb-storage.ko 0xffffffffc057aea0-0xffffffffc057af19 (0xf10-0xf89)
    $

    Cc: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Masami Hiramatsu
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-79bk9pakujn4l4vq0f90klv3@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo
     

20 Oct, 2016

1 commit

  • Adding c2c command base wirings. Its implementation is going to be added
    gradually in following patches.

    Signed-off-by: Jiri Olsa
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Don Zickus
    Cc: Joe Mario
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1474558645-19956-11-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

15 Jul, 2016

1 commit

  • So far the cacheline_size is only useful for the "dcacheline" --sort
    order, i.e. if that is not used, which is the norm, then the user
    shouldn't care that he is running this, say, on an Android system where
    sysconf(_SC_LEVEL1_DCACHE_LINESIZE) and the
    /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size sysfs file
    isn't available.

    An upcoming patch will emit an warning only for "--sort ...,dcacheline,...".

    Cc: Adrian Hunter
    Cc: Chris Phlipot
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Wang Nan
    Link: http://lkml.kernel.org/n/tip-580cnkvftunyvt9n7unsholi@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Arnaldo Carvalho de Melo