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
> 

Reply via email to