• Kan Liang's avatar
    perf pmu: Add support for PMU capabilities · 9fbc61f8
    Kan Liang authored
    The PMU capabilities information, which is located at
    /sys/bus/event_source/devices/<dev>/caps, is required by perf tool.  For
    example, the max LBR information is required to stitch LBR call stack.
    
    Add perf_pmu__caps_parse() to parse the PMU capabilities information.
    The information is stored in a list.
    
    The following patch will store the capabilities information in perf
    header.
    
    Committer notes:
    
    Here's an example of such directories and its files in an i5 7th gen
    machine:
    
      [root@seventh ~]# ls -lad /sys/bus/event_source/devices/*/caps
      drwxr-xr-x. 2 root root 0 Apr 14 13:33 /sys/bus/event_source/devices/cpu/caps
      drwxr-xr-x. 2 root root 0 Apr 14 13:33 /sys/bus/event_source/devices/intel_pt/caps
      [root@seventh ~]# ls -la /sys/bus/event_source/devices/intel_pt/caps
      total 0
      drwxr-xr-x. 2 root root    0 Apr 14 13:33 .
      drwxr-xr-x. 5 root root    0 Apr 14 13:12 ..
      -r--r--r--. 1 root root 4096 Apr 16 13:10 cr3_filtering
      -r--r--r--. 1 root root 4096 Apr 16 11:42 cycle_thresholds
      -r--r--r--. 1 root root 4096 Apr 16 13:10 ip_filtering
      -r--r--r--. 1 root root 4096 Apr 16 13:10 max_subleaf
      -r--r--r--. 1 root root 4096 Apr 14 13:33 mtc
      -r--r--r--. 1 root root 4096 Apr 14 13:33 mtc_periods
      -r--r--r--. 1 root root 4096 Apr 16 13:10 num_address_ranges
      -r--r--r--. 1 root root 4096 Apr 16 13:10 output_subsys
      -r--r--r--. 1 root root 4096 Apr 16 13:10 payloads_lip
      -r--r--r--. 1 root root 4096 Apr 16 13:10 power_event_trace
      -r--r--r--. 1 root root 4096 Apr 14 13:33 psb_cyc
      -r--r--r--. 1 root root 4096 Apr 14 13:33 psb_periods
      -r--r--r--. 1 root root 4096 Apr 16 13:10 ptwrite
      -r--r--r--. 1 root root 4096 Apr 16 13:10 single_range_output
      -r--r--r--. 1 root root 4096 Apr 16 12:03 topa_multiple_entries
      -r--r--r--. 1 root root 4096 Apr 16 13:10 topa_output
      [root@seventh ~]# cat /sys/bus/event_source/devices/intel_pt/caps/topa_output
      1
      [root@seventh ~]# cat /sys/bus/event_source/devices/intel_pt/caps/topa_multiple_entries
      1
      [root@seventh ~]# cat /sys/bus/event_source/devices/intel_pt/caps/mtc
      1
      [root@seventh ~]# cat /sys/bus/event_source/devices/intel_pt/caps/power_event_trace
      0
      [root@seventh ~]#
    
      [root@seventh ~]# ls -la /sys/bus/event_source/devices/cpu/caps/
      total 0
      drwxr-xr-x. 2 root root    0 Apr 14 13:33 .
      drwxr-xr-x. 6 root root    0 Apr 14 13:12 ..
      -r--r--r--. 1 root root 4096 Apr 16 13:10 branches
      -r--r--r--. 1 root root 4096 Apr 14 13:33 max_precise
      -r--r--r--. 1 root root 4096 Apr 16 13:10 pmu_name
      [root@seventh ~]# cat /sys/bus/event_source/devices/cpu/caps/max_precise
      3
      [root@seventh ~]# cat /sys/bus/event_source/devices/cpu/caps/branches
      32
      [root@seventh ~]# cat /sys/bus/event_source/devices/cpu/caps/pmu_name
      skylake
      [root@seventh ~]#
    
    Wow, first time I've heard about
    /sys/bus/event_source/devices/cpu/caps/max_precise, I think I'll use it!
    :-)
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Reviewed-by: default avatarAndi Kleen <ak@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexey Budankov <alexey.budankov@linux.intel.com>
    Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Pavel Gerasimov <pavel.gerasimov@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Vitaly Slobodskoy <vitaly.slobodskoy@intel.com>
    Link: http://lore.kernel.org/lkml/20200319202517.23423-2-kan.liang@linux.intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    9fbc61f8
pmu.h 3.42 KB