From: James Clark <james.clark@arm.com>
To: linux-perf-users@vger.kernel.org, irogers@google.com,
kan.liang@linux.intel.com
Cc: mark.rutland@arm.com, James Clark <james.clark@arm.com>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Changbin Du <changbin.du@huawei.com>,
Yang Jihong <yangjihong1@huawei.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH v2] perf evlist: Fix evlist__new_default() for > 1 core PMU
Date: Tue, 23 Jan 2024 10:27:27 +0000 [thread overview]
Message-ID: <20240123102728.239147-1-james.clark@arm.com> (raw)
In-Reply-To: <20240122155436.185089-1-james.clark@arm.com>
The 'Session topology' test currently fails with this message when
evlist__new_default() opens more than one event:
32: Session topology :
--- start ---
templ file: /tmp/perf-test-vv5YzZ
Using CPUID 0x00000000410fd070
Opening: unknown-hardware:HG
------------------------------------------------------------
perf_event_attr:
type 0 (PERF_TYPE_HARDWARE)
config 0xb00000000
disabled 1
------------------------------------------------------------
sys_perf_event_open: pid 0 cpu -1 group_fd -1 flags 0x8 = 4
Opening: unknown-hardware:HG
------------------------------------------------------------
perf_event_attr:
type 0 (PERF_TYPE_HARDWARE)
config 0xa00000000
disabled 1
------------------------------------------------------------
sys_perf_event_open: pid 0 cpu -1 group_fd -1 flags 0x8 = 5
non matching sample_type
FAILED tests/topology.c:73 can't get session
---- end ----
Session topology: FAILED!
This is because when re-opening the file and parsing the header, Perf
expects that any file that has more than one event has the sample ID
flag set. Perf record already sets the flag in a similar way when there
is more than one event, so add the same logic to evlist__new_default().
evlist__new_default() is only currently used in tests, so I don't
expect this change to have any other side effects. The other tests that
use it don't save and re-open the file so don't hit this issue.
The session topology test has been failing on Arm big.LITTLE platforms
since commit 251aa040244a ("perf parse-events: Wildcard most
"numeric" events") when evlist__new_default() started opening multiple
events for 'cycles'.
Fixes: 251aa040244a ("perf parse-events: Wildcard most "numeric" events")
Closes: https://lore.kernel.org/lkml/CAP-5=fWVQ-7ijjK3-w1q+k2WYVNHbAcejb-xY0ptbjRw476VKA@mail.gmail.com/
Tested-by: Ian Rogers <irogers@google.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Tested-by: Kan Liang <kan.liang@linux.intel.com>
Signed-off-by: James Clark <james.clark@arm.com>
---
tools/perf/util/evlist.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
Changes since v1:
* Reduce scope of evsel variable
* Add argument label
* Change summary to be less specific about the failing test
* Add the closes: tag
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 56db37fac6f6..979a6053a84d 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -95,7 +95,6 @@ struct evlist *evlist__new_default(void)
struct evlist *evlist = evlist__new();
bool can_profile_kernel;
int err;
- struct evsel *evsel;
if (!evlist)
return NULL;
@@ -107,9 +106,12 @@ struct evlist *evlist__new_default(void)
evlist = NULL;
}
- if (evlist->core.nr_entries > 1)
+ if (evlist->core.nr_entries > 1) {
+ struct evsel *evsel;
+
evlist__for_each_entry(evlist, evsel)
- evsel__set_sample_id(evsel, false);
+ evsel__set_sample_id(evsel, /*can_sample_identifier=*/false);
+ }
return evlist;
}
--
2.34.1
next prev parent reply other threads:[~2024-01-23 10:27 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-22 15:54 [PATCH] perf test: Fix session topology test on heterogeneous systems James Clark
2024-01-22 15:58 ` James Clark
2024-01-22 16:41 ` Liang, Kan
2024-01-22 17:09 ` Ian Rogers
2024-01-23 0:09 ` Ian Rogers
2024-01-23 10:27 ` James Clark [this message]
2024-01-23 10:39 ` [PATCH v3] perf evlist: Fix evlist__new_default() for > 1 core PMU James Clark
2024-01-24 0:46 ` Namhyung Kim
2024-01-24 9:03 ` James Clark
2024-01-26 16:25 ` Arnaldo Carvalho de Melo
2024-01-26 20:49 ` 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=20240123102728.239147-1-james.clark@arm.com \
--to=james.clark@arm.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=changbin.du@huawei.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=yangjihong1@huawei.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox