From nobody Mon Feb 9 06:19:10 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2FC5C34B68A; Wed, 12 Nov 2025 18:24:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971898; cv=none; b=ljiNxHAaodsz5vrrxkFUZv6Q+qhqDDKenS6reqb9uTheCBwsHb3j/mvvfNqu4+Loa0gYkpDjmI7GZjFfkrluewCyxsM7leHkEKQEEokvprFmYlLEEGVYiNS9W7RaZtc8qIOJOYS0W94K4fpuSyilaqPmtyqnnDCE8FZUm6GDwtc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971898; c=relaxed/simple; bh=911J1yGhIzG59kvCUApAkrk5zeOIijIY/YAoFzkTeCI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bGDsOsebw1p3spFAga5Rx5zvqyM/rCnGNqT+7ETsE2hdeEMDX1YprgYWi6CEauibg20H23PumPi/BRCR5gG/3KibhDmA0QpSHySN/XJdQ0qffeWpzr27VsCpGyZkVfV8Eht/WolfXJWI2L/tS2i518EQISHgUjuqRTiHzqGxFxA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A92271691; Wed, 12 Nov 2025 10:24:47 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 731F63F63F; Wed, 12 Nov 2025 10:24:53 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:27 +0000 Subject: [PATCH v3 01/25] perf arm_spe: Fix memset subclass in operation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-1-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971890; l=4136; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=911J1yGhIzG59kvCUApAkrk5zeOIijIY/YAoFzkTeCI=; b=oV+oeTQnvlkmSPbhxfyc0Ha9q2cY8921i0eRNcuu6YcbgQ1ES7LUu1jeNKwdZUVK2MYzday7i 0bYpWfDz5oUD8wnPLyQE93gis6a0nwpjshHOXowBaN7BSC/mJS9SyE/ X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= The operation subclass is extracted from bits [7..1] of the payload. Since bit [0] is not parsed, there is no chance to match the memset type (0x25). As a result, the memset payload is never parsed successfully. Instead of extracting a unified bit field, change to extract the specific bits for each operation subclass. Fixes: 34fb60400e32 ("perf arm-spe: Add raw decoding for SPEv1.3 MTE and MO= PS load/store") Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- .../util/arm-spe-decoder/arm-spe-pkt-decoder.c | 25 ++++++------------= ---- .../util/arm-spe-decoder/arm-spe-pkt-decoder.h | 15 ++++++------- 2 files changed, 14 insertions(+), 26 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index 80561630253dd5c46f7e99b24fc13b99f346459f..1a1ffe50ee73ab4400fd1163d0e= 84e54f4d8ab0b 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -371,31 +371,20 @@ static int arm_spe_pkt_desc_op_type(const struct arm_= spe_pkt *packet, arm_spe_pkt_out_string(&err, &buf, &buf_len, " AR"); } =20 - switch (SPE_OP_PKT_LDST_SUBCLASS_GET(payload)) { - case SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP: + if (SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(payload)) arm_spe_pkt_out_string(&err, &buf, &buf_len, " SIMD-FP"); - break; - case SPE_OP_PKT_LDST_SUBCLASS_GP_REG: + else if (SPE_OP_PKT_LDST_SUBCLASS_GP_REG(payload)) arm_spe_pkt_out_string(&err, &buf, &buf_len, " GP-REG"); - break; - case SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG: + else if (SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG(payload)) arm_spe_pkt_out_string(&err, &buf, &buf_len, " UNSPEC-REG"); - break; - case SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG: + else if (SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG(payload)) arm_spe_pkt_out_string(&err, &buf, &buf_len, " NV-SYSREG"); - break; - case SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG: + else if (SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG(payload)) arm_spe_pkt_out_string(&err, &buf, &buf_len, " MTE-TAG"); - break; - case SPE_OP_PKT_LDST_SUBCLASS_MEMCPY: + else if (SPE_OP_PKT_LDST_SUBCLASS_MEMCPY(payload)) arm_spe_pkt_out_string(&err, &buf, &buf_len, " MEMCPY"); - break; - case SPE_OP_PKT_LDST_SUBCLASS_MEMSET: + else if (SPE_OP_PKT_LDST_SUBCLASS_MEMSET(payload)) arm_spe_pkt_out_string(&err, &buf, &buf_len, " MEMSET"); - break; - default: - break; - } =20 if (SPE_OP_PKT_IS_LDST_SVE(payload)) { /* SVE effective vector length */ diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h index d00c2481712dcc457eab2f5e9848ffc3150e6236..75e355fe3438cc07704cb61a66c= a162bd0904042 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h @@ -125,14 +125,13 @@ enum arm_spe_events { =20 #define SPE_OP_PKT_IS_OTHER_SVE_OP(v) (((v) & (BIT(7) | BIT(3) | BIT(0)))= =3D=3D 0x8) =20 -#define SPE_OP_PKT_LDST_SUBCLASS_GET(v) ((v) & GENMASK_ULL(7, 1)) -#define SPE_OP_PKT_LDST_SUBCLASS_GP_REG 0x0 -#define SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP 0x4 -#define SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG 0x10 -#define SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG 0x30 -#define SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG 0x14 -#define SPE_OP_PKT_LDST_SUBCLASS_MEMCPY 0x20 -#define SPE_OP_PKT_LDST_SUBCLASS_MEMSET 0x25 +#define SPE_OP_PKT_LDST_SUBCLASS_GP_REG(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x0) +#define SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x4) +#define SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG(v) (((v) & GENMASK_ULL(7, 1)) = =3D=3D 0x10) +#define SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG(v) (((v) & GENMASK_ULL(7, 1)) = =3D=3D 0x30) +#define SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x14) +#define SPE_OP_PKT_LDST_SUBCLASS_MEMCPY(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x20) +#define SPE_OP_PKT_LDST_SUBCLASS_MEMSET(v) (((v) & GENMASK_ULL(7, 0)) =3D= =3D 0x25) =20 #define SPE_OP_PKT_IS_LDST_ATOMIC(v) (((v) & (GENMASK_ULL(7, 5) | BIT(1))= ) =3D=3D 0x2) =20 --=20 2.34.1 From nobody Mon Feb 9 06:19:10 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 343C4347BB6; Wed, 12 Nov 2025 18:24:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971899; cv=none; b=InH38euL8UdZvhePfL8WAo633PYqTf34QMDkd9UhsAdchKnwLRITSiKIbXMGaSCyV+Wbm6X9x6oQDbD/nJWPgU+/J4Hz5mzXgiCLLnSkFu3ddjM5f+prBuyvbLtcAPp+MEqDvUHn65JYMEsDW6wRP7AygtXtMqcGxe6gZ5uQY8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971899; c=relaxed/simple; bh=G2/h7Cz3kpY9a4X3zZdlt9hLzKN/SrbioEaOWhtErXY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a4pEr2xkjJ94t8xDX35XxPPoVXGLvnzKvPH976V6ZXU+W6p5hKsR+Hk4h8Mz4IG6YER1k6BCIDoaKS+99aPjZIOQsPTKxnMoG3QV57qF/DX15eJHmHnz+d05w7QylEb94sPYLd7Q9FvuFfH5p3t5UskU3fclhDx8ncWBsD3aYTM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D345B1595; Wed, 12 Nov 2025 10:24:49 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9AA953F63F; Wed, 12 Nov 2025 10:24:55 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:28 +0000 Subject: [PATCH v3 02/25] perf arm_spe: Unify operation naming Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-2-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971890; l=4831; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=G2/h7Cz3kpY9a4X3zZdlt9hLzKN/SrbioEaOWhtErXY=; b=SrqRVaY9/p9rQ5zlPD71iH3uxt1E+GD3iP1nf7ahcXUrBzE2nhd4XhpM/okLRtJsh06qDLt/B I5fXIott3bgBkLY+pqRzg77Txjo+zrf7MKdHMuuwh8KqHIAtIHR19Nc X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Rename extended subclass and SVE/SME register access subclass, so that the naming can be consistent cross all sub classes. Add an log "SVE-SME-REG" for the SVE/SME register access, this is easier for parsing. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 2 +- .../perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c | 21 ++++++++++-------= ---- .../perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h | 4 ++-- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 96eb7cced6fd1574f5d823e4c67b9051dcf183ed..b0fb896abad48de93aa1ed56002= 9f9bc9ae969e9 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -200,7 +200,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *= decoder) decoder->record.op |=3D ARM_SPE_OP_ST; else decoder->record.op |=3D ARM_SPE_OP_LD; - if (SPE_OP_PKT_IS_LDST_SVE(payload)) + if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) decoder->record.op |=3D ARM_SPE_OP_SVE_LDST; break; case SPE_OP_PKT_HDR_CLASS_OTHER: diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index 1a1ffe50ee73ab4400fd1163d0e84e54f4d8ab0b..f6e9c58ce62f3ae227a79d91cae= faef4bd87d98a 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -362,31 +362,30 @@ static int arm_spe_pkt_desc_op_type(const struct arm_= spe_pkt *packet, arm_spe_pkt_out_string(&err, &buf, &buf_len, payload & 0x1 ? "ST" : "LD"); =20 - if (SPE_OP_PKT_IS_LDST_ATOMIC(payload)) { + if (SPE_OP_PKT_LDST_SUBCLASS_EXTENDED(payload)) { if (payload & SPE_OP_PKT_AT) arm_spe_pkt_out_string(&err, &buf, &buf_len, " AT"); if (payload & SPE_OP_PKT_EXCL) arm_spe_pkt_out_string(&err, &buf, &buf_len, " EXCL"); if (payload & SPE_OP_PKT_AR) arm_spe_pkt_out_string(&err, &buf, &buf_len, " AR"); - } - - if (SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(payload)) + } else if (SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, " SIMD-FP"); - else if (SPE_OP_PKT_LDST_SUBCLASS_GP_REG(payload)) + } else if (SPE_OP_PKT_LDST_SUBCLASS_GP_REG(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, " GP-REG"); - else if (SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG(payload)) + } else if (SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, " UNSPEC-REG"); - else if (SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG(payload)) + } else if (SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, " NV-SYSREG"); - else if (SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG(payload)) + } else if (SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, " MTE-TAG"); - else if (SPE_OP_PKT_LDST_SUBCLASS_MEMCPY(payload)) + } else if (SPE_OP_PKT_LDST_SUBCLASS_MEMCPY(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, " MEMCPY"); - else if (SPE_OP_PKT_LDST_SUBCLASS_MEMSET(payload)) + } else if (SPE_OP_PKT_LDST_SUBCLASS_MEMSET(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, " MEMSET"); + } else if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) { + arm_spe_pkt_out_string(&err, &buf, &buf_len, " SVE-SME-REG"); =20 - if (SPE_OP_PKT_IS_LDST_SVE(payload)) { /* SVE effective vector length */ arm_spe_pkt_out_string(&err, &buf, &buf_len, " EVLEN %d", SPE_OP_PKG_SVE_EVL(payload)); diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h index 75e355fe3438cc07704cb61a66ca162bd0904042..cb947e625918922dc1fa25cf884= 3b09661197782 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h @@ -133,14 +133,14 @@ enum arm_spe_events { #define SPE_OP_PKT_LDST_SUBCLASS_MEMCPY(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x20) #define SPE_OP_PKT_LDST_SUBCLASS_MEMSET(v) (((v) & GENMASK_ULL(7, 0)) =3D= =3D 0x25) =20 -#define SPE_OP_PKT_IS_LDST_ATOMIC(v) (((v) & (GENMASK_ULL(7, 5) | BIT(1))= ) =3D=3D 0x2) +#define SPE_OP_PKT_LDST_SUBCLASS_EXTENDED(v) (((v) & (GENMASK_ULL(7, 5) | = BIT(1))) =3D=3D 0x2) =20 #define SPE_OP_PKT_AR BIT(4) #define SPE_OP_PKT_EXCL BIT(3) #define SPE_OP_PKT_AT BIT(2) #define SPE_OP_PKT_ST BIT(0) =20 -#define SPE_OP_PKT_IS_LDST_SVE(v) (((v) & (BIT(3) | BIT(1))) =3D=3D 0x8) +#define SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(v) (((v) & (BIT(3) | BIT(1)))= =3D=3D 0x8) =20 #define SPE_OP_PKT_SVE_SG BIT(7) /* --=20 2.34.1 From nobody Mon Feb 9 06:19:10 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 499FC34CFA8; Wed, 12 Nov 2025 18:25:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971901; cv=none; b=rOnaVNJuCEZ5KzcItE/k12VEO80ZEjx/aLBntXtlj6MDRPSPZuEHaczhrIX4GQTiRo54X9Cz1wcgzk5cVgB4bOrH/AcAX2WzXb51xuXWm8l3zQbaFWV3QWl0NnhWQMvGpsDhmgWYOF1MH+M1vYBjQoQS7cxnWV0U9kq8qL8QDQ4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971901; c=relaxed/simple; bh=AI7UBaNe19y2ZmOnZ10XQZCilrMUPhEQMhX054AblbQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z+Ysiw6Z9dh1OqjkeBi+3gPh3HSx5dgvZuGAd7BHVQUz9GN10EpchppgxZulXOFhC+ExZYPxR43J28KQSeqWA4nFCIbozAtSHzAC/Xhq+b4+WJEtLHmlH37pEs6bBNUSCp8pkUFDmLH3nT2b+N0Ff2q51Kn4kOA/xHCm9zUT30Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 096601515; Wed, 12 Nov 2025 10:24:52 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C64103F63F; Wed, 12 Nov 2025 10:24:57 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:29 +0000 Subject: [PATCH v3 03/25] perf arm_spe: Decode GCS operation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-3-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971890; l=2306; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=AI7UBaNe19y2ZmOnZ10XQZCilrMUPhEQMhX054AblbQ=; b=N5Qu0bUbgKF6RA3KiKn27664uINuVPIcVyU3mGkUzFdL6WuXlEjcnzv4o4bewbiriVvQv+LQ0 7qPDyd7Jj7KCNR/y5BvKpK540Ta5Ny91m0gH/0GcjfHYi6fQKhDuGwO X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Decode a load or store from a GCS operation and the associated "common" field. After: . 00000000: 49 44 LD GCS COMM . 00000002: b2 18 3c d7 83 00 80 ff ff VA 0xffff80= 0083d73c18 . 0000000b: 9a 00 00 LAT 0 XLAT . 0000000e: 43 00 DATA-SOURCE= 0 Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c | 4 ++++ tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index f6e9c58ce62f3ae227a79d91caefaef4bd87d98a..0046079edaccdd4d0c093f73395= d1ecdc0007621 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -394,6 +394,10 @@ static int arm_spe_pkt_desc_op_type(const struct arm_s= pe_pkt *packet, arm_spe_pkt_out_string(&err, &buf, &buf_len, " PRED"); if (payload & SPE_OP_PKT_SVE_SG) arm_spe_pkt_out_string(&err, &buf, &buf_len, " SG"); + } else if (SPE_OP_PKT_LDST_SUBCLASS_GCS(payload)) { + arm_spe_pkt_out_string(&err, &buf, &buf_len, " GCS"); + if (payload & SPE_OP_PKT_GCS_COMM) + arm_spe_pkt_out_string(&err, &buf, &buf_len, " COMM"); } break; case SPE_OP_PKT_HDR_CLASS_BR_ERET: diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h index cb947e625918922dc1fa25cf8843b09661197782..94333e7bc382deef119414e4f1d= e7c2878620035 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h @@ -154,6 +154,10 @@ enum arm_spe_events { #define SPE_OP_PKT_SVE_PRED BIT(2) #define SPE_OP_PKT_SVE_FP BIT(1) =20 +#define SPE_OP_PKT_LDST_SUBCLASS_GCS(v) (((v) & (GENMASK_ULL(7, 3) | BIT(= 1))) =3D=3D 0x40) + +#define SPE_OP_PKT_GCS_COMM BIT(2) + #define SPE_OP_PKT_CR_MASK GENMASK_ULL(4, 3) #define SPE_OP_PKT_CR_BL(v) (FIELD_GET(SPE_OP_PKT_CR_MASK, (v)) =3D=3D 1) #define SPE_OP_PKT_CR_RET(v) (FIELD_GET(SPE_OP_PKT_CR_MASK, (v)) =3D=3D = 2) --=20 2.34.1 From nobody Mon Feb 9 06:19:10 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4FAC62BEC5E; Wed, 12 Nov 2025 18:25:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971904; cv=none; b=VibNgGPbHg+dbQ/pzHeT0nnXIZdsgF/lRjvWL+uKw9zdp9Bbwsfjzt53thSbEpTWPcSarOO1WvPtfFLBoqNkwPz5wBHOcUCtxgz1tetSZKKN1javnTwraADrky1tW72lEfCvsWl3GOQuR/BB/gOx/NSUn4Suo2Hg5HX68w302bQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971904; c=relaxed/simple; bh=zixE5i3+mSZRJrxDBxY30q3IwlWCPYbQatyMldJsYEw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I2ttc20NSaFf04T2vjdq/njSMS6ou1lP5zG7WEN/TNVbAT9LDIgHoen9OviQ2hC33P60jeL3o3lH2hOu1+B76QkjzzA3x8/egOLKcZ+l8lUOxc1bq8hD2cetVbQYTh37qPX8BTci6FdOLcrok8mTGnSnH3R77HAHte0epKoDuUU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 32F911595; Wed, 12 Nov 2025 10:24:54 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id F02B13F63F; Wed, 12 Nov 2025 10:24:59 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:30 +0000 Subject: [PATCH v3 04/25] perf arm_spe: Rename SPE_OP_PKT_IS_OTHER_SVE_OP macro Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-4-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971890; l=2605; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=zixE5i3+mSZRJrxDBxY30q3IwlWCPYbQatyMldJsYEw=; b=bZDR+bsM4PrMy/Y2HfaDaz672uS7iKE+SzxXAxWYD2s0EftIqYcnu5lW0vP5AirkrfYgTGLHY WiU81mQEU77Dv1VL5hBnzB/2RVK/8OZ/V+8wm/1CjRifk5sAph7s6Zm X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Rename the macro to SPE_OP_PKT_OTHER_SUBCLASS_SVE to unify naming. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 2 +- tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c | 2 +- tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index b0fb896abad48de93aa1ed560029f9bc9ae969e9..847c29385bea8618e14b2eb21a0= 8896041890d89 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -205,7 +205,7 @@ static int arm_spe_read_record(struct arm_spe_decoder *= decoder) break; case SPE_OP_PKT_HDR_CLASS_OTHER: decoder->record.op |=3D ARM_SPE_OP_OTHER; - if (SPE_OP_PKT_IS_OTHER_SVE_OP(payload)) + if (SPE_OP_PKT_OTHER_SUBCLASS_SVE(payload)) decoder->record.op |=3D ARM_SPE_OP_SVE_OTHER; break; case SPE_OP_PKT_HDR_CLASS_BR_ERET: diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index 0046079edaccdd4d0c093f73395d1ecdc0007621..533920b738cbcb39136d1ba3d88= e99f9d8009e74 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -340,7 +340,7 @@ static int arm_spe_pkt_desc_op_type(const struct arm_sp= e_pkt *packet, =20 switch (packet->index) { case SPE_OP_PKT_HDR_CLASS_OTHER: - if (SPE_OP_PKT_IS_OTHER_SVE_OP(payload)) { + if (SPE_OP_PKT_OTHER_SUBCLASS_SVE(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, "SVE-OTHER"); =20 /* SVE effective vector length */ diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h index 94333e7bc382deef119414e4f1de7c2878620035..48bd9e9ef132b11b79ffe2e2fbc= 7cfe4c340ff92 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h @@ -123,7 +123,7 @@ enum arm_spe_events { #define SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC 0x1 #define SPE_OP_PKT_HDR_CLASS_BR_ERET 0x2 =20 -#define SPE_OP_PKT_IS_OTHER_SVE_OP(v) (((v) & (BIT(7) | BIT(3) | BIT(0)))= =3D=3D 0x8) +#define SPE_OP_PKT_OTHER_SUBCLASS_SVE(v) (((v) & (BIT(7) | BIT(3) | BIT(0)= )) =3D=3D 0x8) =20 #define SPE_OP_PKT_LDST_SUBCLASS_GP_REG(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x0) #define SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x4) --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C77FD34B402; Wed, 12 Nov 2025 18:25:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971908; cv=none; b=XX7VeYB7Mffbv2Bad0b16igduAwGqINB8EvgpREkqEj1VA9lGGW+vAmBFbVNYGg+oY9IHxXaix9kAjXhW/9VAPU5ZhBUh95505j2EfU3CmV7SPsnQzV/EbxhaTFTNvUx2voTFqRmMlMKNVcqlOO3NFVyvJELhj+KeF721lIDuuM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971908; c=relaxed/simple; bh=N0jNmX4wH1J25D1rmsic2Y5Tu8VYPddY1OtkCA2TvqI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s1506R3WOh0NPt2iLPjmlNdlttlLcYo/MnpFho2yqXWM7Sb5AyJfbYrghWriG3Ijet3PVE6DDi4sjPUWXPrid+VOdHhbLl9XfWUUjs8VqTRukaRP0Hn4u6OcD/daxNaGDOsfbfPO9SYnUXfW5xzWd0dy9qKxgvKhwYJeQdcUpqg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5A5D71515; Wed, 12 Nov 2025 10:24:56 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 25FA83F63F; Wed, 12 Nov 2025 10:25:02 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:31 +0000 Subject: [PATCH v3 05/25] perf arm_spe: Decode ASE and FP fields in other operation Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-5-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971890; l=2769; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=N0jNmX4wH1J25D1rmsic2Y5Tu8VYPddY1OtkCA2TvqI=; b=hjBdkAx/XXNsfg8KzbafnUhvrkfPt9gjy3+Lz1yxoDs8MlQ20ExsV6dC2Smw51Ou7dyxUv6Ox lAws8Qq9bylDEdl6z2lctqKgO26NjzAzaxGPfGu9AMaXBRJss/9Q5PT X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Add a check for other operation, which prevents any incorrectly classifying. Parse the ASE and FP fields. After: . 0000002f: 48 06 OTHER ASE F= P INSN-OTHER . 00000031: b2 08 80 48 01 08 00 ff ff VA 0xffff00= 0801488008 . 0000003a: 9a 00 00 LAT 0 XLAT . 0000003d: 42 16 EV RETIRED = L1D-ACCESS TLB-ACCESS Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c | 6 +++++- tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index 533920b738cbcb39136d1ba3d88e99f9d8009e74..21b65a9b40f481b6cb25aaf01ab= 627ade046ff72 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -351,8 +351,12 @@ static int arm_spe_pkt_desc_op_type(const struct arm_s= pe_pkt *packet, arm_spe_pkt_out_string(&err, &buf, &buf_len, " FP"); if (payload & SPE_OP_PKT_SVE_PRED) arm_spe_pkt_out_string(&err, &buf, &buf_len, " PRED"); - } else { + } else if (SPE_OP_PKT_OTHER_SUBCLASS_OTHER(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, "OTHER"); + if (payload & SPE_OP_PKT_OTHER_ASE) + arm_spe_pkt_out_string(&err, &buf, &buf_len, " ASE"); + if (payload & SPE_OP_PKT_OTHER_FP) + arm_spe_pkt_out_string(&err, &buf, &buf_len, " FP"); arm_spe_pkt_out_string(&err, &buf, &buf_len, " %s", payload & SPE_OP_PKT_COND ? "COND-SELECT" : "INSN-OTHER"); diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h index 48bd9e9ef132b11b79ffe2e2fbc7cfe4c340ff92..704601c6dbe30e93f83a82670d0= d60344a22222a 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h @@ -123,8 +123,12 @@ enum arm_spe_events { #define SPE_OP_PKT_HDR_CLASS_LD_ST_ATOMIC 0x1 #define SPE_OP_PKT_HDR_CLASS_BR_ERET 0x2 =20 +#define SPE_OP_PKT_OTHER_SUBCLASS_OTHER(v) (((v) & GENMASK_ULL(7, 3)) =3D= =3D 0x0) #define SPE_OP_PKT_OTHER_SUBCLASS_SVE(v) (((v) & (BIT(7) | BIT(3) | BIT(0)= )) =3D=3D 0x8) =20 +#define SPE_OP_PKT_OTHER_ASE BIT(2) +#define SPE_OP_PKT_OTHER_FP BIT(1) + #define SPE_OP_PKT_LDST_SUBCLASS_GP_REG(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x0) #define SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x4) #define SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG(v) (((v) & GENMASK_ULL(7, 1)) = =3D=3D 0x10) --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1433834DB42; Wed, 12 Nov 2025 18:25:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971909; cv=none; b=PLdvbJaMfUxJEbCO9Go5fBAeoCEXIXcU5T7oBulM2jP8QxXvSj3vLq7+BznvE7OS6C9LmkAZhTRsGH7NYpDUzY1IpNWB75tCau0GrrsrrqEVHXWvUZIBc2MQAXREauTjO392Zp88E1zk1DrF48FUzkwgBnVwlT+OLftUjd3VcOk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971909; c=relaxed/simple; bh=Eh/nqOU+QofsS2OSXnw9Q/W0xybJNqrLOXhmO4OxKOw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uo1Zp3mz4LX6RlzUmkbCLI8hmxynQhpwOi0yIV6SB4naxAkdrFDXvwQqjw1B9+keGgnwv/7ANqa+bvHSDmfGvdXsBVJYl1Nssi14aqt1NGRh9eX9gAFnVpmZD8axBy4zxyk1pVUZntPX30nEWu+FxZOTlT8RC6BsCYlV7i1OKls= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 7FF021595; Wed, 12 Nov 2025 10:24:58 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 4D58E3F63F; Wed, 12 Nov 2025 10:25:04 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:32 +0000 Subject: [PATCH v3 06/25] perf arm_spe: Decode SME data processing packet Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-6-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971890; l=3212; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=Eh/nqOU+QofsS2OSXnw9Q/W0xybJNqrLOXhmO4OxKOw=; b=tAXK8Gn5kIHERiBzsIgLon1W4Myyb4BlHhKv7xSzqGsQ/xcVTFkp0J+NDFDjcgHhofqrOR4Za wVKpLI7gvyQAG1GwVHzZgV+wT5BDFeHzkK7W4VB6sUvtqZ3ufVYJIxZ X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= For SME data processing, decode its Effective vector length or Tile Size (ETS), and print out if a floating-point operation. After: . 00000000: 49 00 SME-OTHER E= TS 1024 FP . 00000002: b2 18 3c d7 83 00 80 ff ff VA 0xffff80= 0083d73c18 . 0000000b: 9a 00 00 LAT 0 XLAT . 0000000e: 43 00 DATA-SOURCE= 0 Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c | 9 +++++++++ tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h | 11 +++++++++++ 2 files changed, 20 insertions(+) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index 21b65a9b40f481b6cb25aaf01ab627ade046ff72..5769ba2f414049161f271fd8b8f= 40c440d15a75a 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -351,6 +351,15 @@ static int arm_spe_pkt_desc_op_type(const struct arm_s= pe_pkt *packet, arm_spe_pkt_out_string(&err, &buf, &buf_len, " FP"); if (payload & SPE_OP_PKT_SVE_PRED) arm_spe_pkt_out_string(&err, &buf, &buf_len, " PRED"); + } else if (SPE_OP_PKT_OTHER_SUBCLASS_SME(payload)) { + arm_spe_pkt_out_string(&err, &buf, &buf_len, "SME-OTHER"); + + /* SME effective vector length or tile size */ + arm_spe_pkt_out_string(&err, &buf, &buf_len, " ETS %d", + SPE_OP_PKG_SME_ETS(payload)); + + if (payload & SPE_OP_PKT_OTHER_FP) + arm_spe_pkt_out_string(&err, &buf, &buf_len, " FP"); } else if (SPE_OP_PKT_OTHER_SUBCLASS_OTHER(payload)) { arm_spe_pkt_out_string(&err, &buf, &buf_len, "OTHER"); if (payload & SPE_OP_PKT_OTHER_ASE) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h index 704601c6dbe30e93f83a82670d0d60344a22222a..adf4cde320aad01265b5232b0d6= ff6b1f752f35f 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h @@ -125,10 +125,21 @@ enum arm_spe_events { =20 #define SPE_OP_PKT_OTHER_SUBCLASS_OTHER(v) (((v) & GENMASK_ULL(7, 3)) =3D= =3D 0x0) #define SPE_OP_PKT_OTHER_SUBCLASS_SVE(v) (((v) & (BIT(7) | BIT(3) | BIT(0)= )) =3D=3D 0x8) +#define SPE_OP_PKT_OTHER_SUBCLASS_SME(v) (((v) & (BIT(7) | BIT(3) | BIT(0)= )) =3D=3D 0x88) =20 #define SPE_OP_PKT_OTHER_ASE BIT(2) #define SPE_OP_PKT_OTHER_FP BIT(1) =20 +/* + * SME effective vector length or tile size (ETS) is stored in byte 0 + * bits [6:4,2]; the length is rounded up to a power of two and use 128 + * as one step, so ETS calculation is: + * + * 128 * (2 ^ bits [6:4,2]) =3D 32 << (bits [6:4,2]) + */ +#define SPE_OP_PKG_SME_ETS(v) (128 << (FIELD_GET(GENMASK_ULL(6, 4), (v))= << 1 | \ + (FIELD_GET(BIT(2), (v))))) + #define SPE_OP_PKT_LDST_SUBCLASS_GP_REG(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x0) #define SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(v) (((v) & GENMASK_ULL(7, 1)) =3D= =3D 0x4) #define SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG(v) (((v) & GENMASK_ULL(7, 1)) = =3D=3D 0x10) --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1DFFB34DCF3; Wed, 12 Nov 2025 18:25:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971911; cv=none; b=pTsOAtunrZOJPH2guLOd7b21c9xCZkYMa9Ng+YhvPKj1chUqpLMgqRKrVJdpldSM5B/+MivPRdqpPO4IT9QYKX7mMZfiB+UuDK5CRD8XwoApDRE2CzZmN3/XSAam4KTPpGKyJ2xnlU3ZCCwJ2iYBEEviKTHRufVemtGnRsKUDeU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971911; c=relaxed/simple; bh=b0PllY8RWLZry/bueun+VAsGue4qV9iwUC/TXi6VS1k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VE/004sXH/dswYypvKRI+ZAo0U9acT59+CvIJBP2sg9i7o6wwLxjEA20qf4hN3pnirlDd7/pDSc/0O4xkJeeaAzVFqE5ng6bByAWM7yugw8ggfTsCXbKF7aJNZWVttEw5s4n0h65Z1zIaWdS0xVBU4q29GYc1S13qnUsTmhks8s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B04C61691; Wed, 12 Nov 2025 10:25:00 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 75A833F63F; Wed, 12 Nov 2025 10:25:06 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:33 +0000 Subject: [PATCH v3 07/25] perf arm_spe: Remove unused operation types Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-7-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1210; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=b0PllY8RWLZry/bueun+VAsGue4qV9iwUC/TXi6VS1k=; b=FCdO2hL/ZsLMISA3E8ix3eGPDn4cAGpSQIKLq1+vdX30JHfSg4K3btv2+t8GtRJ0nTGCs9zlg v+3lXlRBGGrA2KHSZy+A3C00GcLmXLYqq3EI8BsfAJh0DVK9+PkjGuM X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Remove unused SVE operation types. These operations will be reintroduced in subsequent refactoring, but with a different format. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index fbb57f8052371e51d562d9dd6098e97fc099461c..1259cbadfdc8098019afcd4cf65= e733475310392 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -39,8 +39,6 @@ enum arm_spe_op_type { =20 /* Second level operation type for OTHER */ ARM_SPE_OP_SVE_OTHER =3D 1 << 16, - ARM_SPE_OP_SVE_FP =3D 1 << 17, - ARM_SPE_OP_SVE_PRED_OTHER =3D 1 << 18, =20 /* Second level operation type for LDST */ ARM_SPE_OP_LD =3D 1 << 16, @@ -53,8 +51,6 @@ enum arm_spe_op_type { ARM_SPE_OP_UNSPEC_REG =3D 1 << 23, ARM_SPE_OP_NV_SYSREG =3D 1 << 24, ARM_SPE_OP_SVE_LDST =3D 1 << 25, - ARM_SPE_OP_SVE_PRED_LDST =3D 1 << 26, - ARM_SPE_OP_SVE_SG =3D 1 << 27, =20 /* Second level operation type for BRANCH_ERET */ ARM_SPE_OP_BR_COND =3D 1 << 16, --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2E7C134DB67; Wed, 12 Nov 2025 18:25:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971912; cv=none; b=Id483lPRQu+8sXMq+sO5+hJ2LWmX9H7Gld0MRWTilaF0cm5MVTmQhCdR1BpqSDTmNHUKmEkZT39xTVyiVzOiqXQ8UngHZcIYI0bfOyp5trQ/dM6rRs5jxEUaT+0mx7YSHHQm2CzK4F9mWdALsd78XORX5V2kuwtir00aGD5hYxE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971912; c=relaxed/simple; bh=qKx9lN2m9B2LaNp9/BsuTsz4PMHucWRf4+sxupt4WJ8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FW05dHy1mPtb0VivG/lA8scvxGTgRs6Y5Iqfz3YgvMiijciV3lAf5VduILaTqCFyc3v2V6AyEeByhlNMyE1y1eG1MCsRe/IcLoyFT2vhXXjS7udokDeUs92HU57xwpUzoQDodpakR3eFeDh+DP6TPoLfh4eE6TEre74QApRmwKc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D96221515; Wed, 12 Nov 2025 10:25:02 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A42BC3F63F; Wed, 12 Nov 2025 10:25:08 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:34 +0000 Subject: [PATCH v3 08/25] perf arm_spe: Consolidate operation types Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-8-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=2655; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=qKx9lN2m9B2LaNp9/BsuTsz4PMHucWRf4+sxupt4WJ8=; b=fgY3metDPsIJLUysLmv9P8Ko2c2ueKyZmcpqCJZwANpHcASyl8Ddv3fzJBegrpFNbfc14C+wZ vFEHiMJCYkDA63bMayyKDfv6c+wM/8GXcSZcYFJS9Z07qVHlMceTCLg X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Consolidate operation types in a way: (a) Extract the second-level types into separate enums. (b) The second-level types for memory and SIMD operations are classified by modules. E.g., an operation may relate to general register, SIMD/FP, SVE, etc. (c) The associated information tells details. E.g., an operation is load or store, whether it is atomic operation, etc. Start the enum items for the second-level types from 8 to accommodate more entries within a 32-bit integer. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 46 ++++++++++++-------= ---- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index 1259cbadfdc8098019afcd4cf65e733475310392..b555e2cc1dc36f209c23b0d8437= 8da0ee65c1ab3 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -36,29 +36,31 @@ enum arm_spe_op_type { ARM_SPE_OP_OTHER =3D 1 << 0, ARM_SPE_OP_LDST =3D 1 << 1, ARM_SPE_OP_BRANCH_ERET =3D 1 << 2, +}; + +enum arm_spe_2nd_op_ldst { + ARM_SPE_OP_GP_REG =3D 1 << 8, + ARM_SPE_OP_UNSPEC_REG =3D 1 << 9, + ARM_SPE_OP_NV_SYSREG =3D 1 << 10, + ARM_SPE_OP_SIMD_FP =3D 1 << 11, + ARM_SPE_OP_SVE_OTHER =3D 1 << 12, + ARM_SPE_OP_SVE_LDST =3D 1 << 13, + + /* Assisted information for memory / SIMD */ + ARM_SPE_OP_LD =3D 1 << 20, + ARM_SPE_OP_ST =3D 1 << 21, + ARM_SPE_OP_ATOMIC =3D 1 << 22, + ARM_SPE_OP_EXCL =3D 1 << 23, + ARM_SPE_OP_AR =3D 1 << 24, +}; =20 - /* Second level operation type for OTHER */ - ARM_SPE_OP_SVE_OTHER =3D 1 << 16, - - /* Second level operation type for LDST */ - ARM_SPE_OP_LD =3D 1 << 16, - ARM_SPE_OP_ST =3D 1 << 17, - ARM_SPE_OP_ATOMIC =3D 1 << 18, - ARM_SPE_OP_EXCL =3D 1 << 19, - ARM_SPE_OP_AR =3D 1 << 20, - ARM_SPE_OP_SIMD_FP =3D 1 << 21, - ARM_SPE_OP_GP_REG =3D 1 << 22, - ARM_SPE_OP_UNSPEC_REG =3D 1 << 23, - ARM_SPE_OP_NV_SYSREG =3D 1 << 24, - ARM_SPE_OP_SVE_LDST =3D 1 << 25, - - /* Second level operation type for BRANCH_ERET */ - ARM_SPE_OP_BR_COND =3D 1 << 16, - ARM_SPE_OP_BR_INDIRECT =3D 1 << 17, - ARM_SPE_OP_BR_GCS =3D 1 << 18, - ARM_SPE_OP_BR_CR_BL =3D 1 << 19, - ARM_SPE_OP_BR_CR_RET =3D 1 << 20, - ARM_SPE_OP_BR_CR_NON_BL_RET =3D 1 << 21, +enum arm_spe_2nd_op_branch { + ARM_SPE_OP_BR_COND =3D 1 << 8, + ARM_SPE_OP_BR_INDIRECT =3D 1 << 9, + ARM_SPE_OP_BR_GCS =3D 1 << 10, + ARM_SPE_OP_BR_CR_BL =3D 1 << 11, + ARM_SPE_OP_BR_CR_RET =3D 1 << 12, + ARM_SPE_OP_BR_CR_NON_BL_RET =3D 1 << 13, }; =20 enum arm_spe_common_data_source { --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 498E934B415; Wed, 12 Nov 2025 18:25:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971915; cv=none; b=chUg0hPRCpFa75gz36Cr08S/w1C2PO605xIykeQtGOuiUhtrFkecOC7w9eqGeZk7cpS9ZIlqeopnmq+ObXNMSDWlkubOMJdgfHkVT29MEnfn+jI6L0iC3xT9LzcqmdV/a5bj4L/DxC0m/qYZocW8KdZVd6hKI3JBjLi/KfqZjBw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971915; c=relaxed/simple; bh=pOn+OweUnZMaNTqqQtY3ZTLc4P+MyZzHAa72JWfU/kw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Vy5oGpQTVj4EfLZ8MiVVxHkNiAOUrs7JH0UVe3vNzZCD0HV17iTaFDSjh+B4g2CM47eCuG+xdi5xrQlzXrZpTm8BPAB0jb7GibAhmEp1nZQRftU0YLeWjOWXQKld5UJCEIAAjd54guj0N5P4u+514vame28W9ZlWQLL+gtfuffo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 0A4281595; Wed, 12 Nov 2025 10:25:05 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id CC1683F63F; Wed, 12 Nov 2025 10:25:10 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:35 +0000 Subject: [PATCH v3 09/25] perf arm_spe: Introduce data processing macro for SVE operations Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-9-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=3135; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=pOn+OweUnZMaNTqqQtY3ZTLc4P+MyZzHAa72JWfU/kw=; b=Uj09w5o4mpLmc/OH6B3x0sC437+uDPHL1CFpYDrOFCfgmY1V2Z1tLwkNnyTvjnOuJV8Q2Z7To xo7tTj7vSySDwbLV1PyCVLqwfRbwMschUG8I2vFXgnMo+qfp+/+/JUp X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Introduce the ARM_SPE_OP_DP (data processing) macro as associated information for SVE operations. For SVE register access, only ARM_SPE_OP_SVE is set; for SVE data processing, both ARM_SPE_OP_SVE and ARM_SPE_OP_DP are set together. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 4 ++-- tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 4 ++-- tools/perf/util/arm-spe.c | 5 +---- 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 847c29385bea8618e14b2eb21a08896041890d89..6974f594f37c9916fff591ced1e= 9c2d60cf84f14 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -201,12 +201,12 @@ static int arm_spe_read_record(struct arm_spe_decoder= *decoder) else decoder->record.op |=3D ARM_SPE_OP_LD; if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) - decoder->record.op |=3D ARM_SPE_OP_SVE_LDST; + decoder->record.op |=3D ARM_SPE_OP_SVE; break; case SPE_OP_PKT_HDR_CLASS_OTHER: decoder->record.op |=3D ARM_SPE_OP_OTHER; if (SPE_OP_PKT_OTHER_SUBCLASS_SVE(payload)) - decoder->record.op |=3D ARM_SPE_OP_SVE_OTHER; + decoder->record.op |=3D ARM_SPE_OP_SVE | ARM_SPE_OP_DP; break; case SPE_OP_PKT_HDR_CLASS_BR_ERET: decoder->record.op |=3D ARM_SPE_OP_BRANCH_ERET; diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index b555e2cc1dc36f209c23b0d84378da0ee65c1ab3..acab6d11096b19b1d31a553c83c= ba9732ecf5ddb 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -43,8 +43,7 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_UNSPEC_REG =3D 1 << 9, ARM_SPE_OP_NV_SYSREG =3D 1 << 10, ARM_SPE_OP_SIMD_FP =3D 1 << 11, - ARM_SPE_OP_SVE_OTHER =3D 1 << 12, - ARM_SPE_OP_SVE_LDST =3D 1 << 13, + ARM_SPE_OP_SVE =3D 1 << 12, =20 /* Assisted information for memory / SIMD */ ARM_SPE_OP_LD =3D 1 << 20, @@ -52,6 +51,7 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_ATOMIC =3D 1 << 22, ARM_SPE_OP_EXCL =3D 1 << 23, ARM_SPE_OP_AR =3D 1 << 24, + ARM_SPE_OP_DP =3D 1 << 25, /* Data processing */ }; =20 enum arm_spe_2nd_op_branch { diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 614ce032f87e46d1f3754258f51bb1693ec128b7..881257d3958705e725f1b7d47b4= 1a93defd231ea 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -346,10 +346,7 @@ static struct simd_flags arm_spe__synth_simd_flags(con= st struct arm_spe_record * { struct simd_flags simd_flags =3D {}; =20 - if ((record->op & ARM_SPE_OP_LDST) && (record->op & ARM_SPE_OP_SVE_LDST)) - simd_flags.arch |=3D SIMD_OP_FLAGS_ARCH_SVE; - - if ((record->op & ARM_SPE_OP_OTHER) && (record->op & ARM_SPE_OP_SVE_OTHER= )) + if (record->op & ARM_SPE_OP_SVE) simd_flags.arch |=3D SIMD_OP_FLAGS_ARCH_SVE; =20 if (record->type & ARM_SPE_SVE_PARTIAL_PRED) --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7FA5434F24A; Wed, 12 Nov 2025 18:25:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971916; cv=none; b=AFheKSl9trJxk1EAPpfjo5FXSsXdhb+iGAxHLW456qKLdkeH5YgezBiAmEGWtCOiqYqtuGCf8XkxktO8y0jvbrfEoHVTwb0xI2o82iKQvq3gLY1XlWo6qDbTn9WJGmSNPp3hYNvZCIBefp5Yvvt+VdL1dGUM8MD0S4Do18TYSxY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971916; c=relaxed/simple; bh=HHOOdkzKuLKsg1t2wcgtmBC8Ve28pWlydemgtJS2c20=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hR8FIAmYhaU6A3PgMuSpqKmnVXTbppfEO9GR4whkpMXLtcDHEYWljQBmvwDlIH7WcVKe35NDE/cVhCfPlxy4cr17BvuaCCydMyGeWpoawCi7kOgynaFgunGwxZIx8YYEAKBlH2u0pn3ppw6K4Hy9fyIme83elzPPFYPrQQfLZVw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 33BCC1515; Wed, 12 Nov 2025 10:25:07 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 002D03F63F; Wed, 12 Nov 2025 10:25:12 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:36 +0000 Subject: [PATCH v3 10/25] perf arm_spe: Report register access in record Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-10-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1481; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=HHOOdkzKuLKsg1t2wcgtmBC8Ve28pWlydemgtJS2c20=; b=4hsUP2OvotNhNXauUj1DDopPhAkHT0c80GQjf1KX5l3MAenuWz+S6/CbSJxXqzBHccWZpoAjt VMzPPGGredbBLdyEc8m4XbwipDOm9yfnm2sO2dIdhB/TxOCILSGCg9p X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Record register access info for load / store operations. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 6974f594f37c9916fff591ced1e9c2d60cf84f14..804dce129121b9d2600be01af7f= 1f2780a9d0fc9 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -200,8 +200,19 @@ static int arm_spe_read_record(struct arm_spe_decoder = *decoder) decoder->record.op |=3D ARM_SPE_OP_ST; else decoder->record.op |=3D ARM_SPE_OP_LD; - if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) + + if (SPE_OP_PKT_LDST_SUBCLASS_GP_REG(payload)) { + decoder->record.op |=3D ARM_SPE_OP_GP_REG; + } else if (SPE_OP_PKT_LDST_SUBCLASS_SIMD_FP(payload)) { + decoder->record.op |=3D ARM_SPE_OP_SIMD_FP; + } else if (SPE_OP_PKT_LDST_SUBCLASS_UNSPEC_REG(payload)) { + decoder->record.op |=3D ARM_SPE_OP_UNSPEC_REG; + } else if (SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG(payload)) { + decoder->record.op |=3D ARM_SPE_OP_NV_SYSREG; + } else if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) { decoder->record.op |=3D ARM_SPE_OP_SVE; + } + break; case SPE_OP_PKT_HDR_CLASS_OTHER: decoder->record.op |=3D ARM_SPE_OP_OTHER; --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9C2B93502B5; Wed, 12 Nov 2025 18:25:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971919; cv=none; b=lBwCMjC9nZWRHlmWz5VVdccR9zGnrCSz4K35j8ZTKTJwPo0aYFSJC2FSurglpS85nwqwMUo7FgCLXo2+j5emTzNLE8SNMWrPCHT70AfmF6gYKaJblq7/AsLxjOJVuFVDYJxf4lXobISEo5xZ3DFtAzEqvF33KrDF7+zcWM5z0nE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971919; c=relaxed/simple; bh=9xyqlRibKdfIEBA60SZCFaRYBKwargJv8y6O2L3jq+o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BaHAOuIBchRXBAbjUwyvqMWXYkDA4Vb/itE4qJt8+Orwh9xBx0MTyvkSARD7Z+tlNz1h3GZ4pEnDWzWH/lVbHi7Y0yI7hFZpN1L9cHnpNhrJ6yWNEHdqEa0vZ5ipM6FOM/qJD4Ij62Itkw6b/8AYtynDOFne7XWSppKK9BCqhZM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5CE551595; Wed, 12 Nov 2025 10:25:09 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 297F33F63F; Wed, 12 Nov 2025 10:25:15 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:37 +0000 Subject: [PATCH v3 11/25] perf arm_spe: Report MTE allocation tag in record Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-11-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1653; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=9xyqlRibKdfIEBA60SZCFaRYBKwargJv8y6O2L3jq+o=; b=99TwPDXTKmYflRVDq+1GgjET/RclfTmwE1ao/7lF1CBjBHvBuqemkbSOCGQ8nhmD8fp1uVMOt 6lg2T3fwVVnCj+njyvKHJMZ0Ur3OpFtCujMvHyqse1dDcILKswe/ZjS X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Save MTE tag info in memory record. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 2 ++ tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 1 + 2 files changed, 3 insertions(+) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 804dce129121b9d2600be01af7f1f2780a9d0fc9..6696448bdf4f347e2032a1b4da4= 6fcdd4016f9fc 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -209,6 +209,8 @@ static int arm_spe_read_record(struct arm_spe_decoder *= decoder) decoder->record.op |=3D ARM_SPE_OP_UNSPEC_REG; } else if (SPE_OP_PKT_LDST_SUBCLASS_NV_SYSREG(payload)) { decoder->record.op |=3D ARM_SPE_OP_NV_SYSREG; + } else if (SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG(payload)) { + decoder->record.op |=3D ARM_SPE_OP_MTE_TAG; } else if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) { decoder->record.op |=3D ARM_SPE_OP_SVE; } diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index acab6d11096b19b1d31a553c83cba9732ecf5ddb..7b4d26f2ebfe17a9187f959e5ec= 0b2479f70cc2f 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -44,6 +44,7 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_NV_SYSREG =3D 1 << 10, ARM_SPE_OP_SIMD_FP =3D 1 << 11, ARM_SPE_OP_SVE =3D 1 << 12, + ARM_SPE_OP_MTE_TAG =3D 1 << 13, =20 /* Assisted information for memory / SIMD */ ARM_SPE_OP_LD =3D 1 << 20, --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 829D3350A11; Wed, 12 Nov 2025 18:25:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971920; cv=none; b=W4s3Ln9RVQNfaVecttTe/WppXrbGB7e4Wy2gSA1jTDItDCUhQJyYmxwEyA0u+cmWDPokDxHiDRnGd2CIXIEP11BChtKAQse9KXozMNO3IcZzyITzNLEjd93Wr8PlcLLuP7hassx0aWvkIG1JNTb+EWtumPLbduBvMrZYbvXPjQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971920; c=relaxed/simple; bh=IN1q4IBQZez4Gc/ZmEnYrKyLPI5UL1+SlIBjzXyHK0A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Ka5RyjpQtA66iu+C8hMIr8k/22u7xrfzIQIYMkLk0Wv1zNa4zlJ4cM4YsNtZ+/0Sjt8YYMFxUtkvglqDlwXFswmyp5kUeNBsishgz2FFlrItncXLrkl/ACP+8FJEE7sJIa7Vb7hU2gJ8oH7vVyH2I3P5hj2B7HlM/b7Ec/B4hwE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 83C621515; Wed, 12 Nov 2025 10:25:11 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 504073F63F; Wed, 12 Nov 2025 10:25:17 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:38 +0000 Subject: [PATCH v3 12/25] perf arm_spe: Report extended memory operations in records Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-12-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1324; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=IN1q4IBQZez4Gc/ZmEnYrKyLPI5UL1+SlIBjzXyHK0A=; b=gm7Ug7SfbufrC8gQNypKLowGc/kYYlopBFgaPUUnzEqs+elkD5cF/0ZlTiYoEYkp1fY66AYNs 46Y9FMdykLQB/3rYRizpiiI+ROvXsBStnl4OOLRCln/NrQhtSxaz/rC X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Extended memory operations include atomic (AT), acquire/release (AR), and exclusive (EXCL) operations. Save the relevant information in the records. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 6696448bdf4f347e2032a1b4da46fcdd4016f9fc..949c20816826a4d45d6cf9a5efa= a125acea90b0a 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -211,6 +211,13 @@ static int arm_spe_read_record(struct arm_spe_decoder = *decoder) decoder->record.op |=3D ARM_SPE_OP_NV_SYSREG; } else if (SPE_OP_PKT_LDST_SUBCLASS_MTE_TAG(payload)) { decoder->record.op |=3D ARM_SPE_OP_MTE_TAG; + } else if (SPE_OP_PKT_LDST_SUBCLASS_EXTENDED(payload)) { + if (payload & SPE_OP_PKT_AR) + decoder->record.op |=3D ARM_SPE_OP_AR; + if (payload & SPE_OP_PKT_EXCL) + decoder->record.op |=3D ARM_SPE_OP_EXCL; + if (payload & SPE_OP_PKT_AT) + decoder->record.op |=3D ARM_SPE_OP_ATOMIC; } else if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) { decoder->record.op |=3D ARM_SPE_OP_SVE; } --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E5672350D50; Wed, 12 Nov 2025 18:25:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971924; cv=none; b=fKtzuQ33crBVUw37MKRzu+LRv9XrkT29nEDp4LMMl1Vd0QCds3SBkiw6syQ9yTQZaE8nqlV8TviPG3gFqRhbeHIAvwMCsT3uwqLTxefsF3YO/IhNbNRbmsYlQnh5Y4Po8/JVEjeUBUL9GSVr7DStFd2ivn1GQh2mjuaVIdn7y9w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971924; c=relaxed/simple; bh=zinKOe0OnQlC3Qe3ta5WLcFD5NOnPxLV9drCk020yzQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u8btRoYFWsfx+gxpGkgtx19yj/f8QvFy3D43eqUXOJbp1yUgt3lTuS9/Xb3dcNQPUvzkImjTwszwT6+eL+rV0+LS64AzB5I8oNDr+worb0lMsDm/TQNkigLaHrc8stBJADh6gQ8NNyC19p78TuCk3KLT37cINKgya/MVSE3n9xg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id A9DBD1595; Wed, 12 Nov 2025 10:25:13 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 76FD73F63F; Wed, 12 Nov 2025 10:25:19 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:39 +0000 Subject: [PATCH v3 13/25] perf arm_spe: Report associated info for SVE / SME operations Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-13-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1727; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=zinKOe0OnQlC3Qe3ta5WLcFD5NOnPxLV9drCk020yzQ=; b=6eQaJ0aVbt1AvGMj7YCiPsy7qYWnCVa2fzc/QCpuvrwZUKsLmAzG3WyPtjASpEJI/kttRb+Yj Z0WZZ5FzHuuAL6FBSygEo4inPPZdnUelxeOYMt5NcOexydlM6ag80cl X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= SVE / SME operations can be predicated or Gather load / scatter store, save the relevant info into record. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 4 ++++ tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 949c20816826a4d45d6cf9a5efaa125acea90b0a..5b214fc4ca9f67cf11700a18939= f37f4a5400b84 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -220,6 +220,10 @@ static int arm_spe_read_record(struct arm_spe_decoder = *decoder) decoder->record.op |=3D ARM_SPE_OP_ATOMIC; } else if (SPE_OP_PKT_LDST_SUBCLASS_SVE_SME_REG(payload)) { decoder->record.op |=3D ARM_SPE_OP_SVE; + if (payload & SPE_OP_PKT_SVE_PRED) + decoder->record.op |=3D ARM_SPE_OP_PRED; + if (payload & SPE_OP_PKT_SVE_SG) + decoder->record.op |=3D ARM_SPE_OP_SG; } =20 break; diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index 7b4d26f2ebfe17a9187f959e5ec0b2479f70cc2f..d14cf6b95507bcbdb1f7e6d4908= e6c40c4a8279c 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -53,6 +53,8 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_EXCL =3D 1 << 23, ARM_SPE_OP_AR =3D 1 << 24, ARM_SPE_OP_DP =3D 1 << 25, /* Data processing */ + ARM_SPE_OP_PRED =3D 1 << 26, /* Predicated */ + ARM_SPE_OP_SG =3D 1 << 27, /* Gather/Scatter */ }; =20 enum arm_spe_2nd_op_branch { --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1592734B674; Wed, 12 Nov 2025 18:25:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971925; cv=none; b=kpz6pTNV7h/LL+TN0JMSfwR2l5KAOKsYHj8JF9nF7+UoUMYBJpubs9+riRZszFri7/BRgKMaoK/GxVNWlkr/WETQFnWhsQbrowwd+QuzyRXnw7jmkP5SRn8lUj+DpGDZSPWSwGSiOsrISkHA2cKjfFMW+2ZHTYYYx/FczN0TCQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971925; c=relaxed/simple; bh=/o6IlPDccsoR4PgqXvnisv0NgEarTT/VpnQkQ92xlAQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=lXEMbZhql0qPnc8AGSE+xeFqkJfMizOeK3P2WlDuQWERw7dOI9flGfpwKAlJufTdjsqnNtSKWyOvA6zkPufU3podIeDJcjTI43YW/li3T8Sz/OVZ419KN9kHlA+UxdTSfiuu05GzYzAbuxtQpHHTXIbHZi/d7mn/YnpYq+kfmLc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id D09101515; Wed, 12 Nov 2025 10:25:15 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 9C9103F63F; Wed, 12 Nov 2025 10:25:21 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:40 +0000 Subject: [PATCH v3 14/25] perf arm_spe: Report memset and memcpy in records Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-14-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1678; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=/o6IlPDccsoR4PgqXvnisv0NgEarTT/VpnQkQ92xlAQ=; b=47V3c1u5vYmIY4n1IjVgZFv6xGDnXGNOZMvec/1n63rBg3N19ZiV5kX4ExuFOpXMV7qvjw2e2 4z7+xfyX72NCYwDhLl+6vouIrEVKrh22DYwy6y3dv2ubhK9K39OawT5 X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Expose memset and memcpy related info in records. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 4 ++++ tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 5b214fc4ca9f67cf11700a18939f37f4a5400b84..6f0390d4089599cd6bbf1357fa4= cd6ec8190a58c 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -224,6 +224,10 @@ static int arm_spe_read_record(struct arm_spe_decoder = *decoder) decoder->record.op |=3D ARM_SPE_OP_PRED; if (payload & SPE_OP_PKT_SVE_SG) decoder->record.op |=3D ARM_SPE_OP_SG; + } else if (SPE_OP_PKT_LDST_SUBCLASS_MEMCPY(payload)) { + decoder->record.op |=3D ARM_SPE_OP_MEMCPY; + } else if (SPE_OP_PKT_LDST_SUBCLASS_MEMSET(payload)) { + decoder->record.op |=3D ARM_SPE_OP_MEMSET; } =20 break; diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index d14cf6b95507bcbdb1f7e6d4908e6c40c4a8279c..3f4dae589c062d927d286b73ce5= 3fa39795daffd 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -45,6 +45,8 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_SIMD_FP =3D 1 << 11, ARM_SPE_OP_SVE =3D 1 << 12, ARM_SPE_OP_MTE_TAG =3D 1 << 13, + ARM_SPE_OP_MEMCPY =3D 1 << 14, + ARM_SPE_OP_MEMSET =3D 1 << 15, =20 /* Assisted information for memory / SIMD */ ARM_SPE_OP_LD =3D 1 << 20, --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 11DC028A701; Wed, 12 Nov 2025 18:25:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971927; cv=none; b=by9Jsu8nY8SYhDtqSiXmEl4WWzHyr8k6iKEKzwmczqqKEo/x5sYWux7b76OTb36GccM+nlmkyvTvwX53yoDXNlYEmC9i3bJ9IQats19frFAr5nz1WyNXbN9/ZEA6Ix7IKZDpyY3LYeY9xY7GBHlRqvzD/FStAvm31TJULIhgOh0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971927; c=relaxed/simple; bh=ixiUf5kOPNGqDsCLn1W0tcm157BdMTyzNAxILZdP0Es=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ljrSTmcOy/jXpLrDlrvfnTbPeTnV0Pgz6EOM9b3eqDZqbYlZhoVM8/c/DXaRnVNGfnE6xjdIL9Tngxwkku9eHEK9mmRvqS8Xa1TmUzug/j2s5w0jyNhBQb9WA5FB/JfpU1KwwcRwVFpX2d+6ZWnm3rl5NsqlcIVDyJPxnXMQv+4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 006D51595; Wed, 12 Nov 2025 10:25:18 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C3ECF3F63F; Wed, 12 Nov 2025 10:25:23 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:41 +0000 Subject: [PATCH v3 15/25] perf arm_spe: Report GCS in record Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-15-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1911; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=ixiUf5kOPNGqDsCLn1W0tcm157BdMTyzNAxILZdP0Es=; b=dTxFQHkfBmrYaaAmtkXLbyMUqdf5A53aT8fwSC86X4bDlY+0jdmCVEwcY2l6ND/fiOo5k/lBg VZiCt6xvcscChUd0xLny/MQPCl+Ajs2Vg5/p5OyHWXxEPpXuwZyusqg X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Report GCS related info in records. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 4 ++++ tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 6f0390d4089599cd6bbf1357fa4cd6ec8190a58c..649471abef6a4386e1b250a19cd= a4f4caeb0a2ff 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -228,6 +228,10 @@ static int arm_spe_read_record(struct arm_spe_decoder = *decoder) decoder->record.op |=3D ARM_SPE_OP_MEMCPY; } else if (SPE_OP_PKT_LDST_SUBCLASS_MEMSET(payload)) { decoder->record.op |=3D ARM_SPE_OP_MEMSET; + } else if (SPE_OP_PKT_LDST_SUBCLASS_GCS(payload)) { + decoder->record.op |=3D ARM_SPE_OP_GCS; + if (payload & SPE_OP_PKT_GCS_COMM) + decoder->record.op |=3D ARM_SPE_OP_COMM; } =20 break; diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index 3f4dae589c062d927d286b73ce53fa39795daffd..b838e9c6168c6b7c20bb63b8e7c= 9d27c35f416dc 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -47,6 +47,7 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_MTE_TAG =3D 1 << 13, ARM_SPE_OP_MEMCPY =3D 1 << 14, ARM_SPE_OP_MEMSET =3D 1 << 15, + ARM_SPE_OP_GCS =3D 1 << 16, =20 /* Assisted information for memory / SIMD */ ARM_SPE_OP_LD =3D 1 << 20, @@ -57,6 +58,7 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_DP =3D 1 << 25, /* Data processing */ ARM_SPE_OP_PRED =3D 1 << 26, /* Predicated */ ARM_SPE_OP_SG =3D 1 << 27, /* Gather/Scatter */ + ARM_SPE_OP_COMM =3D 1 << 28, /* Common */ }; =20 enum arm_spe_2nd_op_branch { --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3C70C352953; Wed, 12 Nov 2025 18:25:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971929; cv=none; b=SK7U+mdef9LdY1y71leT3lLdp+7hi7KLNPmByBVJ8bJHty/9d8RgIpvaLdkiI5BkJtnx8A62AoiqnEyhEC2U69oCpStPYSMcgL7eLTxsABHl/yXe5FCUCQOLCvtRrLcD0+UuKxaF79Kj9mWCd+kr4Hj2Dz3/YYm+JlW2irXkZi8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971929; c=relaxed/simple; bh=0Rj939NM3iG/pLeQmRL25+gYfRynCaxeME2R2V47qeU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nLzaFN+bKPv2BpDGmuCL/w+XnGqMso6CVaIS3hBXDb2pRHYmDq3fsww5gJTvIuVaivQM1fubovp6btPwxrHuplKMGP2wsO6UrXitcyJGq7HEvQcmfQ1iSzt5HMCGafHs3n60avu2sYI5UT09/cmcgma7LIpen+sNLDNqLd5YI78= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 2668C1691; Wed, 12 Nov 2025 10:25:20 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id EA4263F63F; Wed, 12 Nov 2025 10:25:25 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:42 +0000 Subject: [PATCH v3 16/25] perf arm_spe: Expose SIMD information in other operations Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-16-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=2811; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=0Rj939NM3iG/pLeQmRL25+gYfRynCaxeME2R2V47qeU=; b=Oc7qUCOmiaiKupNirHlVKXVXwWl0ZW+v/KEntXWEpEAH5cRKCXUfVQOPcAVGRB4W+OLGuc8/x LYOsi1C6OEYAlF69iV8Nhi5Dut2JRbFA6h7scRa4i64mGX+N9rBnsa+ X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= The other operations contain SME data processing, ASE (Advanced SIMD) and floating-point operations. Expose these info in the records. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 18 +++++++++++++++++- tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 649471abef6a4386e1b250a19cda4f4caeb0a2ff..9e02b2bdd1177193996d071dd88= f969e25b1ad86 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -237,8 +237,24 @@ static int arm_spe_read_record(struct arm_spe_decoder = *decoder) break; case SPE_OP_PKT_HDR_CLASS_OTHER: decoder->record.op |=3D ARM_SPE_OP_OTHER; - if (SPE_OP_PKT_OTHER_SUBCLASS_SVE(payload)) + if (SPE_OP_PKT_OTHER_SUBCLASS_SVE(payload)) { decoder->record.op |=3D ARM_SPE_OP_SVE | ARM_SPE_OP_DP; + if (payload & SPE_OP_PKT_OTHER_FP) + decoder->record.op |=3D ARM_SPE_OP_FP; + if (payload & SPE_OP_PKT_SVE_PRED) + decoder->record.op |=3D ARM_SPE_OP_PRED; + } else if (SPE_OP_PKT_OTHER_SUBCLASS_SME(payload)) { + decoder->record.op |=3D ARM_SPE_OP_SME; + if (payload & SPE_OP_PKT_OTHER_FP) + decoder->record.op |=3D ARM_SPE_OP_FP; + } else if (SPE_OP_PKT_OTHER_SUBCLASS_OTHER(payload)) { + if (payload & SPE_OP_PKT_OTHER_ASE) + decoder->record.op |=3D ARM_SPE_OP_ASE; + if (payload & SPE_OP_PKT_OTHER_FP) + decoder->record.op |=3D ARM_SPE_OP_FP; + if (payload & SPE_OP_PKT_COND) + decoder->record.op |=3D ARM_SPE_OP_COND; + } break; case SPE_OP_PKT_HDR_CLASS_BR_ERET: decoder->record.op |=3D ARM_SPE_OP_BRANCH_ERET; diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index b838e9c6168c6b7c20bb63b8e7c9d27c35f416dc..3310e05122f02e8ef32f79f8ed3= c6932cc43eecc 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -48,6 +48,8 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_MEMCPY =3D 1 << 14, ARM_SPE_OP_MEMSET =3D 1 << 15, ARM_SPE_OP_GCS =3D 1 << 16, + ARM_SPE_OP_SME =3D 1 << 17, + ARM_SPE_OP_ASE =3D 1 << 18, =20 /* Assisted information for memory / SIMD */ ARM_SPE_OP_LD =3D 1 << 20, @@ -59,6 +61,8 @@ enum arm_spe_2nd_op_ldst { ARM_SPE_OP_PRED =3D 1 << 26, /* Predicated */ ARM_SPE_OP_SG =3D 1 << 27, /* Gather/Scatter */ ARM_SPE_OP_COMM =3D 1 << 28, /* Common */ + ARM_SPE_OP_FP =3D 1 << 29, /* Floating-point */ + ARM_SPE_OP_COND =3D 1 << 30, /* Conditional */ }; =20 enum arm_spe_2nd_op_branch { --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7D73F352F9C; Wed, 12 Nov 2025 18:25:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971931; cv=none; b=dS/3p3nCkPI1aWEdEfc5EhkHuYxjHAp49DIfftlLRGgnrTo2wta27lF3DQ4QkyWN1i8bfVpenEoeymba1MLNmbLDrA7c92/FF+fRxxPf0wvzo6YypRv6sVjaOTplzb+CMYy5aiiIZhkjCnKgSiZmgYLEqM57+4jOqr424mwoa0A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971931; c=relaxed/simple; bh=m5idn6J2HzqiTvemjD/FlbMxoaawJdDwbDm+FfrqOfo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VQsW78GpUmFVAkw4OUzVzFIAgt6+ZWRM2DoWvate5Lcm6RYm43DjS+URvLXLVFESw9KpOzz5IuFoUn0pesETJZ3MElXtzkf0/Q1Sjm52+M1k0s/Zpkc0FD3fGnQNq53ERaLguEEqoxNNGl9IR0Rn8hU1TwGdPcmyXW/g3DvMxYs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 4D3FB1595; Wed, 12 Nov 2025 10:25:22 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 1C5BE3F63F; Wed, 12 Nov 2025 10:25:27 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:43 +0000 Subject: [PATCH v3 17/25] perf arm_spe: Synthesize memory samples for SIMD operations Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-17-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=2159; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=m5idn6J2HzqiTvemjD/FlbMxoaawJdDwbDm+FfrqOfo=; b=/1xv3DjLyB0Bpi4qgeS3nVANRIlcwqsg8kopNdZS/PVx6JNXE9xRellaCT6Au8C1SHFH3AZV+ +RqGgLoDlhdBz0frIw7yCiB/cELTPDAbPMdz7EVF6vfnl1s8sZgn7y/ X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Synthesize memory samples for SIMD operations (including Advanced SIMD, SVE, and SME). To provide complete information, also generate data source entries for SIMD operations. Since memory operations are not limited to load and store, set PERF_MEM_OP_STORE if the operation does not fall into these cases. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 881257d3958705e725f1b7d47b41a93defd231ea..6a9c61d4aeeb2283a426d0a00ff= 7072eb5049c31 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -39,6 +39,11 @@ =20 #define is_ldst_op(op) (!!((op) & ARM_SPE_OP_LDST)) =20 +#define is_simd_op(op) (!!((op) & (ARM_SPE_OP_SIMD_FP | ARM_SPE_OP_SVE | \ + ARM_SPE_OP_SME | ARM_SPE_OP_ASE))) + +#define is_mem_op(op) (is_ldst_op(op) || is_simd_op(op)) + #define ARM_SPE_CACHE_EVENT(lvl) \ (ARM_SPE_##lvl##_ACCESS | ARM_SPE_##lvl##_MISS) =20 @@ -986,8 +991,7 @@ arm_spe__synth_data_source(struct arm_spe_queue *speq, { union perf_mem_data_src data_src =3D {}; =20 - /* Only synthesize data source for LDST operations */ - if (!is_ldst_op(record->op)) + if (!is_mem_op(record->op)) return data_src; =20 if (record->op & ARM_SPE_OP_LD) @@ -995,7 +999,7 @@ arm_spe__synth_data_source(struct arm_spe_queue *speq, else if (record->op & ARM_SPE_OP_ST) data_src.mem_op =3D PERF_MEM_OP_STORE; else - return data_src; + data_src.mem_op =3D PERF_MEM_OP_NA; =20 arm_spe__synth_ds(speq, record, &data_src); arm_spe__synth_memory_level(speq, record, &data_src); @@ -1096,11 +1100,7 @@ static int arm_spe_sample(struct arm_spe_queue *speq) return err; } =20 - /* - * When data_src is zero it means the record is not a memory operation, - * skip to synthesize memory sample for this case. - */ - if (spe->sample_memory && is_ldst_op(record->op)) { + if (spe->sample_memory && is_mem_op(record->op)) { err =3D arm_spe__synth_mem_sample(speq, spe->memory_id, data_src); if (err) return err; --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id AC441353896; Wed, 12 Nov 2025 18:25:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971934; cv=none; b=CkuxNMHQsK8yDNMj1L2ueUA7P2dcVqjOhWeRtLx8MUl3u8hoo0dOFfHZ5iDxy4YFGs/e2eCUxbMZI+mSbRu6RmrX20X8rl1fs+ot7Q46Qx53GMmJ/zX+X9KfcJQcCfG3TAYqL+3wcFD/XMvNJG0iF8Mjz1CU8/Q0qdwwgEa2gx4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971934; c=relaxed/simple; bh=3iw/P+AX4UJGoOiKlHAm4WlW+3qWo8a2n9HzWZAvfJM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fbiVBO9IaBrjskKhYCh7B6fByQ4+YblSydEuJgh2Pgp029l1d0yN62iIWgRS/D6grnUBVaeYQjNvMNTxfucMkt13mnCqQIaVeW0UdRk+lOZskEaH7yn2AHW/BWQLAVYLzdy20PNtkfUSFbQ8gmxE8z2l15O8c+o9VNnaOPE9c1w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 741F31515; Wed, 12 Nov 2025 10:25:24 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 435303F63F; Wed, 12 Nov 2025 10:25:30 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:44 +0000 Subject: [PATCH v3 18/25] perf/uapi: Extend data source fields Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-18-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=3220; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=3iw/P+AX4UJGoOiKlHAm4WlW+3qWo8a2n9HzWZAvfJM=; b=r8RbXPX9xnSN01zcQo1wMZJhTYHVOjQzaenXT7xdLesvu2UErAIu1EuTrd1aCBzaqCQ/a64GB Qna8bcQQwtnCg9+UjlMDhmHJpAHR1BHN5GY4x3usfEXzrLnzOPMkHYf X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Arm CPUs introduce several new types of memory operations, like MTE tag accessing, system register access for nested virtualization, memcpy & memset, and Guarded Control Stack (GCS). For memory operation details, Arm SPE provides information like data (parallel) processing, floating-point, predicated, atomic, exclusive, acquire/release, gather/scatter, and conditional. This commit introduces a field 'mem_op_ext' for extended operation type. The extended operation type can be combined with the existed operation type to express a memory type, for examples, a PERF_MEM_OP_GCS type can be set along with PERF_MEM_OP_LOAD to present a load operation for GCS register access. Bit fields are also added to represent detailed operation attributes. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- include/uapi/linux/perf_event.h | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_even= t.h index 78a362b8002776e5ce83a0d7816601638c61ecc6..9b9fa59fd828756b5e8e93520da= 5a269f0dfff52 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -1309,14 +1309,32 @@ union perf_mem_data_src { mem_snoopx : 2, /* Snoop mode, ext */ mem_blk : 3, /* Access blocked */ mem_hops : 3, /* Hop level */ - mem_rsvd : 18; + mem_op_ext : 4, /* Extended type of opcode */ + mem_dp : 1, /* Data processing */ + mem_fp : 1, /* Floating-point */ + mem_pred : 1, /* Predicated */ + mem_atomic : 1, /* Atomic operation */ + mem_excl : 1, /* Exclusive */ + mem_ar : 1, /* Acquire/release */ + mem_sg : 1, /* Scatter/Gather */ + mem_cond : 1, /* Conditional */ + mem_rsvd : 6; }; }; #elif defined(__BIG_ENDIAN_BITFIELD) union perf_mem_data_src { __u64 val; struct { - __u64 mem_rsvd : 18, + __u64 mem_rsvd : 6, + mem_cond : 1, /* Conditional */ + mem_sg : 1, /* Scatter/Gather */ + mem_ar : 1, /* Acquire/release */ + mem_excl : 1, /* Exclusive */ + mem_atomic : 1, /* Atomic operation */ + mem_pred : 1, /* Predicated */ + mem_fp : 1, /* Floating-point */ + mem_dp : 1, /* Data processing */ + mem_op_ext : 4, /* Extended type of opcode */ mem_hops : 3, /* Hop level */ mem_blk : 3, /* Access blocked */ mem_snoopx : 2, /* Snoop mode, ext */ @@ -1426,6 +1444,16 @@ union perf_mem_data_src { /* 5-7 available */ #define PERF_MEM_HOPS_SHIFT 43 =20 +/* Extended type of memory opcode: */ +#define PERF_MEM_EXT_OP_NA 0x0 /* Not available */ +#define PERF_MEM_EXT_OP_MTE_TAG 0x1 /* MTE tag */ +#define PERF_MEM_EXT_OP_NESTED_VIRT 0x2 /* Nested virtualization */ +#define PERF_MEM_EXT_OP_MEMCPY 0x3 /* Memory copy */ +#define PERF_MEM_EXT_OP_MEMSET 0x4 /* Memory set */ +#define PERF_MEM_EXT_OP_SIMD 0x5 /* SIMD */ +#define PERF_MEM_EXT_OP_GCS 0x6 /* Guarded Control Stack */ +#define PERF_MEM_EXT_OP_SHIFT 46 + #define PERF_MEM_S(a, s) \ (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT) =20 --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E22663538B4; Wed, 12 Nov 2025 18:25:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971936; cv=none; b=IZ2khsfaA5q8bLqJl/3IDbXnIecuvxctQum+W7BGPfE9/cKgjQQ26mKEfOV9d+3jXt8UIXYN8cisW3LkHbdAdvURgf2oxnTx3b9Wj9mQn+IGZ8hVcHzr0+eQnWtsEECwL0QLDWUn59XOGg3D6J45HHTD4TX7o2VuRBD4mhOVvMA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971936; c=relaxed/simple; bh=nC/Q92p0Kkfbn1r09MFtZiy8fIzaDI15INoMzpYTApc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aApLCQcqNsC1qMP3D4Jnu/Lyj9SRzcvuLtRFj3IIfLm32WtH5g10YqQ2pxze/h4+6UcSsgEdA00WpJ7LHVEhbNFFrSpUdxOS6t045GeC/Wfa4l3C8AFUDL4j5pMzNH/DueDFAsc0RUtlZeQY/0+Nq3QOQC6e8B1Iy2+qp9ulO1Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 9A4731595; Wed, 12 Nov 2025 10:25:26 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 69C2C3F63F; Wed, 12 Nov 2025 10:25:32 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:45 +0000 Subject: [PATCH v3 19/25] tools/include: Sync uapi/linux/perf.h with the kernel sources Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-19-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=2534; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=nC/Q92p0Kkfbn1r09MFtZiy8fIzaDI15INoMzpYTApc=; b=ERBFWY8M/wpVv/Umdo38r3jZOslTJmXz7qJVRIL3z7NvxSTdX5bEL7M4ddDKcaqDDg8bw4FTl W3aWJAfRbdjBjD2qrvBayYkwUh8QHygHulDPXUqLnIzVVh2vYKNdsQG X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Sync for extended memory operation bit fields. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/include/uapi/linux/perf_event.h | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/lin= ux/perf_event.h index 78a362b8002776e5ce83a0d7816601638c61ecc6..9b9fa59fd828756b5e8e93520da= 5a269f0dfff52 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -1309,14 +1309,32 @@ union perf_mem_data_src { mem_snoopx : 2, /* Snoop mode, ext */ mem_blk : 3, /* Access blocked */ mem_hops : 3, /* Hop level */ - mem_rsvd : 18; + mem_op_ext : 4, /* Extended type of opcode */ + mem_dp : 1, /* Data processing */ + mem_fp : 1, /* Floating-point */ + mem_pred : 1, /* Predicated */ + mem_atomic : 1, /* Atomic operation */ + mem_excl : 1, /* Exclusive */ + mem_ar : 1, /* Acquire/release */ + mem_sg : 1, /* Scatter/Gather */ + mem_cond : 1, /* Conditional */ + mem_rsvd : 6; }; }; #elif defined(__BIG_ENDIAN_BITFIELD) union perf_mem_data_src { __u64 val; struct { - __u64 mem_rsvd : 18, + __u64 mem_rsvd : 6, + mem_cond : 1, /* Conditional */ + mem_sg : 1, /* Scatter/Gather */ + mem_ar : 1, /* Acquire/release */ + mem_excl : 1, /* Exclusive */ + mem_atomic : 1, /* Atomic operation */ + mem_pred : 1, /* Predicated */ + mem_fp : 1, /* Floating-point */ + mem_dp : 1, /* Data processing */ + mem_op_ext : 4, /* Extended type of opcode */ mem_hops : 3, /* Hop level */ mem_blk : 3, /* Access blocked */ mem_snoopx : 2, /* Snoop mode, ext */ @@ -1426,6 +1444,16 @@ union perf_mem_data_src { /* 5-7 available */ #define PERF_MEM_HOPS_SHIFT 43 =20 +/* Extended type of memory opcode: */ +#define PERF_MEM_EXT_OP_NA 0x0 /* Not available */ +#define PERF_MEM_EXT_OP_MTE_TAG 0x1 /* MTE tag */ +#define PERF_MEM_EXT_OP_NESTED_VIRT 0x2 /* Nested virtualization */ +#define PERF_MEM_EXT_OP_MEMCPY 0x3 /* Memory copy */ +#define PERF_MEM_EXT_OP_MEMSET 0x4 /* Memory set */ +#define PERF_MEM_EXT_OP_SIMD 0x5 /* SIMD */ +#define PERF_MEM_EXT_OP_GCS 0x6 /* Guarded Control Stack */ +#define PERF_MEM_EXT_OP_SHIFT 46 + #define PERF_MEM_S(a, s) \ (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT) =20 --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 18FA03546F5; Wed, 12 Nov 2025 18:25:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971938; cv=none; b=FEd9yhLsl4Tc8f1G82GbqG9HvFDYRTEP8NnyxqeYdAiTJ16U5U0JGtZuGEdJ5O/FpD8S1IRub+6/dI3QDiBAOg9Pdm02H5b3BHGrUme14BrczCgA9y15DzByUrHAuYs13rjsAi0iv60GJWdYozJdf3Hhd9thfsID2ly4Nf/uZlY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971938; c=relaxed/simple; bh=A7ojri2MUqobrd+TLOmz8lLFTBFq9buLIlAc/yoYVBg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=oTMLoxplY2AECRZUXUHH6zLtDmmDGbaVHk1zSc/51f4hANBZu8i3DkqCl8mAIvUyj6eVVn7n94+mquGiKarGIAMA+Slt9xZATGI8uQOqXxqiUKuSj8Tbo3tXDe22JWAJ3vQvtK0nq24Uts9ndIECMUdUOU9mOXhw8GUCtm7HVuw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C33651515; Wed, 12 Nov 2025 10:25:28 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 900473F63F; Wed, 12 Nov 2025 10:25:34 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:46 +0000 Subject: [PATCH v3 20/25] perf mem: Print extended fields Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-20-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=3651; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=A7ojri2MUqobrd+TLOmz8lLFTBFq9buLIlAc/yoYVBg=; b=+CIICRF0kKKwCbqZzzjolMZ58mP7afNb0PCC3SrH5HJHj7vYONLtzPMQwZGjLst13tWe5/Rnj 2vu7+yE0UBTBwRVBtGFXz3igdofry4nf289S/tU7TEPtSIotxwyhZg1 X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Print the extended operation types and affiliate info. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/mem-events.c | 66 ++++++++++++++++++++++++++++++++++++++++= ---- 1 file changed, 60 insertions(+), 6 deletions(-) diff --git a/tools/perf/util/mem-events.c b/tools/perf/util/mem-events.c index 80b3069427bc4bb5ffc3ab0856c01c76d9ba3ba6..c0aee982fb4f1a849c28a8bb016= 93855922832f6 100644 --- a/tools/perf/util/mem-events.c +++ b/tools/perf/util/mem-events.c @@ -413,11 +413,15 @@ static const char * const mem_hops[] =3D { =20 static int perf_mem__op_scnprintf(char *out, size_t sz, const struct mem_i= nfo *mem_info) { - u64 op =3D PERF_MEM_LOCK_NA; + union perf_mem_data_src data_src; + u64 op =3D PERF_MEM_OP_NA, ext_op =3D 0; int l; =20 - if (mem_info) - op =3D mem_info__const_data_src(mem_info)->mem_op; + if (mem_info) { + data_src =3D *mem_info__const_data_src(mem_info); + op =3D data_src.mem_op; + ext_op =3D data_src.mem_op_ext; + } =20 if (op & PERF_MEM_OP_NA) l =3D scnprintf(out, sz, "N/A"); @@ -432,6 +436,19 @@ static int perf_mem__op_scnprintf(char *out, size_t sz= , const struct mem_info *m else l =3D scnprintf(out, sz, "No"); =20 + if (ext_op =3D=3D PERF_MEM_EXT_OP_MTE_TAG) + l +=3D scnprintf(out + l, sz - l, " MTE"); + else if (ext_op =3D=3D PERF_MEM_EXT_OP_NESTED_VIRT) + l +=3D scnprintf(out + l, sz - l, " NV"); + else if (ext_op =3D=3D PERF_MEM_EXT_OP_MEMCPY) + l +=3D scnprintf(out + l, sz - l, " MEMCPY"); + else if (ext_op =3D=3D PERF_MEM_EXT_OP_MEMSET) + l +=3D scnprintf(out + l, sz - l, " MEMSET"); + else if (ext_op =3D=3D PERF_MEM_EXT_OP_SIMD) + l +=3D scnprintf(out + l, sz - l, " SIMD"); + else if (ext_op =3D=3D PERF_MEM_EXT_OP_GCS) + l +=3D scnprintf(out + l, sz - l, " GCS"); + return l; } =20 @@ -582,9 +599,6 @@ int perf_mem__blk_scnprintf(char *out, size_t sz, const= struct mem_info *mem_inf size_t l =3D 0; u64 mask =3D PERF_MEM_BLK_NA; =20 - sz -=3D 1; /* -1 for null termination */ - out[0] =3D '\0'; - if (mem_info) mask =3D mem_info__const_data_src(mem_info)->mem_blk; =20 @@ -600,6 +614,44 @@ int perf_mem__blk_scnprintf(char *out, size_t sz, cons= t struct mem_info *mem_inf return l; } =20 +static int perf_mem__aff_scnprintf(char *out, size_t sz, + const struct mem_info *mem_info) +{ + union perf_mem_data_src data_src; + size_t l =3D 0; + + sz -=3D 1; /* -1 for null termination */ + out[0] =3D '\0'; + + if (!mem_info) + goto out; + + data_src =3D *mem_info__const_data_src(mem_info); + + if (data_src.mem_dp) + l +=3D scnprintf(out + l, sz - l, " DP"); + if (data_src.mem_fp) + l +=3D scnprintf(out + l, sz - l, " FP"); + if (data_src.mem_pred) + l +=3D scnprintf(out + l, sz - l, " PRED"); + if (data_src.mem_atomic) + l +=3D scnprintf(out + l, sz - l, " ATOMIC"); + if (data_src.mem_excl) + l +=3D scnprintf(out + l, sz - l, " EX"); + if (data_src.mem_ar) + l +=3D scnprintf(out + l, sz - l, " AR"); + if (data_src.mem_sg) + l +=3D scnprintf(out + l, sz - l, " SG"); + if (data_src.mem_cond) + l +=3D scnprintf(out + l, sz - l, " COND"); + +out: + if (!l) + l +=3D scnprintf(out + l, sz - l, " N/A"); + + return l; +} + int perf_script__meminfo_scnprintf(char *out, size_t sz, const struct mem_= info *mem_info) { int i =3D 0; @@ -616,6 +668,8 @@ int perf_script__meminfo_scnprintf(char *out, size_t sz= , const struct mem_info * i +=3D perf_mem__lck_scnprintf(out + i, sz - i, mem_info); i +=3D scnprintf(out + i, sz - i, "|BLK "); i +=3D perf_mem__blk_scnprintf(out + i, sz - i, mem_info); + i +=3D scnprintf(out + i, sz - i, "|AFF"); + i +=3D perf_mem__aff_scnprintf(out + i, sz - i, mem_info); =20 return i; } --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F3B0A354ACC; Wed, 12 Nov 2025 18:25:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971940; cv=none; b=VmNDnrtWkXlszYYwQbmvW1/3llb7lca9eyJ8FizeOBVq+as0q24VnzAjEq2QtVKlTsiTAwBXGXVxnOy/k6ZPGdFRHUBZ2R63du9xNTLDUsWcnu8Qse6nL7qlO1KBwirF353Xim1vZrLd2it4S33yQ1Y5jAuKMeavIJELD8ze4Wg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971940; c=relaxed/simple; bh=5YDWSHCp308PlRgo20hzfdD6cFsvcCrwa62qo3vSJIE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Re67zgjF70qb49qS/6hd5m3I1qL8W5+SW5x0yguHj4QzfCBxpDXXkz5DBapD6riQbjrawBIW/XVsHAfZJvLABv5IBfXaVMA66GEUn7kaygCqRmZafDqVd8Cr/3psA6+QWuZLopkm5RsG/zgIhyoERdihs8cpywFLA2raCiIjo90= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E8FB91595; Wed, 12 Nov 2025 10:25:30 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id B5F5D3F63F; Wed, 12 Nov 2025 10:25:36 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:47 +0000 Subject: [PATCH v3 21/25] perf arm_spe: Set extended fields in data source Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-21-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=3016; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=5YDWSHCp308PlRgo20hzfdD6cFsvcCrwa62qo3vSJIE=; b=olJm9R98i3DP4S/SpCZ95NvsafPl0pz5q3tYTwzmeJpaxr2SnOooiu+0hOiVmCfadWy2b8W60 xO+aZWQ2MEDDKHsWZzR+xTFmEtNqkUws9Ej6znG2i7z7nHeF2GLS963 X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Set extended operation type and affiliate info in the data source. Before: perf script -F,dso,sym,data_src sve-test 6516696.714341: 288100144 |OP STORE|LVL L1 hit|SNP None|T= LB Walker hit|LCK No|BLK N/A|AFF N/A sve-test 6516696.714341: 288100144 |OP STORE|LVL L1 hit|SNP None|T= LB Walker hit|LCK No|BLK N/A|AFF N/A sve-test 6516696.714341: 288100144 |OP STORE|LVL L1 hit|SNP None|T= LB Walker hit|LCK No|BLK N/A|AFF N/A sve-test 6516696.714344: 288800142 |OP LOAD|LVL L1 hit|SNP HitM|TL= B Walker hit|LCK No|BLK N/A|AFF N/A sve-test 6516696.714344: 288800142 |OP LOAD|LVL L1 hit|SNP HitM|TL= B Walker hit|LCK No|BLK N/A|AFF N/A After: perf script -F,dso,sym,data_src sve-test 6516696.714341: 444000288100144 |OP STORE SIMD|LVL L1 hit|SNP N= one|TLB Walker hit|LCK No|BLK N/A|AFF PRED SG sve-test 6516696.714341: 444000288100144 |OP STORE SIMD|LVL L1 hit|SNP N= one|TLB Walker hit|LCK No|BLK N/A|AFF PRED SG sve-test 6516696.714341: 444000288100144 |OP STORE SIMD|LVL L1 hit|SNP N= one|TLB Walker hit|LCK No|BLK N/A|AFF PRED SG sve-test 6516696.714344: 288800142 |OP LOAD|LVL L1 hit|SNP HitM|TL= B Walker hit|LCK No|BLK N/A|AFF N/A sve-test 6516696.714344: 288800142 |OP LOAD|LVL L1 hit|SNP HitM|TL= B Walker hit|LCK No|BLK N/A|AFF N/A Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 6a9c61d4aeeb2283a426d0a00ff7072eb5049c31..3b2d767f7a3e156594a69e7b546= f3156cceb4951 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -1001,6 +1001,36 @@ arm_spe__synth_data_source(struct arm_spe_queue *spe= q, else data_src.mem_op =3D PERF_MEM_OP_NA; =20 + if (record->op & ARM_SPE_OP_MTE_TAG) + data_src.mem_op_ext =3D PERF_MEM_EXT_OP_MTE_TAG; + else if (record->op & ARM_SPE_OP_NV_SYSREG) + data_src.mem_op_ext =3D PERF_MEM_EXT_OP_NESTED_VIRT; + else if (record->op & ARM_SPE_OP_MEMCPY) + data_src.mem_op_ext =3D PERF_MEM_EXT_OP_MEMCPY; + else if (record->op & ARM_SPE_OP_MEMSET) + data_src.mem_op_ext =3D PERF_MEM_EXT_OP_MEMSET; + else if (record->op & ARM_SPE_OP_GCS) + data_src.mem_op_ext =3D PERF_MEM_EXT_OP_GCS; + else if (is_simd_op(record->op)) + data_src.mem_op_ext =3D PERF_MEM_EXT_OP_SIMD; + + if (record->op & ARM_SPE_OP_DP) + data_src.mem_dp =3D 1; + if (record->op & ARM_SPE_OP_FP) + data_src.mem_fp =3D 1; + if (record->op & ARM_SPE_OP_PRED) + data_src.mem_pred =3D 1; + if (record->op & ARM_SPE_OP_ATOMIC) + data_src.mem_atomic =3D 1; + if (record->op & ARM_SPE_OP_EXCL) + data_src.mem_excl =3D 1; + if (record->op & ARM_SPE_OP_AR) + data_src.mem_ar =3D 1; + if (record->op & ARM_SPE_OP_SG) + data_src.mem_sg =3D 1; + if (record->op & ARM_SPE_OP_COND) + data_src.mem_cond =3D 1; + arm_spe__synth_ds(speq, record, &data_src); arm_spe__synth_memory_level(speq, record, &data_src); =20 --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 56E98355051; Wed, 12 Nov 2025 18:25:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971942; cv=none; b=RlfJN+Qcc3UkYf3YEkihKnGK5zga6ukmJmST/9E3HhkT8mHswoLqE9jHfGcOdgrFeqaXevogrisr3N6VYPhPDdn34jx2nGyFpbhSPUaB2ChGOQq3kegXnxboYQUpOlumWKCv8IDX2u44T0ChVmi/7wDKp6+1y+ZplKaLlTbyA2c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971942; c=relaxed/simple; bh=LxrG4la+UU2a+kngmi6pw8OHWq6AgFvXmkETg/5yk98=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=vDdxRtlknAqCBYfKE9WqAaxa2nT7vqeRV10BvuJ9l5KdF1pQZzz4Fev/h7V6nlcYaapJIwz7g9KEPU/sYCjU1McxcJd/wIQ2eLpMA+BdVjZ78qaMnwc5yzhcwjkJ4N6kJY5G6nTpSQsm8HprbknONhjwFU7F2RlMpE5EtL8Vbn8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1C4501691; Wed, 12 Nov 2025 10:25:33 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DB4283F63F; Wed, 12 Nov 2025 10:25:38 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:48 +0000 Subject: [PATCH v3 22/25] perf sort: Support sort ASE and SME Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-22-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1741; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=LxrG4la+UU2a+kngmi6pw8OHWq6AgFvXmkETg/5yk98=; b=3TNxdgsR0iBsThzYaTBhdiJqn4PfQb5ccKGAfXOwWG1R8thb/K8ZsSarDKxp172ZFoE7uuRvu ZoDoXWrzFXvC9Muuet5X8zj2QxvT33z8CtPU4n5pKQlDngD4tC+9e+q X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Support sort Advance SIMD extension (ASE) and SME. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/sample.h | 12 +++++++++--- tools/perf/util/sort.c | 6 +++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tools/perf/util/sample.h b/tools/perf/util/sample.h index fae834144ef42105d08a59704ee75cd4852bbc5a..3b22cc2f7ad6ba1dc53b5d9ffff= 2a4e47c89612a 100644 --- a/tools/perf/util/sample.h +++ b/tools/perf/util/sample.h @@ -67,12 +67,18 @@ struct aux_sample { }; =20 struct simd_flags { - u8 arch:1, /* architecture (isa) */ - pred:2; /* predication */ + u8 arch: 2, /* architecture (isa) */ + pred: 2, /* predication */ + resv: 4; /* reserved */ }; =20 /* simd architecture flags */ -#define SIMD_OP_FLAGS_ARCH_SVE 0x01 /* ARM SVE */ +enum simd_op_flags { + SIMD_OP_FLAGS_ARCH_NONE =3D 0x0, /* No SIMD operation */ + SIMD_OP_FLAGS_ARCH_SVE, /* Arm SVE */ + SIMD_OP_FLAGS_ARCH_SME, /* Arm SME */ + SIMD_OP_FLAGS_ARCH_ASE, /* Arm Advanced SIMD */ +}; =20 /* simd predicate flags */ #define SIMD_OP_FLAGS_PRED_PARTIAL 0x01 /* partial predicate */ diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index f3a565b0e2307a8adf159725f803df5fef0dff83..ad98d5b75f34b49cd39e30cba99= 7a614654eebcb 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -193,8 +193,12 @@ static const char *hist_entry__get_simd_name(struct si= md_flags *simd_flags) { u64 arch =3D simd_flags->arch; =20 - if (arch & SIMD_OP_FLAGS_ARCH_SVE) + if (arch =3D=3D SIMD_OP_FLAGS_ARCH_SVE) return "SVE"; + else if (arch =3D=3D SIMD_OP_FLAGS_ARCH_SME) + return "SME"; + else if (arch =3D=3D SIMD_OP_FLAGS_ARCH_ASE) + return "ASE"; else return "n/a"; } --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 51A8235580E; Wed, 12 Nov 2025 18:25:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971946; cv=none; b=ALndLKC6w5hyG8FE/0Mb0Qlz+0ai0rnsuP0sYLBTLMEn/y4RXr38bJWqZaHs5x/FZYcuLB0ARh9DqwbvpZFtuHN4wLJ7gFkpyJgrIsr9j6mLPRyYpCfIO/n64EXCHIc2KO1Tzwd/3J4ndhuA3WEWmUKFUQOizssg8EdDuj8SbZc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971946; c=relaxed/simple; bh=1Vk+T+Hx3u2vOsFODCfgVnGRN0oLOre+czspaI2a/pc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ONfLpJi60jMKgInph71+GJbdR+qzD4feReFlOw9QZ0akd5cm3Z1QG4HbmRqZk2PewKqAfyfruVNHz5aotf3iz20T0SjQlvT2xlAnEZe2WKdjf+iKsjiNoUMIdpOCSh8P/8e480K0KHePleiP6eYk7yoAfCu6wxm608a4fLiCAHg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 42A7C169C; Wed, 12 Nov 2025 10:25:35 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 0E9AC3F63F; Wed, 12 Nov 2025 10:25:40 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:49 +0000 Subject: [PATCH v3 23/25] perf sort: Sort disabled and full predicated flags Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-23-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=2803; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=1Vk+T+Hx3u2vOsFODCfgVnGRN0oLOre+czspaI2a/pc=; b=yHOvnp+TlhiQ+XZbuz7vOkeRByCAEtMRYle3HTe0l91j1wO+QCgnSTq1E+Os6d+wR/ub458du bR8BE5oix51AokhrJNK71y/q6MCSZXX2filH9HybdvdP5m+ysqi8m3g X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= According to the Arm ARM (ARM DDI 0487, L.a), section D18.2.6 "Events packet", apart from the empty predicate and partial predicates, an SVE or SME operation can be predicate-disabled or full predicated. To provide complete results, introduce two predicate types for these cases. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/sample.h | 13 +++++++++---- tools/perf/util/sort.c | 15 ++++++++++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/tools/perf/util/sample.h b/tools/perf/util/sample.h index 3b22cc2f7ad6ba1dc53b5d9ffff2a4e47c89612a..9477fe9c87402dd9135f25a6eee= 2e7539e6fdbca 100644 --- a/tools/perf/util/sample.h +++ b/tools/perf/util/sample.h @@ -68,8 +68,8 @@ struct aux_sample { =20 struct simd_flags { u8 arch: 2, /* architecture (isa) */ - pred: 2, /* predication */ - resv: 4; /* reserved */ + pred: 3, /* predication */ + resv: 3; /* reserved */ }; =20 /* simd architecture flags */ @@ -81,8 +81,13 @@ enum simd_op_flags { }; =20 /* simd predicate flags */ -#define SIMD_OP_FLAGS_PRED_PARTIAL 0x01 /* partial predicate */ -#define SIMD_OP_FLAGS_PRED_EMPTY 0x02 /* empty predicate */ +enum simd_pred_flags { + SIMD_OP_FLAGS_PRED_NONE =3D 0x0, /* Not available */ + SIMD_OP_FLAGS_PRED_PARTIAL, /* partial predicate */ + SIMD_OP_FLAGS_PRED_EMPTY, /* empty predicate */ + SIMD_OP_FLAGS_PRED_FULL, /* full predicate */ + SIMD_OP_FLAGS_PRED_DISABLED, /* disabled predicate */ +}; =20 struct perf_sample { u64 ip; diff --git a/tools/perf/util/sort.c b/tools/perf/util/sort.c index ad98d5b75f34b49cd39e30cba997a614654eebcb..fe203458c6ffbc340450f6fffc1= 3d0e256dfe7cf 100644 --- a/tools/perf/util/sort.c +++ b/tools/perf/util/sort.c @@ -207,18 +207,23 @@ static int hist_entry__simd_snprintf(struct hist_entr= y *he, char *bf, size_t size, unsigned int width __maybe_unused) { const char *name; + const char *pred_str =3D "."; =20 if (!he->simd_flags.arch) return repsep_snprintf(bf, size, ""); =20 name =3D hist_entry__get_simd_name(&he->simd_flags); =20 - if (he->simd_flags.pred & SIMD_OP_FLAGS_PRED_EMPTY) - return repsep_snprintf(bf, size, "[e] %s", name); - else if (he->simd_flags.pred & SIMD_OP_FLAGS_PRED_PARTIAL) - return repsep_snprintf(bf, size, "[p] %s", name); + if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_EMPTY) + pred_str =3D "e"; + else if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_PARTIAL) + pred_str =3D "p"; + else if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_DISABLED) + pred_str =3D "d"; + else if (he->simd_flags.pred =3D=3D SIMD_OP_FLAGS_PRED_FULL) + pred_str =3D "f"; =20 - return repsep_snprintf(bf, size, "[.] %s", name); + return repsep_snprintf(bf, size, "[%s] %s", pred_str, name); } =20 struct sort_entry sort_simd =3D { --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7096534C13B; Wed, 12 Nov 2025 18:25:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971946; cv=none; b=cQfniW3ZAKY+bXaFLt6QaNl9IY9jN6PMnk36pELDy06owIMuwoSPs3EVM2kpzsWM7I5U4hmsPbJvjmxdMGeNg5qlJwKKN9dMU/GVWLrGhFk7UkQxPMWhC4c4f3YeJKy+sW1wMCoaa8MvN6a/9931sqScEduzDGtPQdV1shua9ek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971946; c=relaxed/simple; bh=K+lf5GgTPw3SkqzOp32MWVxQu+Fbe4D7TBbZIbWs9ig=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MI1Yew+Ltz/0AT/P4N6DCpfEKpVp/OGAIJewsAptQvKfOSBSi8/xPF5/XESMW4Iec7By4HnKGbvW3l+hRFNoJ6xpiRs+IPVzumeiOt1NPM658G5/pW+YIu76tYhewdpHbFfCEZF7S/cFNY+nhPSMRNd9a4IFv/t25GCF5HiiGrw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 69E241515; Wed, 12 Nov 2025 10:25:37 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3599C3F63F; Wed, 12 Nov 2025 10:25:43 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:50 +0000 Subject: [PATCH v3 24/25] perf report: Update document for SIMD flags Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-24-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=1301; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=K+lf5GgTPw3SkqzOp32MWVxQu+Fbe4D7TBbZIbWs9ig=; b=V0tiHfzmqzrH0TGCHyBSCp34zPIa+FQGVi/u6CQDwbaRdSFDu59uvlVzziIVT9D9oMOoeZaAm By/UOHiPQMNAHjwbbr2ZVs0Z49i7dVCWV05A4xErpEOz8VNu1IxLtPP X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Update SIMD architecture and predicate flags. Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/Documentation/perf-report.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tools/perf/Documentation/perf-report.txt b/tools/perf/Document= ation/perf-report.txt index acef3ff4178eff66e8f876ae16cdac7b1387f07b..f361081a65dbe9cead539c7cb81= d6ed86eb0acc6 100644 --- a/tools/perf/Documentation/perf-report.txt +++ b/tools/perf/Documentation/perf-report.txt @@ -136,7 +136,10 @@ OPTIONS - addr: (Full) virtual address of the sampled instruction - retire_lat: On X86, this reports pipeline stall of this instruction com= pared to the previous instruction in cycles. And currently supported only on = X86 - - simd: Flags describing a SIMD operation. "e" for empty Arm SVE predicat= e. "p" for partial Arm SVE predicate + - simd: Flags describing a SIMD operation. The architecture type can be A= rm's + ASE (Advanced SIMD extension), SVE, SME. It provides an extra tag for + predicate: "e" for empty predicate, "p" for partial predicate, "d" for + predicate disabled, and "f" for full predicate. - type: Data type of sample memory access. - typeoff: Offset in the data type of sample memory access. - symoff: Offset in the symbol. --=20 2.34.1 From nobody Mon Feb 9 06:19:11 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D94123563CF; Wed, 12 Nov 2025 18:25:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971951; cv=none; b=dshzdNAr5/7scPLvNzCepbE0u7xZ7erV+fl/WLG3AhdB1kQR+p5QULHTS57+V/pKTdqYUSp74lovivJT2u4PtXkuQa2GrRrxJM0+lwg7DSHUscD8ovPAfZzCpFuqzdSujUxXy50aGN87uRWq51YcI9AIzoNew/kKU/bnQ0brEHM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762971951; c=relaxed/simple; bh=j0kKyisEY5DmwcHdmpnBBPgPNHOpFS/nrahq6SrMqBE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FnYrw1W5/aS/qEvlUCjelHDNZMWnwHut7g6CJ978NuUwH8vt48laOwc8LHb6hTtQSGGXJJHJg3OYtZV7YKM1w3jJAHX0lOzAbJ5cY2Isju97598W/LAF+HUildDf0/Wxyruj++nzrhJ9wQMXhUfuOTxE9GzGwENaii9+FiqV7yE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8FB4B1595; Wed, 12 Nov 2025 10:25:39 -0800 (PST) Received: from e132581.arm.com (e132581.arm.com [10.1.196.87]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 5C6153F63F; Wed, 12 Nov 2025 10:25:45 -0800 (PST) From: Leo Yan Date: Wed, 12 Nov 2025 18:24:51 +0000 Subject: [PATCH v3 25/25] perf arm_spe: Improve SIMD flags setting Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251112-perf_support_arm_spev1-3-v3-25-e63c9829f9d9@arm.com> References: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> In-Reply-To: <20251112-perf_support_arm_spev1-3-v3-0-e63c9829f9d9@arm.com> To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Jiri Olsa , Ian Rogers , Adrian Hunter , James Clark , Mark Rutland Cc: Arnaldo Carvalho de Melo , linux-perf-users@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Leo Yan X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762971891; l=3476; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=j0kKyisEY5DmwcHdmpnBBPgPNHOpFS/nrahq6SrMqBE=; b=1QI7VOSWeJUByI6WkD3CdHfdvOvcuZhMDt3TK6LeoHsG/jUOX906/vwRloRmxkhwG4q3cCGqL KA3t8y5aN6YCl0YFm+LdfoP7mXkZjO3zX//hFP+0v7wAuqZ86h7Mdx0 X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Fill in ASE and SME operations for the SIMD arch field. Also set the predicate flags for SVE and SME, but differences between them: SME does not have a predicate flag, so the setting is based on events. SVE provides a predicate flag to indicate whether the predicate is disabled, which allows it to be distinguished into four cases: full predicates, empty predicates, fully predicated, and disabled predicates. After: perf report -s +simd ... 0.06% 0.06% sve-test sve-test [.] setz = [p] SVE 0.06% 0.06% sve-test [kernel.kallsyms] [k] do_raw_spin_lock 0.06% 0.06% sve-test sve-test [.] getz = [p] SVE 0.06% 0.06% sve-test [kernel.kallsyms] [k] timekeeping_advan= ce 0.06% 0.06% sve-test sve-test [.] getz = [d] SVE 0.06% 0.06% sve-test [kernel.kallsyms] [k] update_load_avg 0.06% 0.06% sve-test sve-test [.] getz = [e] SVE 0.05% 0.05% sve-test sve-test [.] setz = [e] SVE 0.05% 0.05% sve-test [kernel.kallsyms] [k] update_curr 0.05% 0.05% sve-test sve-test [.] setz = [d] SVE 0.05% 0.05% sve-test [kernel.kallsyms] [k] do_raw_spin_unlock 0.05% 0.05% sve-test [kernel.kallsyms] [k] timekeeping_updat= e_from_shadow.constprop.0 0.05% 0.05% sve-test sve-test [.] getz = [f] SVE 0.05% 0.05% sve-test sve-test [.] setz = [f] SVE Signed-off-by: Leo Yan Reviewed-by: Ian Rogers Reviewed-by: James Clark --- tools/perf/util/arm-spe.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 3b2d767f7a3e156594a69e7b546f3156cceb4951..6b76a6e9457adc650b7b790b4ab= 38cfe9eca5e22 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -353,12 +353,26 @@ static struct simd_flags arm_spe__synth_simd_flags(co= nst struct arm_spe_record * =20 if (record->op & ARM_SPE_OP_SVE) simd_flags.arch |=3D SIMD_OP_FLAGS_ARCH_SVE; - - if (record->type & ARM_SPE_SVE_PARTIAL_PRED) - simd_flags.pred |=3D SIMD_OP_FLAGS_PRED_PARTIAL; - - if (record->type & ARM_SPE_SVE_EMPTY_PRED) - simd_flags.pred |=3D SIMD_OP_FLAGS_PRED_EMPTY; + else if (record->op & ARM_SPE_OP_SME) + simd_flags.arch |=3D SIMD_OP_FLAGS_ARCH_SME; + else if (record->op & (ARM_SPE_OP_ASE | ARM_SPE_OP_SIMD_FP)) + simd_flags.arch |=3D SIMD_OP_FLAGS_ARCH_ASE; + + if (record->op & ARM_SPE_OP_SVE) { + if (!(record->op & ARM_SPE_OP_PRED)) + simd_flags.pred =3D SIMD_OP_FLAGS_PRED_DISABLED; + else if (record->type & ARM_SPE_SVE_PARTIAL_PRED) + simd_flags.pred =3D SIMD_OP_FLAGS_PRED_PARTIAL; + else if (record->type & ARM_SPE_SVE_EMPTY_PRED) + simd_flags.pred =3D SIMD_OP_FLAGS_PRED_EMPTY; + else + simd_flags.pred =3D SIMD_OP_FLAGS_PRED_FULL; + } else { + if (record->type & ARM_SPE_SVE_PARTIAL_PRED) + simd_flags.pred =3D SIMD_OP_FLAGS_PRED_PARTIAL; + else if (record->type & ARM_SPE_SVE_EMPTY_PRED) + simd_flags.pred =3D SIMD_OP_FLAGS_PRED_EMPTY; + } =20 return simd_flags; } --=20 2.34.1