• Zhengjun Xing's avatar
    perf evlist: Fix failed to use cpu list for uncore events · 8a3d2ee0
    Zhengjun Xing authored
    The 'perf record' and 'perf stat' commands have supported the option
    '-C/--cpus' to count or collect only on the list of CPUs provided.
    
    Commit 1d3351e6 ("perf tools: Enable on a list of CPUs for
    hybrid") add it to be supported for hybrid. For hybrid support, it
    checks the cpu list are available on hybrid PMU. But when we test only
    uncore events(or events not in cpu_core and cpu_atom), there is a bug:
    
    Before:
    
     # perf stat -C0  -e uncore_clock/clockticks/ sleep 1
       failed to use cpu list 0
    
    In this case, for uncore event, its pmu_name is not cpu_core or
    cpu_atom, so in evlist__fix_hybrid_cpus, perf_pmu__find_hybrid_pmu
    should return NULL,both events_nr and unmatched_count should be 0 ,then
    the cpu list check function evlist__fix_hybrid_cpus return -1 and the
    error "failed to use cpu list 0" will happen. Bypass "events_nr=0" case
    then the issue is fixed.
    
    After:
    
     # perf stat -C0  -e uncore_clock/clockticks/ sleep 1
    
     Performance counter stats for 'CPU(s) 0':
    
           195,476,873      uncore_clock/clockticks/
    
           1.004518677 seconds time elapsed
    
    When testing with at least one core event and uncore events, it has no
    issue.
    
     # perf stat -C0  -e cpu_core/cpu-cycles/,uncore_clock/clockticks/ sleep 1
    
     Performance counter stats for 'CPU(s) 0':
    
             5,993,774      cpu_core/cpu-cycles/
           301,025,912      uncore_clock/clockticks/
    
           1.003964934 seconds time elapsed
    
    Fixes: 1d3351e6 ("perf tools: Enable on a list of CPUs for hybrid")
    Reviewed-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Signed-off-by: default avatarZhengjun Xing <zhengjun.xing@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: alexander.shishkin@intel.com
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jin Yao <yao.jin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lore.kernel.org/lkml/20220218093127.1844241-1-zhengjun.xing@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    8a3d2ee0
evlist-hybrid.c 3.97 KB