lkml.org 
[lkml]   [2019]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 25/39] perf intel-pt: Fix error with config term "pt=0"
    Date
    4.9-stable review patch.  If anyone has any objections, please let me know.

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

    [ Upstream commit 1c6f709b9f96366cc47af23c05ecec9b8c0c392d ]

    Users should never use 'pt=0', but if they do it may give a meaningless
    error:

    $ perf record -e intel_pt/pt=0/u uname
    Error:
    The sys_perf_event_open() syscall returned with 22 (Invalid argument) for
    event (intel_pt/pt=0/u).

    Fix that by forcing 'pt=1'.

    Committer testing:

    # perf record -e intel_pt/pt=0/u uname
    Error:
    The sys_perf_event_open() syscall returned with 22 (Invalid argument) for event (intel_pt/pt=0/u).
    /bin/dmesg | grep -i perf may provide additional information.

    # perf record -e intel_pt/pt=0/u uname
    pt=0 doesn't make sense, forcing pt=1
    Linux
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.020 MB perf.data ]
    #

    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lkml.kernel.org/r/b7c5b4e5-9497-10e5-fd43-5f3e4a0fe51d@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    tools/perf/arch/x86/util/intel-pt.c | 11 +++++++++++
    1 file changed, 11 insertions(+)

    diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c
    index 90fa2286edcf..c88adcbf966e 100644
    --- a/tools/perf/arch/x86/util/intel-pt.c
    +++ b/tools/perf/arch/x86/util/intel-pt.c
    @@ -522,10 +522,21 @@ static int intel_pt_validate_config(struct perf_pmu *intel_pt_pmu,
    struct perf_evsel *evsel)
    {
    int err;
    + char c;

    if (!evsel)
    return 0;

    + /*
    + * If supported, force pass-through config term (pt=1) even if user
    + * sets pt=0, which avoids senseless kernel errors.
    + */
    + if (perf_pmu__scan_file(intel_pt_pmu, "format/pt", "%c", &c) == 1 &&
    + !(evsel->attr.config & 1)) {
    + pr_warning("pt=0 doesn't make sense, forcing pt=1\n");
    + evsel->attr.config |= 1;
    + }
    +
    err = intel_pt_val_config_term(intel_pt_pmu, "caps/cycle_thresholds",
    "cyc_thresh", "caps/psb_cyc",
    evsel->attr.config);
    --
    2.19.1


    \
     
     \ /
      Last update: 2019-01-24 21:07    [W:4.100 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site