Inherit bit is useless for a system wide evsel [1]. Further kernel improvements are giving more constrain [2] on inherit events. This patch set inherit bit to 0 to avoid potential constrains.
[1] http://lkml.kernel.org/r/[email protected] [2] http://lkml.kernel.org/r/[email protected] Signed-off-by: Wang Nan <[email protected]> Cc: Arnaldo Carvalho de Melo <[email protected]> Cc: Alexei Starovoitov <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Li Zefan <[email protected]> Cc: [email protected] Link: http://lkml.kernel.org/n/[email protected] --- evsel->system_wide doesn't correct reflect whether this evsel is system wide or not, so checks pid when invoking perf_event_open, and it is always correct. --- tools/perf/util/evsel.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index 5566b16..e2d6c9a 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -1337,6 +1337,7 @@ retry_sample_id: for (thread = 0; thread < nthreads; thread++) { int group_fd; + struct perf_event_attr attr; if (!evsel->cgrp && !evsel->system_wide) pid = thread_map__pid(threads, thread); @@ -1346,7 +1347,10 @@ retry_open: pr_debug2("sys_perf_event_open: pid %d cpu %d group_fd %d flags %#lx\n", pid, cpus->map[cpu], group_fd, flags); - FD(evsel, cpu, thread) = sys_perf_event_open(&evsel->attr, + attr = evsel->attr; + if (pid == -1) + attr.inherit = 0; + FD(evsel, cpu, thread) = sys_perf_event_open(&attr, pid, cpus->map[cpu], group_fd, flags); -- 1.8.3.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

