From nobody Mon Feb 9 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 13125327204; Tue, 6 Jan 2026 12:08: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=1767701295; cv=none; b=DaYTv0qzzqVBBLADv/HzAVhn/hwWZOG7TqPG/kfnMlTF7nTuoPs6jFavZUZlM8cdZYEkWmksGll6uW4CrvDqaa9J5rXZVfjhit9YWSdvO1wCZTJGKWeM63mnJP3tyb69fpHzOWmNMaykCdhKhCuvNdINWkwytoEFHNoztANsvwk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701295; c=relaxed/simple; bh=2G+BYjlyH9qKU86t+h0jsCAN3vIQLlv3pde/45iJtBw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VqLyqxM8VTHbZOEpy9qaPHNk6+ieCfb04Mt54Izxykf38blJmV52DbSzAq1ngMnezL5LusmUVEQvGpm6Cg2ywzgzEzjgJW4a2qmo71WUDSY8iq5paHATwrCEJgaZZKEFX0CeNOoTPKdYxGUIgFT8o6lZtylBJg0VnsUV/jVJL0c= 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 901801595; Tue, 6 Jan 2026 04:08:06 -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 3F5253F5A1; Tue, 6 Jan 2026 04:08:11 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:51 +0000 Subject: [PATCH RESEND v4 1/8] 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: <20260106-perf_support_arm_spev1-3-v4-1-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=3317; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=2G+BYjlyH9qKU86t+h0jsCAN3vIQLlv3pde/45iJtBw=; b=hDaTV4oT1KCsYLy2dwgxUBGOkJJgdVLbu6KouoflubzcU5AeAhyjku3dyJMUMXLhQxRM9nlEA /Qa6YzkEA2fA2bER0j6T84Ll/6lf7Ur2BFcM8ZCnfJZXaJBP23eauEN 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. Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 c44a8fb3e4181c91a1e6e3a40e23fcf1de421af3..3d2c5ee9282efc4a2310f554443= 082f1d0027889 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -1330,14 +1330,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 */ @@ -1447,6 +1465,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 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 94B3132E6AB; Tue, 6 Jan 2026 12:08:16 +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=1767701298; cv=none; b=ZSDxw/dLIUvlOW4kDcyMIm8exA8H+8pddLLER3Mrw7tIYs3XNFVV773J9nrflRfCJc8qfyNnP66ISonq9indNF09Veajd07duD8jEaqYqhuOQ7jsEt5cCiNDlQysA+W0kNLI3o+mSrmAURr8ylnh61Z+Ehm/rVc7qLbgjxhMBGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701298; c=relaxed/simple; bh=wqpObe0Nxv5h+lsHQTKeKqAHWgvWXKjfqylNAhef7+o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uKJ6z1w2WAm3b9IOctJ+f2QyYt3HXDXZKJ4AfqnLo1W3T8GzS67Gk8c/LRe5mspv5LJJMmoONv1xbdaBtkR5e18Yf3v8XDe95X2ZVU4xMxazMGx7wxxtuzly33kQRVUlQ+CMDU6eR1WkjjNSLWvFMeV546DVuT6Eb9bqDXjumLo= 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 19D7F497; Tue, 6 Jan 2026 04:08: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 BA69D3F5A1; Tue, 6 Jan 2026 04:08:13 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:52 +0000 Subject: [PATCH RESEND v4 2/8] 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: <20260106-perf_support_arm_spev1-3-v4-2-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=2631; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=wqpObe0Nxv5h+lsHQTKeKqAHWgvWXKjfqylNAhef7+o=; b=dJdN9RAa95S6tnH8yz58u0q+rqXk1WxUL5mnK96T+L+i+mnlAzl0CwfJFE0D8TaWXsuKPLWiM Tn2n864WEqaBCSQzPFg/xCSwFheyrW7hxP2+/9FzoOt2Gav7gUPqU/G X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Sync for extended memory operation bit fields. Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 c44a8fb3e4181c91a1e6e3a40e23fcf1de421af3..3d2c5ee9282efc4a2310f554443= 082f1d0027889 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -1330,14 +1330,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 */ @@ -1447,6 +1465,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 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1A1AD32ABF1; Tue, 6 Jan 2026 12:08:18 +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=1767701300; cv=none; b=JyroCVm/7av0pWt2qXAvSA4Ht6aM/6USBiM8/O6WLUuAd5OZ6KPiYvTinldQMZK1pdrYajzkmSK8Y3Sm80BlNvQH9BeYcOFOS65MaGOSdYnuVTHHkMOIoDQ/X7NnszFg+mA4ObET1oTzAyPwRe4iK3OZcGugTwmBaOORnoCMKyE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701300; c=relaxed/simple; bh=EgiHIuGVdUt8Tls4fkrsxbHDxLn4dfDh9XuqsC/98lY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pinUjvf9C/dub7ezXgcSftJeJH6XIUNul9u1AFw4EfjBPBlWk6kjo97n58gUSAzlHSGflhpN5C9LEsu3xq3d1PjelH+CUOq5FF0/n8UdgeFnDb5ucGcS4FSa1hxL7TbprjWwg5azgswmD4/V+EIkpMDXkJ/ONhEM1cGKnlfQjtE= 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 924741595; Tue, 6 Jan 2026 04:08: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 410A03F5A1; Tue, 6 Jan 2026 04:08:16 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:53 +0000 Subject: [PATCH RESEND v4 3/8] 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: <20260106-perf_support_arm_spev1-3-v4-3-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=3748; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=EgiHIuGVdUt8Tls4fkrsxbHDxLn4dfDh9XuqsC/98lY=; b=A+Ux1kdi2ntKA9XlwsGx5KwSPOr7sr07A0QF+M5/ExEyqdtqCJ8fPopNf+VTIRLbFtaCxOp82 Pekd+Jcw8WvBqxmntRIatqttXByjkh7I9o+ztkqxgLNadskA7Qxg230 X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Print the extended operation types and affiliate info. Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 0b49fce251fcc18417cb1037075b3e406a3e6481..19d46d04de182cadbd6dfad23a7= ab987cc4dcaae 100644 --- a/tools/perf/util/mem-events.c +++ b/tools/perf/util/mem-events.c @@ -416,11 +416,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"); @@ -435,6 +439,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 @@ -585,9 +602,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 @@ -603,6 +617,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; @@ -619,6 +671,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 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8B15A32E132; Tue, 6 Jan 2026 12:08: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=1767701303; cv=none; b=aiCYIAk99Fg8aIhIlE4yIU5YvwZ5a+SYSFbKzkTewNdu0/QLY8vWMEx00wTiGlUeombZwK795T6qbxbjLVi1Sl7+dyOTc5x8SrUikVuD35XOD7bNO5x0MHW9cMfw1eEd00qG+ADymlHkWhviZFqvbrL7IyjuYeap18KvGaTRusY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701303; c=relaxed/simple; bh=vhnVCJRQiNEdYuW/31L4hBl76/CoTpcs684BBQIWJy8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ihrNLQWHXz4+jffGfeM5pkf08eOvZzub9xSwKVSVcmyyAy1VcZHyuph+P1FFeHQMruh7nV8rVQrtCb4aoLq5KwLu5kL8yQ1uC5Dk9zMLv+GwC4HDjyfLV8qYitIWOKgEmZAcSga0lsJwhgrp4/qVYKc+6VR1cNrPTypV6ETwTEQ= 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 1C225497; Tue, 6 Jan 2026 04:08:14 -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 BC77D3F5A1; Tue, 6 Jan 2026 04:08:18 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:54 +0000 Subject: [PATCH RESEND v4 4/8] 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: <20260106-perf_support_arm_spev1-3-v4-4-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=3113; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=vhnVCJRQiNEdYuW/31L4hBl76/CoTpcs684BBQIWJy8=; b=Srlu7gs85wC2CCieAXKBT4H3vYA4FU1/izBKSADiNMdyGqu9tpUXAobBp4r0bMic4oZBsbDYs xE547jcspFuCwXfacZnBM8rvQhVPBIX0AsCMVh/DeNCZ1A69POmbbhS 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 Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 dc19e72258f30dd6d89dafbb70cc5f7b5c485589..8e9004213e163a46fcacecb4ee3= 2e199a0ec50b2 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -1006,6 +1006,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 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 058A7330311; Tue, 6 Jan 2026 12:08: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=1767701305; cv=none; b=uNL4Nak9D5QY9jIYwUeELKHBa3AAnJBN2vjWghVEGcL520XXNfhrdoHNTL9lZA2deDDOaepMbjpKcvoTa3eo+lHGPaMsC5BmgPlf74sQ7ZDvI0eV3i4QcFl4al87ylXZUibz0Jj0jAdPBlJp/M7liCvu7/f3cNE7gSS56cItt1Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701305; c=relaxed/simple; bh=/WNrB8RgXJV0DZiQQjlw0PADfmZMQPHh7jYqoeHWul8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ECVD2JXbUrP0+uN166WafaFr+gFsXOCeX9hqZi8tEpMrng0Bx2xJ3svIRdHtaLZ2YvXTrSZ3gQOOWWOwgxQdYfrg6dILEGJP7JD6hqTYiMMqPqnf/gtEBQMh+MqhsfnMv1pmMQ3ZSbKom7bLukc3m+UxluPwDdq9i7Z00tp8zCM= 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 96BA71595; Tue, 6 Jan 2026 04:08:16 -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 439013F5A1; Tue, 6 Jan 2026 04:08:21 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:55 +0000 Subject: [PATCH RESEND v4 5/8] 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: <20260106-perf_support_arm_spev1-3-v4-5-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=1838; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=/WNrB8RgXJV0DZiQQjlw0PADfmZMQPHh7jYqoeHWul8=; b=5G3ZkuNQQPm/6X3+NzeWTV4VMwuarfJNA8CT1zeRqIK42SZ4wiPmOb+kEdMCRFF2lUzS4B6jV rBTeqjalcv9Csd0Uc5oYbx/9dPElQIjLg//HGKMnccsVBrJpMW0w7Gk X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Support sort Advance SIMD extension (ASE) and SME. Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 a8307b20a9ea80668deecf65e316ab6036afbfeb..504256474f22fa8ec647429d182= a6d04f8d05c39 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 f963d61ac166f9b3f16069b07aa4b0dacfb65c02..e8f793eed33f78b7688b3f949e8= 254cbb64c3709 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 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9466F330338; Tue, 6 Jan 2026 12:08: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=1767701308; cv=none; b=mYG2JIXp/x+stwAX2vXaFQtsc8bxX/OuMKN8UlIqyXYohmRksemjxpgTSSrP1f7CnipPiO5/X6/fM6inp/Gfocp/q2xxSsW/aJAIDQ52KH4PaXxTV9kzfQtR8Sn+6e1vC9GSk3hOpGeHhKWx7UzG+lnYCP5j/lF3aq8cPpUgysE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701308; c=relaxed/simple; bh=OjDz2soQiDc+vP5fJf6MBXdZ0gOcSxD/KnQcTaKm7RE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cv7m8IdIijm4vBrB1V50VSn/wScu98vuWyLn348uXKICsWElk8SNteFC3FQ2UlrerQnwefy7+R/5gXdVvfcUhhFl+ADmIlzc8OUmMOxx9swFf0lzrt/Mo08xVqYQyD1qic1aJg1l82xqghmqzmKaEEQRuA9KGBonNRY21ZxQYPQ= 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 1A6F01596; Tue, 6 Jan 2026 04:08:19 -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 BE0E43F5A1; Tue, 6 Jan 2026 04:08:23 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:56 +0000 Subject: [PATCH RESEND v4 6/8] 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: <20260106-perf_support_arm_spev1-3-v4-6-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=2900; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=OjDz2soQiDc+vP5fJf6MBXdZ0gOcSxD/KnQcTaKm7RE=; b=rn7dcni9B1PrdXSxPI09dniXGvOqhb2mQ0ahJru1GjGtJfa5tv7ZpJ/EcFjmhvdyu4B9FODnO +xYJuktwB0PAdfKKMngCLsrYLB1KaXcK0GJtNSEWLAwzfxUDya1zzx1 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. Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 504256474f22fa8ec647429d182a6d04f8d05c39..c0ba8dc6c055597e6b01c28eab7= 178d5c2b3c3ed 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 e8f793eed33f78b7688b3f949e8254cbb64c3709..72ad35559bc2ff89ba65208bb18= d4db3224be034 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 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id EF71F330651; Tue, 6 Jan 2026 12:08: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=1767701310; cv=none; b=AVmNZbRKXiHErn9xNJ6HnP+cjcyLDWY7uKaw/9hVVPNbSsPSlYFt7ESTlUZQpZH5qfe+TzIfFzi3HcnVQm3HRAqL8rOyS3yiYXjjvGELZYjBdUAzDRTB8aMA2erU7vB/tVcBC3rR7mpRnxMA9e8mDDTT3R4EiqVYFl7vt3lqF/U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701310; c=relaxed/simple; bh=gR5em95jkVY3/iuQLYqrGqJMKIzk5efq2xG/AUglxV4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eClVrCL4X7rEmhxIgzitwRZ6hKZKA2zEL5fnk7z5S86RZirlmqzjkNaW/XunRtAVrllzQKoA2WJUaNosHb5V7HzQAAQc92+q7TMgoExj32eD885u63v6771Ivz3FKM9WyceKGWb06l3ZUMpE9cZRFsmZlaQ5i4RrmroCyO9PTH8= 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 95C6A497; Tue, 6 Jan 2026 04:08:21 -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 44E383F5A1; Tue, 6 Jan 2026 04:08:26 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:57 +0000 Subject: [PATCH RESEND v4 7/8] 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: <20260106-perf_support_arm_spev1-3-v4-7-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=1398; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=gR5em95jkVY3/iuQLYqrGqJMKIzk5efq2xG/AUglxV4=; b=AKpwXefmFsisKFUkzutM3l9KOt+j7n5qcSW/dDe+qDl7mbG4g9l5OVCT/Bsk50+9A/d4TjAAq p1isgHarN5VD0YMxZsFDee3DsFnibo/h+yxXDOGu0WIrRf8IuPoZq7J X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Update SIMD architecture and predicate flags. Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 15:47:19 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7396A330678; Tue, 6 Jan 2026 12:08:31 +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=1767701313; cv=none; b=DJvh7erza1/ESZxcwb18YY3bRPjYG4PZ9grND6Q8jxNqvGZQaABswPERnKZbwNdOfWlV+qw1fDtebYw5ZAXasmZ5+UY281nzMF2GGYLTOy2vGDk9EZeth4Y3B9CC28ZLa6LeGXA+FYtFCY6zgXTaNEm4LWQEY1n1+RUv4ujBS+g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767701313; c=relaxed/simple; bh=1jZaP4IQ7K4aruUjUiI7SLKS88QFa+Wto9bZT2h4OCw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y3bhni1WGUXxc3ndFPPiKS0iStqkVJbz1GD6xWCdFEyVaXMX851Wsajwqt67obQOCxH57fcBIGQCaJ0Q2LqYE9IzmAWAksPd6OZ4zqsU72HSj0D8XOVUiCSn0b7fw239UQQeIAtRCBhuMcHxJMG3QoWzOPRqnIUY+PqAfbaZ+dg= 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 1C5C41595; Tue, 6 Jan 2026 04:08: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 C04CC3F5A1; Tue, 6 Jan 2026 04:08:28 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 12:07:58 +0000 Subject: [PATCH RESEND v4 8/8] 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: <20260106-perf_support_arm_spev1-3-v4-8-b887bb999f6e@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-b887bb999f6e@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=1767701288; l=3573; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=1jZaP4IQ7K4aruUjUiI7SLKS88QFa+Wto9bZT2h4OCw=; b=LDTA4Zp5J+n5P2+AvfmXclonaHt7/xaFOIedWm5Tgf5clPsEAFMCNfRSUrVSop42GB6oPQ5Qx yF5ysupcebLBiinvOmjMl9N/v86qZTrEH7FFqbR83/Nik2wCUSDzyrE 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 Reviewed-by: James Clark Reviewed-by: Ian Rogers Signed-off-by: Leo Yan --- 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 8e9004213e163a46fcacecb4ee32e199a0ec50b2..0a20591d49e821357d3d9ac5598= 74179f1d4f378 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