Re: [PATCH] perf stat: Fix uncore event mixed metric with workload error issue

From: Jiri Olsa
Date: Tue Apr 28 2020 - 06:52:10 EST


On Mon, Apr 27, 2020 at 10:41:16PM +0800, Jin Yao wrote:

SNIP

> index 9207b6c45475..b01ee06b1965 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -1841,8 +1841,8 @@ static void setup_system_wide(int forks)
> * conditions is met:
> *
> * - there's no workload specified
> - * - there is workload specified but all requested
> - * events are system wide events
> + * - there is workload specified but at least one requested
> + * event is system wide event
> */
> if (!target__none(&target))
> return;
> @@ -1851,13 +1851,16 @@ static void setup_system_wide(int forks)
> target.system_wide = true;
> else {
> struct evsel *counter;
> + bool system_wide = false;
>
> evlist__for_each_entry(evsel_list, counter) {
> - if (!counter->core.system_wide)
> - return;
> + if (counter->core.system_wide) {
> + system_wide = true;
> + break;
> + }

I wonder this would break some expectations.. would it be
more safe to detect duration event and bypass it from the
decission? but maybe the case I'm worried about is not a
problem at all.. Andi?

jirka

> }
>
> - if (evsel_list->core.nr_entries)
> + if (evsel_list->core.nr_entries && system_wide)
> target.system_wide = true;
> }
> }
> --
> 2.17.1
>