• Ian Rogers's avatar
    perf parse-events: Support hardware events as terms · 5ea8f2cc
    Ian Rogers authored
    An event like "cpu/instructions/" typically parses due to there being
    a sysfs event called instructions. On hybrid recursive parsing means
    that the hardware event is encoded in the attribute, with the PMU
    being placed in the high bits of the config:
    
    '''
    $ perf stat -vv -e 'cpu_core/cycles/' true
    ...
    ------------------------------------------------------------
    perf_event_attr:
      size                             136
      config                           0x400000000
      sample_type                      IDENTIFIER
      read_format                      TOTAL_TIME_ENABLED|TOTAL_TIME_RUNNING
      disabled                         1
      inherit                          1
      enable_on_exec                   1
      exclude_guest                    1
    ------------------------------------------------------------
    '''
    
    Make this behavior the default by adding a new term type and token for
    hardware events. The token gathers both the numeric config and the
    parsed name, so that if the token appears like "cycles/name=cycles/"
    then the token can be handled like a name. The numeric value isn't
    sufficient to distinguish say "cpu-cycles" from "cycles".
    
    Extend the parse-events test so that all current non-PMU hardware
    parsing tests, also test with the PMU cpu - more than half the change.
    Signed-off-by: default avatarIan Rogers <irogers@google.com>
    Tested-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Ahmad Yasin <ahmad.yasin@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
    Cc: Caleb Biggers <caleb.biggers@intel.com>
    Cc: Edward Baker <edward.baker@intel.com>
    Cc: Florian Fischer <florian.fischer@muhq.space>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: James Clark <james.clark@arm.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Garry <john.g.garry@oracle.com>
    Cc: Kajol Jain <kjain@linux.ibm.com>
    Cc: Kang Minchul <tegongkang@gmail.com>
    Cc: Leo Yan <leo.yan@linaro.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Perry Taylor <perry.taylor@intel.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Bangoria <ravi.bangoria@amd.com>
    Cc: Rob Herring <robh@kernel.org>
    Cc: Samantha Alt <samantha.alt@intel.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
    Cc: Weilin Wang <weilin.wang@intel.com>
    Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Link: https://lore.kernel.org/r/20230502223851.2234828-34-irogers@google.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    5ea8f2cc
parse-events.c 67.4 KB