perf metric: "Compat" supports regular expression matching identifiers
authorJing Zhang <renyu.zj@linux.alibaba.com>
Wed, 27 Sep 2023 05:59:46 +0000 (13:59 +0800)
committerNamhyung Kim <namhyung@kernel.org>
Thu, 28 Sep 2023 04:01:46 +0000 (21:01 -0700)
The jevent "Compat" is used for uncore PMU alias or metric definitions.

The same PMU driver has different PMU identifiers due to different
hardware versions and types, but they may have some common PMU metric.
Since a Compat value can only match one identifier, when adding the
same metric to PMUs with different identifiers, each identifier needs
to be defined once, which is not streamlined enough.

So let "Compat" support using regular expression to match multiple
identifiers for uncore PMU metric.

Signed-off-by: Jing Zhang <renyu.zj@linux.alibaba.com>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Tested-by: Ian Rogers <irogers@google.com>
Cc: James Clark <james.clark@arm.com>
Cc: Will Deacon <will@kernel.org>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: Shuai Xue <xueshuai@linux.alibaba.com>
Cc: Zhuo Song <zhuo.song@linux.alibaba.com>
Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-doc@vger.kernel.org
Link: https://lore.kernel.org/r/1695794391-34817-3-git-send-email-renyu.zj@linux.alibaba.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
tools/perf/util/metricgroup.c

index 6231044a491e2b032b7947fb914cce53621157c8..0484736d9fe440f312999bd33a60c0765bdd3032 100644 (file)
@@ -498,7 +498,7 @@ static int metricgroup__sys_event_iter(const struct pmu_metric *pm,
 
        while ((pmu = perf_pmus__scan(pmu))) {
 
-               if (!pmu->id || strcmp(pmu->id, pm->compat))
+               if (!pmu->id || !pmu_uncore_identifier_match(pm->compat, pmu->id))
                        continue;
 
                return d->fn(pm, table, d->data);