lkml.org 
[lkml]   [2018]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 138/183] perf evsel: Fix period/freq terms setup
    Date
    4.14-stable review patch.  If anyone has any objections, please let me know.

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

    From: Jiri Olsa <jolsa@kernel.org>


    [ Upstream commit 49c0ae80eb32426fa133246200628e529067c595 ]

    Stephane reported that we don't set properly PERIOD sample type for
    events with period term defined.

    Before:
    $ perf record -e cpu/cpu-cycles,period=1000/u ls
    $ perf evlist -v
    cpu/cpu-cycles,period=1000/u: ... sample_type: IP|TID|TIME|PERIOD, ...

    After:
    $ perf record -e cpu/cpu-cycles,period=1000/u ls
    $ perf evlist -v
    cpu/cpu-cycles,period=1000/u: ... sample_type: IP|TID|TIME, ...

    Setting PERIOD sample type based on period term setup.

    Committer note:

    When we use -c or a period=N term in the event definition, then we don't
    need to ask the kernel, for this event, via perf_event_attr.sample_type
    |= PERF_SAMPLE_PERIOD, to put the event period in each sample for this
    event, as we know it already, it is in perf_event_attr.sample_period.

    Reported-by: Stephane Eranian <eranian@google.com>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Tested-by: Stephane Eranian <eranian@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20180201083812.11359-2-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/perf/util/evsel.c | 2 ++
    1 file changed, 2 insertions(+)

    --- a/tools/perf/util/evsel.c
    +++ b/tools/perf/util/evsel.c
    @@ -736,12 +736,14 @@ static void apply_config_terms(struct pe
    if (!(term->weak && opts->user_interval != ULLONG_MAX)) {
    attr->sample_period = term->val.period;
    attr->freq = 0;
    + perf_evsel__reset_sample_bit(evsel, PERIOD);
    }
    break;
    case PERF_EVSEL__CONFIG_TERM_FREQ:
    if (!(term->weak && opts->user_freq != UINT_MAX)) {
    attr->sample_freq = term->val.freq;
    attr->freq = 1;
    + perf_evsel__set_sample_bit(evsel, PERIOD);
    }
    break;
    case PERF_EVSEL__CONFIG_TERM_TIME:

    \
     
     \ /
      Last update: 2018-04-25 12:59    [W:4.178 / U:0.588 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site