diff options
author | Arnaldo Carvalho de Melo | 2014-02-18 13:33:10 +0100 |
---|---|---|
committer | Arnaldo Carvalho de Melo | 2014-02-18 13:33:10 +0100 |
commit | e985a6c675950af10131fdce4d46481d655c6b60 (patch) | |
tree | 970b5d7493958b6717a2c6ef1938bdaeba58129f /tools/perf/util/parse-events.c | |
parent | perf/x86/p4: Block PMIs on init to prevent a stream of unkown NMIs (diff) | |
parent | perf trace: Fix ioctl 'request' beautifier build problems on !(i386 || x86_64... (diff) | |
download | kernel-qcow2-linux-e985a6c675950af10131fdce4d46481d655c6b60.tar.gz kernel-qcow2-linux-e985a6c675950af10131fdce4d46481d655c6b60.tar.xz kernel-qcow2-linux-e985a6c675950af10131fdce4d46481d655c6b60.zip |
Merge remote-tracking branch 'acme/perf/urgent' into perf/core
To have some 'perf probe' related fixes needed for further devel work in
this tool.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/parse-events.c')
-rw-r--r-- | tools/perf/util/parse-events.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index d248fca6d7ed..1e15df10a88c 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -1091,12 +1091,12 @@ int is_valid_tracepoint(const char *event_string) static bool is_event_supported(u8 type, unsigned config) { bool ret = true; + int open_return; struct perf_evsel *evsel; struct perf_event_attr attr = { .type = type, .config = config, .disabled = 1, - .exclude_kernel = 1, }; struct { struct thread_map map; @@ -1108,7 +1108,20 @@ static bool is_event_supported(u8 type, unsigned config) evsel = perf_evsel__new(&attr); if (evsel) { - ret = perf_evsel__open(evsel, NULL, &tmap.map) >= 0; + open_return = perf_evsel__open(evsel, NULL, &tmap.map); + ret = open_return >= 0; + + if (open_return == -EACCES) { + /* + * This happens if the paranoid value + * /proc/sys/kernel/perf_event_paranoid is set to 2 + * Re-run with exclude_kernel set; we don't do that + * by default as some ARM machines do not support it. + * + */ + evsel->attr.exclude_kernel = 1; + ret = perf_evsel__open(evsel, NULL, &tmap.map) >= 0; + } perf_evsel__delete(evsel); } |