• Namhyung Kim's avatar
    perf evsel: Fix missing exclude_{host,guest} setting · 3500eeeb
    Namhyung Kim authored
    The current logic for the perf missing feature has a bug that it can
    wrongly clear some modifiers like G or H.  Actually some PMUs don't
    support any filtering or exclusion while others do.  But we check it as
    a global feature.
    
    For example, the cycles event can have 'G' modifier to enable it only in
    the guest mode on x86.  When you don't run any VMs it'll return 0.
    
      # perf stat -a -e cycles:G sleep 1
    
        Performance counter stats for 'system wide':
    
                        0      cycles:G
    
              1.000721670 seconds time elapsed
    
    But when it's used with other pmu events that don't support G modifier,
    it'll be reset and return non-zero values.
    
      # perf stat -a -e cycles:G,msr/tsc/ sleep 1
    
        Performance counter stats for 'system wide':
    
              538,029,960      cycles:G
           16,924,010,738      msr/tsc/
    
              1.001815327 seconds time elapsed
    
    This is because of the missing feature detection logic being global.
    Add a hashmap to set pmu-specific exclude_host/guest features.
    
    Committer notes:
    
    Fix 'perf test python' by adding a stub for evsel__find_pmu() in
    tools/perf/util/python.c, document that it is used so far only for the
    above reasons so that if anybody needs this in the python binding
    usecases, we can revisit this.
    Reported-by: default avatarStephane Eranian <eranian@google.com>
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Link: http://lore.kernel.org/lkml/20211105205847.120950-1-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    3500eeeb
python.c 38.3 KB