06 Feb, 2019

1 commit

  • Allocate affinity option and masks for mmap data buffers and record
    thread as well as initialize allocated objects.

    Signed-off-by: Alexey Budankov
    Reviewed-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/526fa2b0-07de-6dbd-a7e9-26ba875593c9@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Alexey Budankov
     

22 Jan, 2019

1 commit

  • This patch adds basic handling of PERF_RECORD_BPF_EVENT. Tracking of
    PERF_RECORD_BPF_EVENT is OFF by default. Option --bpf-event is added to
    turn it on.

    Committer notes:

    Add dummy machine__process_bpf_event() variant that returns zero for
    systems without HAVE_LIBBPF_SUPPORT, such as Alpine Linux, unbreaking
    the build in such systems.

    Remove the needless include from bpf->event.h, provide just
    forward declarations for the structs and unions in the parameters, to
    reduce compilation time and needless rebuilds when machine.h gets
    changed.

    Committer testing:

    When running with:

    # perf record --bpf-event

    On an older kernel where PERF_RECORD_BPF_EVENT and PERF_RECORD_KSYMBOL
    is not present, we fallback to removing those two bits from
    perf_event_attr, making the tool to continue to work on older kernels:

    perf_event_attr:
    size 112
    { sample_period, sample_freq } 4000
    sample_type IP|TID|TIME|PERIOD
    read_format ID
    disabled 1
    inherit 1
    mmap 1
    comm 1
    freq 1
    enable_on_exec 1
    task 1
    precise_ip 3
    sample_id_all 1
    exclude_guest 1
    mmap2 1
    comm_exec 1
    ksymbol 1
    bpf_event 1
    ------------------------------------------------------------
    sys_perf_event_open: pid 5779 cpu 0 group_fd -1 flags 0x8
    sys_perf_event_open failed, error -22
    switching off bpf_event
    ------------------------------------------------------------
    perf_event_attr:
    size 112
    { sample_period, sample_freq } 4000
    sample_type IP|TID|TIME|PERIOD
    read_format ID
    disabled 1
    inherit 1
    mmap 1
    comm 1
    freq 1
    enable_on_exec 1
    task 1
    precise_ip 3
    sample_id_all 1
    exclude_guest 1
    mmap2 1
    comm_exec 1
    ksymbol 1
    ------------------------------------------------------------
    sys_perf_event_open: pid 5779 cpu 0 group_fd -1 flags 0x8
    sys_perf_event_open failed, error -22
    switching off ksymbol
    ------------------------------------------------------------
    perf_event_attr:
    size 112
    { sample_period, sample_freq } 4000
    sample_type IP|TID|TIME|PERIOD
    read_format ID
    disabled 1
    inherit 1
    mmap 1
    comm 1
    freq 1
    enable_on_exec 1
    task 1
    precise_ip 3
    sample_id_all 1
    exclude_guest 1
    mmap2 1
    comm_exec 1
    ------------------------------------------------------------

    And then proceeds to work without those two features.

    As passing --bpf-event is an explicit action performed by the user, perhaps we
    should emit a warning telling that the kernel has no such feature, but this can
    be done on top of this patch.

    Now with a kernel that supports these events, start the 'record --bpf-event -a'
    and then run 'perf trace sleep 10000' that will use the BPF
    augmented_raw_syscalls.o prebuilt (for another kernel version even) and thus
    should generate PERF_RECORD_BPF_EVENT events:

    [root@quaco ~]# perf record -e dummy -a --bpf-event
    ^C[ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.713 MB perf.data ]

    [root@quaco ~]# bpftool prog
    13: cgroup_skb tag 7be49e3934a125ba gpl
    loaded_at 2019-01-19T09:09:43-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 13,14
    14: cgroup_skb tag 2a142ef67aaad174 gpl
    loaded_at 2019-01-19T09:09:43-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 13,14
    15: cgroup_skb tag 7be49e3934a125ba gpl
    loaded_at 2019-01-19T09:09:43-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 15,16
    16: cgroup_skb tag 2a142ef67aaad174 gpl
    loaded_at 2019-01-19T09:09:43-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 15,16
    17: cgroup_skb tag 7be49e3934a125ba gpl
    loaded_at 2019-01-19T09:09:44-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 17,18
    18: cgroup_skb tag 2a142ef67aaad174 gpl
    loaded_at 2019-01-19T09:09:44-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 17,18
    21: cgroup_skb tag 7be49e3934a125ba gpl
    loaded_at 2019-01-19T09:09:45-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 21,22
    22: cgroup_skb tag 2a142ef67aaad174 gpl
    loaded_at 2019-01-19T09:09:45-0300 uid 0
    xlated 296B jited 229B memlock 4096B map_ids 21,22
    31: tracepoint name sys_enter tag 12504ba9402f952f gpl
    loaded_at 2019-01-19T09:19:56-0300 uid 0
    xlated 512B jited 374B memlock 4096B map_ids 30,29,28
    32: tracepoint name sys_exit tag c1bd85c092d6e4aa gpl
    loaded_at 2019-01-19T09:19:56-0300 uid 0
    xlated 256B jited 191B memlock 4096B map_ids 30,29
    # perf report -D | grep PERF_RECORD_BPF_EVENT | nl
    1 0 55834574849 0x4fc8 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 13
    2 0 60129542145 0x5118 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 14
    3 0 64424509441 0x5268 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 15
    4 0 68719476737 0x53b8 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 16
    5 0 73014444033 0x5508 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 17
    6 0 77309411329 0x5658 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 18
    7 0 90194313217 0x57a8 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 21
    8 0 94489280513 0x58f8 [0x18]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 22
    9 7 620922484360 0xb6390 [0x30]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 29
    10 7 620922486018 0xb6410 [0x30]: PERF_RECORD_BPF_EVENT bpf event with type 2, flags 0, id 29
    11 7 620922579199 0xb6490 [0x30]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 30
    12 7 620922580240 0xb6510 [0x30]: PERF_RECORD_BPF_EVENT bpf event with type 2, flags 0, id 30
    13 7 620922765207 0xb6598 [0x30]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 31
    14 7 620922874543 0xb6620 [0x30]: PERF_RECORD_BPF_EVENT bpf event with type 1, flags 0, id 32
    #

    There, the 31 and 32 tracepoint BPF programs put in place by 'perf trace'.

    Signed-off-by: Song Liu
    Reviewed-by: Arnaldo Carvalho de Melo
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexei Starovoitov
    Cc: Daniel Borkmann
    Cc: Peter Zijlstra
    Cc: kernel-team@fb.com
    Cc: netdev@vger.kernel.org
    Link: http://lkml.kernel.org/r/20190117161521.1341602-7-songliubraving@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Song Liu
     

18 Dec, 2018

2 commits

  • The default timeout of 500ms for parsing /proc//maps files is too
    short for profiling many of our services.

    This can be overridden by passing --proc-map-timeout to the relevant
    command but it'd be nice to globally increase our default value.

    This patch permits setting a different default with the
    core.proc-map-timeout config file parameter.

    Signed-off-by: Mark Drayton
    Acked-by: Song Liu
    Acked-by: Namhyung Kim
    Cc: Alexander Shishkin
    Cc: Jiri Olsa
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20181204203420.1683114-1-mbd@fb.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Mark Drayton
     
  • The trace file offset is read once before mmaps iterating loop and
    written back after all performance data is enqueued for aio writing.

    The trace file offset is incremented linearly after every successful aio
    write operation.

    record__aio_sync() blocks till completion of the started AIO operation
    and then proceeds.

    record__aio_mmap_read_sync() implements a barrier for all incomplete
    aio write requests.

    Signed-off-by: Alexey Budankov
    Reviewed-by: Jiri Olsa
    Acked-by: Namhyung Kim
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/ce2d45e9-d236-871c-7c8f-1bed2d37e8ac@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Alexey Budankov
     

18 Oct, 2018

1 commit

  • Store -k clockid frequency into Perf trace to enable timestamps
    derived metrics conversion into wall clock time on reporting stage.

    Below is the example of perf report output:

    tools/perf/perf record -k raw -- ../../matrix/linux/matrix.gcc
    ...
    [ perf record: Captured and wrote 31.222 MB perf.data (818054 samples) ]

    tools/perf/perf report --header
    # ========
    ...
    # event : name = cycles:ppp, , size = 112, { sample_period, sample_freq } = 4000, sample_type = IP|TID|TIME|PERIOD, disabled = 1, inherit = 1, mmap = 1, comm = 1, freq = 1, enable_on_exec = 1, task = 1, precise_ip = 3, sample_id_all = 1, exclude_guest = 1, mmap2 = 1, comm_exec = 1, use_clockid = 1, clockid = 4
    ...
    # clockid frequency: 1000 MHz
    ...
    # ========

    Signed-off-by: Alexey Budankov
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/23a4a1dc-b160-85a0-347d-40a2ed6d007b@linux.intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Alexey Budankov
     

01 Aug, 2018

1 commit

  • After update of kernel, the perf tool doesn't run anymore on my 32MB RAM
    powerpc board, but still runs on a 128MB RAM board:

    ~# strace perf
    execve("/usr/sbin/perf", ["perf"], [/* 12 vars */]) = -1 ENOMEM (Cannot allocate memory)
    --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
    +++ killed by SIGSEGV +++
    Segmentation fault

    objdump -x shows that .bss section has a huge size of 24Mbytes:

    27 .bss 016baca8 101cebb8 101cebb8 001cd988 2**3

    With especially the following objects having quite big size:

    10205f80 l O .bss 00140000 runtime_cycles_stats
    10345f80 l O .bss 00140000 runtime_stalled_cycles_front_stats
    10485f80 l O .bss 00140000 runtime_stalled_cycles_back_stats
    105c5f80 l O .bss 00140000 runtime_branches_stats
    10705f80 l O .bss 00140000 runtime_cacherefs_stats
    10845f80 l O .bss 00140000 runtime_l1_dcache_stats
    10985f80 l O .bss 00140000 runtime_l1_icache_stats
    10ac5f80 l O .bss 00140000 runtime_ll_cache_stats
    10c05f80 l O .bss 00140000 runtime_itlb_cache_stats
    10d45f80 l O .bss 00140000 runtime_dtlb_cache_stats
    10e85f80 l O .bss 00140000 runtime_cycles_in_tx_stats
    10fc5f80 l O .bss 00140000 runtime_transaction_stats
    11105f80 l O .bss 00140000 runtime_elision_stats
    11245f80 l O .bss 00140000 runtime_topdown_total_slots
    11385f80 l O .bss 00140000 runtime_topdown_slots_retired
    114c5f80 l O .bss 00140000 runtime_topdown_slots_issued
    11605f80 l O .bss 00140000 runtime_topdown_fetch_bubbles
    11745f80 l O .bss 00140000 runtime_topdown_recovery_bubbles

    This is due to commit 4d255766d28b1 ("perf: Bump max number of cpus
    to 1024"), because many tables are sized with MAX_NR_CPUS

    This patch gives the opportunity to redefine MAX_NR_CPUS via

    $ make EXTRA_CFLAGS=-DMAX_NR_CPUS=1

    Signed-off-by: Christophe Leroy
    Cc: Alexander Shishkin
    Cc: Peter Zijlstra
    Cc: linuxppc-dev@lists.ozlabs.org
    Link: http://lkml.kernel.org/r/20170922112043.8349468C57@po15668-vm-win7.idsi0.si.c-s.fr
    Signed-off-by: Arnaldo Carvalho de Melo

    Christophe Leroy
     

31 Jul, 2018

1 commit

  • The UAPI file byteorder/little_endian.h uses the __always_inline define
    without including the header where it is defined, linux/stddef.h, this
    ends up working in all the other distros because that file gets included
    seemingly by luck from one of the files included from little_endian.h.

    But not on Alpine:edge, that fails for all files where perf_event.h is
    included but linux/stddef.h isn't include before that.

    Adding the missing linux/stddef.h file where it breaks on Alpine:edge to
    fix that, in all other distros, that is just a very small header anyway.

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

    Arnaldo Carvalho de Melo
     

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
     

05 Mar, 2018

3 commits

  • Currently we can crash perf record when running in pipe mode, like:

    $ perf record ls | perf report
    # To display the perf.data header info, please use --header/--header-only options.
    #
    perf: Segmentation fault
    Error:
    The - file has no samples!

    The callstack of the crash is:

    0x0000000000515242 in perf_event__synthesize_event_update_name
    3513 ev = event_update_event__new(len + 1, PERF_EVENT_UPDATE__NAME, evsel->id[0]);
    (gdb) bt
    #0 0x0000000000515242 in perf_event__synthesize_event_update_name
    #1 0x00000000005158a4 in perf_event__synthesize_extra_attr
    #2 0x0000000000443347 in record__synthesize
    #3 0x00000000004438e3 in __cmd_record
    #4 0x000000000044514e in cmd_record
    #5 0x00000000004cbc95 in run_builtin
    #6 0x00000000004cbf02 in handle_internal_command
    #7 0x00000000004cc054 in run_argv
    #8 0x00000000004cc422 in main

    The reason of the crash is that the evsel does not have ids array
    allocated and the pipe's synthesize code tries to access it.

    We don't force evsel ids allocation when we have single event, because
    it's not needed. However we need it when we are in pipe mode even for
    single event as a key for evsel update event.

    Fixing this by forcing evsel ids allocation event for single event, when
    we are in pipe mode.

    Signed-off-by: Jiri Olsa
    Cc: Alexander Shishkin
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180302161354.30192-1-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     
  • # perf record -F 200000 sleep 1
    warning: Maximum frequency rate (15,000 Hz) exceeded, throttling from 200,000 Hz to 15,000 Hz.
    The limit can be raised via /proc/sys/kernel/perf_event_max_sample_rate.
    The kernel will lower it when perf's interrupts take too long.
    Use --strict-freq to disable this throttling, refusing to record.
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.019 MB perf.data (15 samples) ]
    # perf evlist -v
    cycles:ppp: size: 112, { sample_period, sample_freq }: 15000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1

    For those wanting that it fails if the desired frequency can't be used:

    # perf record --strict-freq -F 200000 sleep 1
    error: Maximum frequency rate (15,000 Hz) exceeded.
    Please use -F freq option with a lower value or consider
    tweaking /proc/sys/kernel/perf_event_max_sample_rate.
    #

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

    Arnaldo Carvalho de Melo
     
  • Add the handy '-F max' shortcut to reading and using the
    kernel.perf_event_max_sample_rate value as the user supplied
    sampling frequency:

    # perf record -F max sleep 1
    info: Using a maximum frequency rate of 15,000 Hz
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.019 MB perf.data (14 samples) ]
    # sysctl kernel.perf_event_max_sample_rate
    kernel.perf_event_max_sample_rate = 15000
    # perf evlist -v
    cycles:ppp: size: 112, { sample_period, sample_freq }: 15000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1

    # perf record -F 10 sleep 1
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.019 MB perf.data (4 samples) ]
    # perf evlist -v
    cycles:ppp: size: 112, { sample_period, sample_freq }: 10, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1
    #

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

    Arnaldo Carvalho de Melo
     

05 Feb, 2018

1 commit

  • Stephan reported we don't unset PERIOD sample type when --no-period is
    specified. Adding the unset check and reset PERIOD if --no-period is
    specified.

    Committer notes:

    Check the sample_type, it shouldn't have PERF_SAMPLE_PERIOD there when
    --no-period is used.

    Before:

    # perf record --no-period sleep 1
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.018 MB perf.data (7 samples) ]
    # perf evlist -v
    cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1
    #

    After:

    [root@jouet ~]# perf record --no-period sleep 1
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.019 MB perf.data (17 samples) ]
    [root@jouet ~]# perf evlist -v
    cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, precise_ip: 3, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1
    [root@jouet ~]#

    Reported-by: Stephane Eranian
    Signed-off-by: Jiri Olsa
    Tested-by: Arnaldo Carvalho de Melo
    Tested-by: Stephane Eranian
    Cc: Alexander Shishkin
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20180201083812.11359-3-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

07 Nov, 2017

1 commit

  • Conflicts:
    tools/perf/arch/arm/annotate/instructions.c
    tools/perf/arch/arm64/annotate/instructions.c
    tools/perf/arch/powerpc/annotate/instructions.c
    tools/perf/arch/s390/annotate/instructions.c
    tools/perf/arch/x86/tests/intel-cqm.c
    tools/perf/ui/tui/progress.c
    tools/perf/util/zlib.c

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

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
     

13 Sep, 2017

1 commit

  • USER_REGS can currently only collected implicitely with call graph
    recording. Sometimes it is useful to see them separately, and filter
    them. Add a new --user-regs option to record that is similar to
    --intr-regs, but acts on user regs.

    Signed-off-by: Andi Kleen
    Cc: Jiri Olsa
    Link: http://lkml.kernel.org/r/20170905170029.19722-1-andi@firstfloor.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Andi Kleen
     

02 Sep, 2017

1 commit

  • Support new sample type PERF_SAMPLE_PHYS_ADDR for physical address.

    Add new option --phys-data to record sample physical address.

    Signed-off-by: Kan Liang
    Tested-by: Jiri Olsa
    Acked-by: Stephane Eranian
    Cc: Andi Kleen
    Cc: Madhavan Srinivasan
    Cc: Peter Zijlstra
    Cc: Thomas Gleixner
    Link: http://lkml.kernel.org/r/1504026672-7304-2-git-send-email-kan.liang@intel.com
    [ Added missing printing in evsel.c patch sent by Jiri Olsa ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Kan Liang
     

19 Jul, 2017

1 commit

  • We create many test events before the real ones just to test specific
    features. But there's no way for attr tests to separate those test
    events from those it needs to check.

    Adding 'ready' call from the events open interface to trigger/start
    events collection for attr test.

    Signed-off-by: Jiri Olsa
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Thomas Richter
    Link: http://lkml.kernel.org/r/20170703145030.12903-4-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

14 Mar, 2017

1 commit

  • Introduce a new option to record PERF_RECORD_NAMESPACES events emitted
    by the kernel when fork, clone, setns or unshare are invoked. And update
    perf-record documentation with the new option to record namespace
    events.

    Committer notes:

    Combined it with a later patch to allow printing it via 'perf report -D'
    and be able to test the feature introduced in this patch. Had to move
    here also perf_ns__name(), that was introduced in another later patch.

    Also used PRIu64 and PRIx64 to fix the build in some enfironments wrt:

    util/event.c:1129:39: error: format '%lx' expects argument of type 'long unsigned int', but argument 6 has type 'long long unsigned int' [-Werror=format=]
    ret += fprintf(fp, "%u/%s: %lu/0x%lx%s", idx
    ^
    Testing it:

    # perf record --namespaces -a
    ^C[ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 1.083 MB perf.data (423 samples) ]
    #
    # perf report -D

    3 2028902078892 0x115140 [0xa0]: PERF_RECORD_NAMESPACES 14783/14783 - nr_namespaces: 7
    [0/net: 3/0xf0000081, 1/uts: 3/0xeffffffe, 2/ipc: 3/0xefffffff, 3/pid: 3/0xeffffffc,
    4/user: 3/0xeffffffd, 5/mnt: 3/0xf0000000, 6/cgroup: 3/0xeffffffb]

    0x1151e0 [0x30]: event: 9
    .
    . ... raw event: size 48 bytes
    . 0000: 09 00 00 00 02 00 30 00 c4 71 82 68 0c 7f 00 00 ......0..q.h....
    . 0010: a9 39 00 00 a9 39 00 00 94 28 fe 63 d8 01 00 00 .9...9...(.c....
    . 0020: 03 00 00 00 00 00 00 00 ce c4 02 00 00 00 00 00 ................

    NAMESPACES events: 1

    #

    Signed-off-by: Hari Bathini
    Acked-by: Jiri Olsa
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Alexander Shishkin
    Cc: Alexei Starovoitov
    Cc: Ananth N Mavinakayanahalli
    Cc: Aravinda Prasad
    Cc: Brendan Gregg
    Cc: Daniel Borkmann
    Cc: Eric Biederman
    Cc: Peter Zijlstra
    Cc: Sargun Dhillon
    Cc: Steven Rostedt
    Link: http://lkml.kernel.org/r/148891930386.25309.18412039920746995488.stgit@hbathini.in.ibm.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Hari Bathini
     

16 Dec, 2016

1 commit

  • Adding perf_evsel::ignore_missing_cpu_thread bool.

    When set true, it allows perf to ignore error of missing pid of perf
    event syscall.

    We remove missing thread id from the thread_map, so the rest of the
    processing like ioctl and mmap won't get disturbed with -1 fd.

    The reason for supporting this is to ease up monitoring group of pids,
    that 'disappear' before perf opens their event. This currently leads
    perf to report error and exit and makes perf record's -u option unusable
    under certain setup.

    With this change we will allow this race and ignore such failure with
    following warning:

    WARNING: Ignored open failure for pid 8605

    Signed-off-by: Jiri Olsa
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/20161213074622.GA3084@krava
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

24 Aug, 2016

1 commit


03 Aug, 2016

1 commit

  • Adding --sample-cpu option to be able to explicitly enable CPU sample
    type. Currently it's only enable implicitly in case the target is cpu
    related.

    It will be useful for following c2c record tool.

    Signed-off-by: Jiri Olsa
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1470074555-24889-8-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

16 Jul, 2016

2 commits

  • When working with overwritable ring buffer there's a inconvenience
    problem: if perf dumps data after a long period after it starts,
    non-sample events may lost, which makes following 'perf report' unable
    to identify proc name and mmap layout. For example:

    # perf record -m 4 -e raw_syscalls:* -g --overwrite --switch-output \
    dd if=/dev/zero of=/dev/null

    send SIGUSR2 after dd runs long enough. The resuling perf.data lost
    correct comm and mmap events:

    # perf script -i perf.data.2016061522374354
    perf 24478 [004] 2581325.601789: raw_syscalls:sys_exit: NR 0 = 512
    ^^^^
    Should be 'dd'
    27b2e8 syscall_slow_exit_work+0xfe2000e3 (/lib/modules/4.6.0-rc3+/build/vmlinux)
    203cc7 do_syscall_64+0xfe200117 (/lib/modules/4.6.0-rc3+/build/vmlinux)
    b18d83 return_from_SYSCALL_64+0xfe200000 (/lib/modules/4.6.0-rc3+/build/vmlinux)
    7f47c417edf0 [unknown] ([unknown])
    ^^^^^^^^^^^^
    Fail to unwind

    This patch provides a '--tail-synthesize' option, allows perf to collect
    system status when finalizing output file. In resuling output file, the
    non-sample events reflect system status when dumping data.

    After this patch:
    # perf record -m 4 -e raw_syscalls:* -g --overwrite --switch-output --tail-synthesize \
    dd if=/dev/zero of=/dev/null

    # perf script -i perf.data.2016061600544998
    dd 27364 [004] 2583244.994464: raw_syscalls:sys_enter: NR 1 (1, ...
    ^^
    Correct comm
    203a18 syscall_trace_enter_phase2+0xfe2001a8 ([kernel.kallsyms])
    203aa5 syscall_trace_enter+0xfe200055 ([kernel.kallsyms])
    203caa do_syscall_64+0xfe2000fa ([kernel.kallsyms])
    b18d83 return_from_SYSCALL_64+0xfe200000 ([kernel.kallsyms])
    d8e50 __GI___libc_write+0xffff01d9639f4010 (/tmp/oxygen_root-w00229757/lib64/libc-2.18.so)
    ^^^^^
    Correct unwind

    This option doesn't aim to solve this problem completely. If a process
    terminates before SIGUSR2, we still lost its COMM and MMAP events. For
    example, we can't unwind correctly from the final perf.data we get from
    the previous example, because when perf collects the final output file
    (when we press C-c), 'dd' has been terminated so its '/proc//mmap'
    becomes empty.

    However, this is a cheaper choice. To completely solve this problem we
    need to continously output non-sample events. To satisify the
    requirement of daemonization, we need to merge them periodically. It is
    possible but requires much more code and cycles.

    Automatically select --tail-synthesize when --overwrite is provided.

    Signed-off-by: Wang Nan
    Cc: He Kuang
    Cc: Jiri Olsa
    Cc: Masami Hiramatsu
    Cc: Namhyung Kim
    Cc: Nilay Vaish
    Cc: Zefan Li
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1468485287-33422-16-git-send-email-wangnan0@huawei.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Wang Nan
     
  • This patch allows following config terms and option:

    Globally setting events to overwrite;

    # perf record --overwrite ...

    Set specific events to be overwrite or no-overwrite.

    # perf record --event cycles/overwrite/ ...
    # perf record --event cycles/no-overwrite/ ...

    Add missing config terms and update the config term array size because
    the longest string length has changed.

    For overwritable events, it automatically selects attr.write_backward
    since perf requires it to be backward for reading.

    Test result:

    # perf record --overwrite -e syscalls:*enter_nanosleep* usleep 1
    [ perf record: Woken up 2 times to write data ]
    [ perf record: Captured and wrote 0.011 MB perf.data (1 samples) ]
    # perf evlist -v
    syscalls:sys_enter_nanosleep: type: 2, size: 112, config: 0x134, { sample_period, sample_freq }: 1, sample_type: IP|TID|TIME|CPU|PERIOD|RAW, disabled: 1, inherit: 1, mmap: 1, comm: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1, write_backward: 1
    # Tip: use 'perf evlist --trace-fields' to show fields for tracepoint events

    Signed-off-by: Wang Nan
    Tested-by: Arnaldo Carvalho de Melo
    Acked-by: Jiri Olsa
    Cc: Masami Hiramatsu
    Cc: Namhyung Kim
    Cc: Nilay Vaish
    Cc: Zefan Li
    Cc: pi3orama@163.com
    Link: http://lkml.kernel.org/r/1468485287-33422-14-git-send-email-wangnan0@huawei.com
    Signed-off-by: He Kuang
    Signed-off-by: Arnaldo Carvalho de Melo

    Wang Nan
     

18 Apr, 2016

1 commit


18 Feb, 2016

1 commit

  • Allow user to easily switch all events to user or kernel space with simple
    --all-user or --all-kernel options.

    This will be handy within perf mem/c2c wrappers to switch easily monitoring
    modes.

    Committer note:

    Testing it:

    # perf record --all-kernel --all-user -a sleep 2
    Error: option `all-user' cannot be used with all-kernel
    Usage: perf record [] []
    or: perf record [] -- []

    --all-user Configure all used events to run in user space.
    --all-kernel Configure all used events to run in kernel space.
    # perf record --all-user --all-kernel -a sleep 2
    Error: option `all-kernel' cannot be used with all-user
    Usage: perf record [] []
    or: perf record [] -- []

    --all-kernel Configure all used events to run in kernel space.
    --all-user Configure all used events to run in user space.
    # perf record --all-user -a sleep 1
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 1.416 MB perf.data (162 samples) ]
    # perf report | grep '\[k\]'
    # perf record --all-kernel -a sleep 1
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 1.423 MB perf.data (296 samples) ]
    # perf report | grep '\[\.\]'
    #

    Signed-off-by: Jiri Olsa
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1455525293-8671-2-git-send-email-jolsa@kernel.org
    [ Made those options to be mutually exclusive ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Jiri Olsa
     

01 Sep, 2015

1 commit

  • This patch modifies the -I/--int-regs option to enablepassing the name
    of the registers to sample on interrupt. Registers can be specified by
    their symbolic names. For instance on x86, --intr-regs=ax,si.

    The motivation is to reduce the size of the perf.data file and the
    overhead of sampling by only collecting the registers useful to a
    specific analysis. For instance, for value profiling, sampling only the
    registers used to passed arguements to functions.

    With no parameter, the --intr-regs still records all possible registers
    based on the architecture.

    To name registers, it is necessary to use the long form of the option,
    i.e., --intr-regs:

    $ perf record --intr-regs=si,di,r8,r9 .....

    To record any possible registers:

    $ perf record -I .....
    $ perf report --intr-regs ...

    To display the register, one can use perf report -D

    To list the available registers:

    $ perf record --intr-regs=\?
    available registers: AX BX CX DX SI DI BP SP IP FLAGS CS SS R8 R9 R10 R11 R12 R13 R14 R15

    Signed-off-by: Stephane Eranian
    Tested-by: Arnaldo Carvalho de Melo
    Cc: Adrian Hunter
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Kan Liang
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1441039273-16260-4-git-send-email-eranian@google.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Stephane Eranian
     

30 Jul, 2015

1 commit


24 Jul, 2015

1 commit


06 Jul, 2015

1 commit

  • If the option -T is used with option --per-thread, then time is still
    not sampled. Fix that by using OPT_BOOLEAN_SET to distinguish when the
    user used the -T option as opposed to the default case when timestamps
    are enabled but only for per-cpu recording.

    Signed-off-by: Adrian Hunter
    Cc: David Ahern
    Cc: Jiri Olsa
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/1436183461-1918-1-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     

20 Jun, 2015

1 commit

  • The time out to limit the individual proc map processing was hard code
    to 500ms. This patch introduce a new option --proc-map-timeout to make
    the time limit configurable.

    Signed-off-by: Kan Liang
    Cc: Andi Kleen
    Cc: David Ahern
    Cc: Ying Huang
    Link: http://lkml.kernel.org/r/1434549071-25611-2-git-send-email-kan.liang@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Kan Liang
     

06 May, 2015

1 commit

  • Add support for making snapshots of AUX area tracing data.

    Signed-off-by: Adrian Hunter
    Acked-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1430404667-10593-9-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     

29 Apr, 2015

1 commit

  • Add support for reading from the AUX area tracing mmap and synthesizing
    AUX area tracing events.

    This patch introduces an abstraction for recording AUX area data.

    Recording is initialized by auxtrace_record__init() which is a weak
    function to be implemented by the architecture to provide recording
    callbacks.

    Recording is mainly handled by auxtrace_mmap__read() and
    perf_event__synthesize_auxtrace() but there are callbacks for
    miscellaneous needs including validating and processing user options,
    populating private data in auxtrace_info_event, and freeing the
    structure when finished.

    Signed-off-by: Adrian Hunter
    Acked-by: Jiri Olsa
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Namhyung Kim
    Cc: Peter Zijlstra
    Cc: Stephane Eranian
    Link: http://lkml.kernel.org/r/1428594864-29309-5-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo

    Adrian Hunter
     

08 Apr, 2015

1 commit

  • Teach perf-record about the new perf_event_attr::{use_clockid, clockid}
    fields. Add a simple parameter to set the clock (if any) to be used for
    the events to be recorded into the data file.

    Since we store the entire perf_event_attr in the EVENT_DESC section we
    also already store the used clockid in the data file.

    Signed-off-by: Peter Zijlstra (Intel)
    Acked-by: David Ahern
    Cc: "H. Peter Anvin"
    Cc: Adrian Hunter
    Cc: Andrew Morton
    Cc: Jiri Olsa
    Cc: John Stultz
    Cc: Linus Torvalds
    Cc: Stephane Eranian
    Cc: Thomas Gleixner
    Cc: Yunlong Song
    Link: http://lkml.kernel.org/r/20150407154851.GR23123@twins.programming.kicks-ass.net
    [ Conditionally define CLOCK_BOOTTIME, at least rhel6 doesn't have it - dsahern
    Ditto for CLOCK_MONOTONIC_RAW, sles11sp2 doesn't have it - yunlong.song ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Peter Zijlstra
     

26 Mar, 2015

1 commit

  • SPARC based systems currently support up to 1024 cpus (e.g. T5-8).
    Allow perf to work on those systems.

    Signed-off-by: David Ahern
    Link: http://lkml.kernel.org/r/1427213438-127216-1-git-send-email-david.ahern@oracle.com
    Signed-off-by: Arnaldo Carvalho de Melo

    David Ahern
     

25 Feb, 2015

1 commit

  • Add an option to perf record to record running/enabled time for read
    events, similar to what stat does.

    This is useful to understand multiplexing problems.

    Right now the report support is not great, but at least report -D
    already supports it.

    Signed-off-by: Andi Kleen
    Acked-by: Jiri Olsa
    Cc: Namhyung Kim
    Link: http://lkml.kernel.org/r/1424819620-16043-1-git-send-email-andi@firstfloor.org
    [ Fixed the Documentation entry to match the OPT_BOOLEAN one ]
    Signed-off-by: Arnaldo Carvalho de Melo

    Andi Kleen
     

16 Nov, 2014

1 commit

  • Add the infrastructure to setup, collect and report the interrupt
    machine state regs which can be captured by the kernel.

    Signed-off-by: Stephane Eranian
    Signed-off-by: Peter Zijlstra (Intel)
    Cc: cebbert.lkml@gmail.com
    Cc: Adrian Hunter
    Cc: Andi Kleen
    Cc: Arnaldo Carvalho de Melo
    Cc: David Ahern
    Cc: Don Zickus
    Cc: Jean Pihet
    Cc: Jiri Olsa
    Cc: Jiri Olsa
    Cc: Linus Torvalds
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Stephane Eranian
    Cc: Waiman Long
    Cc: Wang Nan
    Link: http://lkml.kernel.org/r/1411559322-16548-4-git-send-email-eranian@google.com
    Signed-off-by: Ingo Molnar

    Stephane Eranian
     

29 Oct, 2014

1 commit

  • Those are shared with other builtin commands like kvm, script. So
    make it accessable from them. This is a preparation of later change
    that limiting possible options.

    Signed-off-by: Namhyung Kim
    Acked-by: Hemant Kumar
    Cc: Alexander Yarygin
    Cc: David Ahern
    Cc: Hemant Kumar
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Masami Hiramatsu
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1413990949-13953-3-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

26 Sep, 2014

1 commit

  • So that all callchain config parameters can be read/written to a single
    place. It's a preparation to consolidate handling of all callchain
    options.

    Reviewed-by: David Ahern
    Signed-off-by: Namhyung Kim
    Acked-by: Jiri Olsa
    Cc: David Ahern
    Cc: Ingo Molnar
    Cc: Jiri Olsa
    Cc: Milian Wolff
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1411434104-5307-3-git-send-email-namhyung@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo

    Namhyung Kim
     

05 May, 2014

2 commits

  • Into tools/include/linux/compiler.h header.

    Acked-by: Arnaldo Carvalho de Melo
    Acked-by: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Corey Ashford
    Cc: Borislav Petkov
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/n/tip-9sk90owm370kuq3f0ssjjui2@git.kernel.org
    Signed-off-by: Jiri Olsa

    Jiri Olsa
     
  • Into perf-sys.h header, as requested by Peter:
    http://lkml.kernel.org/r/20140502115201.GI30445@twins.programming.kicks-ass.net

    Adding HAVE_ATTR_TEST define to turn off/on the attribute
    test code in the sys_perf_event_open function.

    Requested-by: Peter Zijlstra
    Acked-by: Arnaldo Carvalho de Melo
    Acked-by: Peter Zijlstra
    Cc: Arnaldo Carvalho de Melo
    Cc: Borislav Petkov
    Cc: Corey Ashford
    Cc: David Ahern
    Cc: Frederic Weisbecker
    Cc: Ingo Molnar
    Cc: Namhyung Kim
    Cc: Paul Mackerras
    Cc: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1399293219-8732-10-git-send-email-jolsa@kernel.org
    Signed-off-by: Jiri Olsa

    Jiri Olsa