From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
patches@lists.linux.dev, James Clark <james.clark@linaro.org>,
Leo Yan <leo.yan@arm.com>,
Julio.Suarez@arm.com, Kiel.Friedt@arm.com, Ryan.Roberts@arm.com,
Will Deacon <will@kernel.org>, Mike Leach <mike.leach@linaro.org>,
linux-arm-kernel@lists.infradead.org,
Besar Wicaksono <bwicaksono@nvidia.com>,
John Garry <john.g.garry@oracle.com>,
Namhyung Kim <namhyung@kernel.org>
Subject: [PATCH 6.12 1254/1276] perf arm-spe: Use old behavior when opening old SPE files
Date: Tue, 21 Jul 2026 17:28:17 +0200 [thread overview]
Message-ID: <20260721152514.156438847@linuxfoundation.org> (raw)
In-Reply-To: <20260721152446.065700225@linuxfoundation.org>
6.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: James Clark <james.clark@linaro.org>
commit ba993e5ada1ddce7a71140dc85ef65bc2cd981bc upstream.
Since the linked commit, we stopped interpreting data source if the
perf.data file doesn't have the new metadata version. This means that
perf c2c will show no samples in this case.
Keep the old behavior so old files can be opened, but also still show
the new warning that updating might improve the decoding.
Also re-write the warning to be more concise and specific to a user.
Fixes: ba5e7169e548 ("perf arm-spe: Use metadata to decide the data source feature")
Signed-off-by: James Clark <james.clark@linaro.org>
Reviewed-by: Leo Yan <leo.yan@arm.com>
Cc: Julio.Suarez@arm.com
Cc: Kiel.Friedt@arm.com
Cc: Ryan.Roberts@arm.com
Cc: Will Deacon <will@kernel.org>
Cc: Mike Leach <mike.leach@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: Besar Wicaksono <bwicaksono@nvidia.com>
Cc: John Garry <john.g.garry@oracle.com>
Link: https://lore.kernel.org/r/20241029143734.291638-1-james.clark@linaro.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/perf/util/arm-spe.c | 50 ++++++++++++++++++++++------------------------
1 file changed, 24 insertions(+), 26 deletions(-)
--- a/tools/perf/util/arm-spe.c
+++ b/tools/perf/util/arm-spe.c
@@ -655,37 +655,35 @@ static bool arm_spe__is_common_ds_encodi
u64 *metadata = NULL;
u64 midr = 0;
- /*
- * Metadata version 1 doesn't contain any info for MIDR.
- * Simply return false in this case.
- */
+ /* Metadata version 1 assumes all CPUs are the same (old behavior) */
if (spe->metadata_ver == 1) {
- pr_warning_once("The data file contains metadata version 1, "
- "which is absent the info for data source. "
- "Please upgrade the tool to record data.\n");
- return false;
- }
-
- /* CPU ID is -1 for per-thread mode */
- if (speq->cpu < 0) {
- /*
- * On the heterogeneous system, due to CPU ID is -1,
- * cannot confirm the data source packet is supported.
- */
- if (!spe->is_homogeneous)
- return false;
+ const char *cpuid;
- /* In homogeneous system, simply use CPU0's metadata */
- if (spe->metadata)
- metadata = spe->metadata[0];
+ pr_warning_once("Old SPE metadata, re-record to improve decode accuracy\n");
+ cpuid = perf_env__cpuid(spe->session->evlist->env);
+ midr = strtol(cpuid, NULL, 16);
} else {
- metadata = arm_spe__get_metadata_by_cpu(spe, speq->cpu);
- }
+ /* CPU ID is -1 for per-thread mode */
+ if (speq->cpu < 0) {
+ /*
+ * On the heterogeneous system, due to CPU ID is -1,
+ * cannot confirm the data source packet is supported.
+ */
+ if (!spe->is_homogeneous)
+ return false;
+
+ /* In homogeneous system, simply use CPU0's metadata */
+ if (spe->metadata)
+ metadata = spe->metadata[0];
+ } else {
+ metadata = arm_spe__get_metadata_by_cpu(spe, speq->cpu);
+ }
- if (!metadata)
- return false;
+ if (!metadata)
+ return false;
- midr = metadata[ARM_SPE_CPU_MIDR];
+ midr = metadata[ARM_SPE_CPU_MIDR];
+ }
is_in_cpu_list = is_midr_in_range_list(midr, common_ds_encoding_cpus);
if (is_in_cpu_list)
prev parent reply other threads:[~2026-07-21 20:09 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260721152446.065700225@linuxfoundation.org>
2026-07-21 15:14 ` [PATCH 6.12 0433/1276] perf arm-spe: Use ARM_SPE_OP_BRANCH_ERET when synthesizing branches Greg Kroah-Hartman
2026-07-21 15:14 ` [PATCH 6.12 0434/1276] perf arm-spe: Correctly set sample flags Greg Kroah-Hartman
2026-07-21 15:19 ` [PATCH 6.12 0755/1276] arm64/mm: Optimize TLB flush in unmap_hotplug_[pmd|pud]_range() Greg Kroah-Hartman
2026-07-21 15:28 ` Greg Kroah-Hartman [this message]
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=20260721152514.156438847@linuxfoundation.org \
--to=gregkh@linuxfoundation.org \
--cc=Julio.Suarez@arm.com \
--cc=Kiel.Friedt@arm.com \
--cc=Ryan.Roberts@arm.com \
--cc=bwicaksono@nvidia.com \
--cc=james.clark@linaro.org \
--cc=john.g.garry@oracle.com \
--cc=leo.yan@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=mike.leach@linaro.org \
--cc=namhyung@kernel.org \
--cc=patches@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=will@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox