5.15-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jing Zhang renyu.zj@linux.alibaba.com
[ Upstream commit 74a61d53a6d1ca1172d85964d15c83c2cc3670b3 ]
When synthesizing event with SPE data source, commit 4e6430cbb1a9("perf arm-spe: Use SPE data source for neoverse cores") augment the type with source information by MIDR. However, is_midr_in_range only compares the first entry in neoverse_spe.
Change is_midr_in_range to is_midr_in_range_list to traverse the neoverse_spe array so that all neoverse cores synthesize event with data source packet.
Fixes: 4e6430cbb1a9f1dc ("perf arm-spe: Use SPE data source for neoverse cores") Reviewed-by: Ali Saidi alisaidi@amazon.com Reviewed-by: Leo Yan leo.yan@linaro.org Signed-off-by: Jing Zhang renyu.zj@linux.alibaba.com Cc: Alexander Shishkin alexander.shishkin@linux.intel.com Cc: Ali Saidi alisaidi@amazon.com Cc: German Gomez german.gomez@arm.com Cc: Ingo Molnar mingo@redhat.com Cc: James Clark james.clark@arm.com Cc: Jiri Olsa jolsa@kernel.org Cc: John Garry john.garry@huawei.com Cc: linux-arm-kernel@lists.infradead.org Cc: Mark Rutland mark.rutland@arm.com Cc: Mike Leach mike.leach@linaro.org Cc: Namhyung Kim namhyung@kernel.org Cc: Peter Zijlstra peterz@infradead.org Cc: Shuai Xue xueshuai@linux.alibaba.com Cc: Timothy Hayes timothy.hayes@arm.com Cc: Will Deacon will@kernel.org Cc: Zhuo Song zhuo.song@linux.alibaba.com Link: https://lore.kernel.org/r/1664197396-42672-1-git-send-email-renyu.zj@linux.a... Signed-off-by: Arnaldo Carvalho de Melo acme@redhat.com Stable-dep-of: cb300e351505 ("perf arm_spe: Correct memory level for remote access") Signed-off-by: Sasha Levin sashal@kernel.org --- tools/perf/util/arm-spe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 9e7e56596c60e..2d7fc2b01f36b 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -423,7 +423,7 @@ static void arm_spe__synth_data_source_generic(const struct arm_spe_record *reco static u64 arm_spe__synth_data_source(const struct arm_spe_record *record, u64 midr) { union perf_mem_data_src data_src = { 0 }; - bool is_neoverse = is_midr_in_range(midr, neoverse_spe); + bool is_neoverse = is_midr_in_range_list(midr, neoverse_spe);
if (record->op == ARM_SPE_LD) data_src.mem_op = PERF_MEM_OP_LOAD;