perf: Do not get values from disabled counters in group format read
It's possible some of the counters in the group could be disabled when sampling member of the event group is reading the rest via PERF_SAMPLE_READ sample type processing. Disabled counters could then produce wrong numbers. Fixing that by reading only enabled counters for PERF_SAMPLE_READ sample type processing. Signed-off-by: Jiri Olsa <jolsa@redhat.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/n/tip-wwkjb0bbcuslnz0klrmqi26r@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
cf4957f17f
commit
6f5ab0019f
1 changed files with 2 additions and 1 deletions
|
@ -4388,7 +4388,8 @@ static void perf_output_read_group(struct perf_output_handle *handle,
|
|||
list_for_each_entry(sub, &leader->sibling_list, group_entry) {
|
||||
n = 0;
|
||||
|
||||
if (sub != event)
|
||||
if ((sub != event) &&
|
||||
(sub->state == PERF_EVENT_STATE_ACTIVE))
|
||||
sub->pmu->read(sub);
|
||||
|
||||
values[n++] = perf_event_count(sub);
|
||||
|
|
Loading…
Reference in a new issue