All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dapeng Mi <dapeng1.mi@linux.intel.com>
To: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Kan Liang <kan.liang@linux.intel.com>
Cc: linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org,
	Dapeng Mi <dapeng1.mi@intel.com>,
	Dapeng Mi <dapeng1.mi@linux.intel.com>
Subject: [PATCH 2/2] perf x86/topdown: Refine helper arch_is_topdown_metrics()
Date: Fri, 11 Oct 2024 11:02:07 +0000	[thread overview]
Message-ID: <20241011110207.1032235-2-dapeng1.mi@linux.intel.com> (raw)
In-Reply-To: <20241011110207.1032235-1-dapeng1.mi@linux.intel.com>

Leverage the existed function perf_pmu__name_from_config() to check if
an event is topdown metrics event. perf_pmu__name_from_config() goes
through the defined formats and figures out the config of pre-defined
topdown events.

This avoids to figure out the config of topdown pre-defined events with
hard-coded format strings "event=" and "umask=" and provides more
flexibility.

Suggested-by: Ian Rogers <irogers@google.com>
Signed-off-by: Dapeng Mi <dapeng1.mi@linux.intel.com>
---
 tools/perf/arch/x86/util/topdown.c | 39 +++++++-----------------------
 1 file changed, 9 insertions(+), 30 deletions(-)

diff --git a/tools/perf/arch/x86/util/topdown.c b/tools/perf/arch/x86/util/topdown.c
index cb2c64928bc4..f63747d0abdf 100644
--- a/tools/perf/arch/x86/util/topdown.c
+++ b/tools/perf/arch/x86/util/topdown.c
@@ -41,43 +41,22 @@ bool arch_is_topdown_slots(const struct evsel *evsel)
 	return false;
 }
 
-static int compare_topdown_event(void *vstate, struct pmu_event_info *info)
-{
-	int *config = vstate;
-	int event = 0;
-	int umask = 0;
-	char *str;
-
-	if (!strcasestr(info->name, "topdown"))
-		return 0;
-
-	str = strcasestr(info->str, "event=");
-	if (str)
-		sscanf(str, "event=%x", &event);
-
-	str = strcasestr(info->str, "umask=");
-	if (str)
-		sscanf(str, "umask=%x", &umask);
-
-	if (event == 0 && *config == (event | umask << 8))
-		return 1;
-
-	return 0;
-}
-
 bool arch_is_topdown_metrics(const struct evsel *evsel)
 {
-	struct perf_pmu *pmu = evsel__find_pmu(evsel);
 	int config = evsel->core.attr.config;
+	const char *name_from_config;
+	struct perf_pmu *pmu;
 
-	if (!pmu || !pmu->is_core)
+	/* All topdown events have an event code of 0. */
+	if ((config & 0xFF) != 0)
 		return false;
 
-	if (perf_pmu__for_each_event(pmu, false, &config,
-				     compare_topdown_event))
-		return true;
+	pmu = evsel__find_pmu(evsel);
+	if (!pmu || !pmu->is_core)
+		return false;
 
-	return false;
+	name_from_config = perf_pmu__name_from_config(pmu, config);
+	return name_from_config && strcasestr(name_from_config, "topdown");
 }
 
 /*
-- 
2.40.1


  reply	other threads:[~2024-10-11  8:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-11 11:02 [PATCH 1/2] perf x86/topdown: Make topdown metrics comparators be symmetric Dapeng Mi
2024-10-11 11:02 ` Dapeng Mi [this message]
2024-10-16 17:37   ` [PATCH 2/2] perf x86/topdown: Refine helper arch_is_topdown_metrics() Namhyung Kim
2024-10-16 17:55     ` Ian Rogers
2024-10-16 17:56 ` [PATCH 1/2] perf x86/topdown: Make topdown metrics comparators be symmetric Ian Rogers
2024-10-17 16:39 ` Namhyung Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241011110207.1032235-2-dapeng1.mi@linux.intel.com \
    --to=dapeng1.mi@linux.intel.com \
    --cc=acme@kernel.org \
    --cc=adrian.hunter@intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=dapeng1.mi@intel.com \
    --cc=irogers@google.com \
    --cc=kan.liang@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.