All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Ingo Molnar <mingo@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	James Clark <james.clark@linaro.org>,
	Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
	Adrian Hunter <adrian.hunter@intel.com>,
	Clark Williams <williams@redhat.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [PATCH v4 14/21] perf test attr: Leave out the events of the other core PMUs
Date: Fri, 16 Oct 2026 18:20:55 -0300	[thread overview]
Message-ID: <20261016212102.76550-15-acme@kernel.org> (raw)
In-Reply-To: <20261016212102.76550-1-acme@kernel.org>

From: Arnaldo Carvalho de Melo <acme@redhat.com>

On a hybrid machine the default stat metrics are opened on each core PMU,
and the events of the other one have their own encodings: on an i7-14700K
cpu_atom (type 10) opens UOPS_RETIRED.ALL, config 194, which the
expectations, written for cpu_core (type 4), don't name:

  expected type=4, got 10
  expected config=209|391, got 194

The test already masks the core PMU type out of 'config' for the legacy
events, but raw events keep their type and encoding, so leave out the
events of the core PMUs no expectation names, like the dummy tracking
event.  Core PMUs are found as perf finds them: 'cpu' or 'cpum_cf', or a
PMU with a 'cpus' file in sysfs.  Nothing is left out unless an
expectation names a core PMU, so single core PMU machines and the tests
with only legacy expectations are not affected.

Assisted-by: LLM
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/tests/shell/lib/attr.py | 39 ++++++++++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/tools/perf/tests/shell/lib/attr.py b/tools/perf/tests/shell/lib/attr.py
index 47a09f00000ff762..d485a491c717c96c 100644
--- a/tools/perf/tests/shell/lib/attr.py
+++ b/tools/perf/tests/shell/lib/attr.py
@@ -563,6 +563,44 @@ class Test(object):
         for event in self.result.values():
             event.tracking_moved_to_dummy = moved
 
+    def drop_other_core_pmu_events(self, devices='/sys/bus/event_source/devices'):
+        """
+        Leave out the events of the other core PMUs, which have their own
+        encodings, when the expectations name one of the core PMUs.
+        """
+        asked = set()
+        for event in self.expect.values():
+            types = event.get('type', '').split('|')
+            if '*' in types:
+                return
+            asked.update(types)
+
+        try:
+            names = os.listdir(devices)
+        except OSError:
+            return
+
+        core = set()
+        for name in names:
+            path = os.path.join(devices, name)
+            has_cpus = os.path.exists(os.path.join(path, 'cpus'))
+            if name not in ('cpu', 'cpum_cf') and not has_cpus:
+                continue
+            try:
+                with open(os.path.join(path, 'type'), encoding='utf-8') as f:
+                    core.add(f.read().strip())
+            except OSError:
+                pass
+
+        if not core & asked:
+            return
+
+        others = core - asked
+        for name, event in list(self.result.items()):
+            if event.get('type') in others:
+                log.debug("      dropping other core PMU event [%s]", name)
+                del self.result[name]
+
     def compare(self, expect, result, strict_groups=True):
         match = {}
 
@@ -645,6 +683,7 @@ class Test(object):
                 event.recorded = True
 
             self.drop_dummy_tracking_events()
+            self.drop_other_core_pmu_events()
 
             # resolve group_fd to event names
             self.resolve_groups(self.expect)
-- 
2.55.0


  parent reply	other threads:[~2026-10-16 21:21 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-16 21:20 [PATCH v4 00/21] perf test attr: Report the failures again and cope with more than one core PMU Arnaldo Carvalho de Melo
2026-10-16 21:20 ` [PATCH v4 01/21] perf test attr: Fix record dwarf sample_type expectation Arnaldo Carvalho de Melo
2026-10-16 21:23   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 02/21] perf python: Free the parse error entries when parsing fails Arnaldo Carvalho de Melo
2026-10-16 21:23   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 03/21] perf test attr: Allow tests to require a core PMU Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 04/21] perf test attr: Fix legacy event encodings in group tests Arnaldo Carvalho de Melo
2026-10-16 21:25   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 05/21] perf test attr: Fix default stat metrics expectations Arnaldo Carvalho de Melo
2026-10-16 21:43   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 06/21] perf test attr: Relax group checking for ungrouped expectations Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 07/21] perf evsel: Mark the event as supported when retrying an open Arnaldo Carvalho de Melo
2026-10-16 21:25   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 08/21] perf test attr: Ignore the core PMU type perf puts in 'config' Arnaldo Carvalho de Melo
2026-10-16 21:25   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 09/21] perf evsel: Don't dump probe events to PERF_TEST_ATTR Arnaldo Carvalho de Melo
2026-10-16 21:23   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 10/21] perf evsel: Close the fds opened so far when disabling missing features Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 11/21] perf test attr: Introduce mask_bits(), generalizing hide_core_pmu_type() Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 12/21] perf test attr: Accept either sample id bit perf asks for Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 13/21] perf test attr: Ignore the dummy tracking event and the terms it carries Arnaldo Carvalho de Melo
2026-10-16 21:25   ` sashiko-bot
2026-10-16 21:20 ` Arnaldo Carvalho de Melo [this message]
2026-10-16 21:26   ` [PATCH v4 14/21] perf test attr: Leave out the events of the other core PMUs sashiko-bot
2026-10-16 21:20 ` [PATCH v4 15/21] perf test attr: Ignore the group read_format bit the PMU count can remove Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 16/21] perf test attr: State, spelled out in a line, why a test is skipped Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 17/21] perf tests: Introduce a 'needs_mlock' suite flag Arnaldo Carvalho de Melo
2026-10-16 21:27   ` sashiko-bot
2026-10-16 21:20 ` [PATCH v4 18/21] perf tests: Mark the C tests mapping perf ring buffers Arnaldo Carvalho de Melo
2026-10-16 21:24   ` sashiko-bot
2026-10-16 21:21 ` [PATCH v4 19/21] perf tests: Mark the shell tests not " Arnaldo Carvalho de Melo
2026-10-16 21:26   ` sashiko-bot
2026-10-16 21:21 ` [PATCH v4 20/21] perf mutex: Add a robust, process-shared mutex initializer Arnaldo Carvalho de Melo
2026-10-16 21:25   ` sashiko-bot
2026-10-16 21:21 ` [PATCH v4 21/21] perf test: Take turns using the perf mlock budget in the mmaping tests Arnaldo Carvalho de Melo
2026-10-16 21:28   ` sashiko-bot
2026-10-16 22:39 ` [PATCH v4 00/21] perf test attr: Report the failures again and cope with more than one core PMU Ian Rogers

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=20261016212102.76550-15-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=acme@redhat.com \
    --cc=adrian.hunter@intel.com \
    --cc=irogers@google.com \
    --cc=james.clark@linaro.org \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=williams@redhat.com \
    /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.