From nobody Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 33354314D07; Tue, 6 Jan 2026 11:57: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=1767700641; cv=none; b=hkalHKd96hDoOuoWNtZ4WmaXhcfQgfV9f4JTGJg9KkP+OQCzl6lbolLuQvWo8wL8qxsFg1vrYQ8206ZmsaoTcYeDHMNzOIhSWX8yL5uISyDL3ZqX6RdSQAVwUJweBisdY9B6/8q1e8rkHPCVmTTy00mL0rYv6oeE+Qx0GP6/Or0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700641; c=relaxed/simple; bh=P0am1qH8J7egjiMzSssp5KMflYyuaqqSh7NHMmr7PGQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=t+ihG5iLd3WgPuCGwIhsNVzx38IFl/XePgvtvkUfKeFyvLie2uBEseBcGpzCxwivraTQXf/qw5RPmmb+9fjv0Phoo04l3lslwqQw50YPNc/Ebm1BmMI9crd3H+i+xlCvnnjq+uuks7ec8eLOjhjj8UuI6tlTkZl/5UXYsnbD61s= 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 6DABC1595; Tue, 6 Jan 2026 03:57:12 -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 1CC523F5A1; Tue, 6 Jan 2026 03:57:16 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:46 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=3220; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=P0am1qH8J7egjiMzSssp5KMflYyuaqqSh7NHMmr7PGQ=; b=sr2DpbURJ76yWoJjlFmf7HyERIMUQxOxZc3HWsIpG5JK4HVmmRUmny1oox/koCQB0wxk//jaZ 4hdgLYoWzZfD425RifoQZk8IzgR42lxKkSlJNMmCMNO7wBcbH2i1yDN 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 --- 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 Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 8653D314D07; Tue, 6 Jan 2026 11:57:22 +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=1767700646; cv=none; b=ZYJiHDjxT1GoQsD7sjqwgWziw+zBQlptgPzdv8n1HlyY15ZDw/K1eyxYHmoEjy5dqufu6OWZagZV5eSFyp/5fu/zd84RIWtZ0Nz9Icv+oN3QBLrhO4wTMOmP8Pz2o08+ixupGT8nXx5HfAD3Z3wLj4s1NuH6n3ZwWnsjfEOkki4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700646; c=relaxed/simple; bh=V6y0SoXTw05gZ4AQFBmKuxPmY2xbkTB5YwFjB4ldzqE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s4ixbjEZ9JZydrs6wss7w+1YSfG9iAneRTQLZz6kdVad6ROjB06b3PpYJ7wwymj1lylLBIzG4rVauI7IuqxHLnmUeedeUqw/aJ1xkAIj5tCSTN40O9cH3Yx4nkoYdKsdLKiu1jiYNasKTXqkTQcpMIJ513FZnuVP2VVQTzhoKw8= 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 EC4FC497; Tue, 6 Jan 2026 03:57: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 9833E3F5A1; Tue, 6 Jan 2026 03:57:19 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:47 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=2534; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=V6y0SoXTw05gZ4AQFBmKuxPmY2xbkTB5YwFjB4ldzqE=; b=WZX8uMpD56G6SxBix8keLcDoEGbezROSSZxAgRwiWz8TU7tO7v74dfrtKm9kmdqMYEL5bPBLJ x78NkB3RgUUDENfsBVFZDuwIJ2+Il9Yal6pl4YlXfaSWDq864988Sk6 X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Sync for extended memory operation bit fields. 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 Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0C0BB326952; Tue, 6 Jan 2026 11:57:24 +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=1767700646; cv=none; b=iHnbojYD2vj92C8we5P2DssA2dhSnri8SaeRz6EtdsMHH/7OKsX7/LPEzoA4zpEZExnz9Rhqa8SsJtj1qNgPQg1mkLnvcpYyPMz1HHdpq79Mnk6JMtsd9atBdKt1LZfiTURBPqV3cX/u+bp8XiuiCgIfWEzb2bXFIA2o1njZct0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700646; c=relaxed/simple; bh=YpHIkEb61Q+vHzzu9Oa3xZJgjbfs5yLgy28iIWMTHpc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=r9O6MJY3gQg1S6yVK993jenvCwj13dliZFEV3mdgQjN4/+yEsZiQb2IORqCsrGoEQh8CntZkkNgxB36xF2gN1ebONARAWYWc4wBVfkzkd1B/h9I6mGDdl/j9KvET54qP/kbpoOZfag2cAVrgfr4ghkInnkgDyGbdnd2k8s3ZwEM= 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 711FD1595; Tue, 6 Jan 2026 03:57:17 -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 1FD573F5A1; Tue, 6 Jan 2026 03:57:21 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:48 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=3651; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=YpHIkEb61Q+vHzzu9Oa3xZJgjbfs5yLgy28iIWMTHpc=; b=o4yLA4055PxzZCjcZMslTIKh0XXcWDdEYfZRpv6EnOQblKqmGfR+ASLh0bavmQkDPxjUIN8bT inf+DfaGxWpAcMMKV+Ekj3Fo0SGJREyWkUB7UhnSzO8fG0nTZnm87qM 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 --- 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 Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 87B85327BEE; Tue, 6 Jan 2026 11:57:27 +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=1767700649; cv=none; b=OmMYlgg9LzpmbsuCy8K3XfoGB/dyk+lSCojcJmTqO7gacN4zc5/LdqGarm2USXAvIwsByzlFjoP2e8Rw2YU5h/ZusnAuJsT+cmpkp+3XsNDephPUCspYOFFiYqZ1ok6XZdRYcqDI5Ndyswqofxw6ltgwtXXYEB1OP2Lh1wtD08U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700649; c=relaxed/simple; bh=9P9P9ngjsu8nPxAdZLX3+nmmTdlw0sGE1/s7rLcP/ao=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Zrz7bePIeR2X0TB2E1Bci761e+FBCHrkH6I/5gVXy0QGn/v2NXFEdo33Nt5ngw4uHdf7RN7rLEHNWcL5X14Gbwc32Sui5wfUT/J798Of638UPvXIzw49IwOWCbwGbM9gv8Jr9egA9cvsAwl0qoBnGZvxzTB1NaRMYCZY2c+u9VM= 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 EC34E497; Tue, 6 Jan 2026 03:57: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 9B8283F5A1; Tue, 6 Jan 2026 03:57:24 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:49 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=3016; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=9P9P9ngjsu8nPxAdZLX3+nmmTdlw0sGE1/s7rLcP/ao=; b=dfzg/6aqCk/ZHHYezdmF77x3soi/BjX0x0G80fUDP0CpPRnM+nULHFCC0QDhSaHiz5dUE/gJH bvIX23UgwH3CIKHzd29l9ixNLQ6SQFdHsVlkdMo5X0pGayuqAL22jUL 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 --- 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 Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D7ADB32B989; Tue, 6 Jan 2026 11:57:29 +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=1767700651; cv=none; b=etEKkbzZzGbQlAKLOCLrjTC1lMyCqqfDD7opdvFEgEgpW4lOq3/g+jSudCjHh2zq4aKLj7RjISF+WxxoY317//4yN24RWUqOXs2bCOR/u56FKo99S0+gKXjlGFLKhof7/dTvSuxdUYFWyejKGNOgjrAaKc3JJOmUpVLdJaFxcfI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700651; c=relaxed/simple; bh=Mkcwt5Bm9f8iJndZOvpqNo0Ap0ZS8/5izUDL7CkYee0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X7BlA2Hc/InhKLzcCuXncVVjgNjcb0NTeTu4USb+XUXxxpV2flwbUxDdbL3UIojQwFukBerDuU/4xQGB48Ir7npji9YHUvL5BCtIdug4DKjd4M4KIXmqLNnUwzn5LAaNS7Kj7FEzv2emfa6hS7m3b3YuR6jHuGmfF1b0NW19sOE= 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 7311C1595; Tue, 6 Jan 2026 03:57: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 227423F5A1; Tue, 6 Jan 2026 03:57:26 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:50 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=1741; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=Mkcwt5Bm9f8iJndZOvpqNo0Ap0ZS8/5izUDL7CkYee0=; b=a6rLB3Jrk8ueLTS8ZqJeNvJ+lJBfNc69KqZF3ho4w5INoSwNoHoALXglf5dcBmhslZusDsyk6 mScw+AxZ4L6CQ0Icg3+/XH59plDxRg59SAF+4F+N134jFE+cBV9Suaz 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 --- 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 Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4234932695D; Tue, 6 Jan 2026 11:57: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=1767700653; cv=none; b=u88vWdl9WxaCaDpFEfT4yMyDrZp9P9/srC9+xISBn5MVIf/ARCm6cd6PvcSsuzeCBnXZM+kDK+cTq8AT7mE8yyJo4NSbGT53t9UXOdTJ7lAP1UUDkNFNoAdA8MhxNtuzNkYph+dvyBFVqOl+aiubmzJOFGdeiw8968JCTbiLA3k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700653; c=relaxed/simple; bh=OlYIb8cc4V9RmgLF3Zyiwupb6WwcLfvDpHSGDNTzc3A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uV4IrtxIkjv/CcTf0TaN+rZ9A9CWjQepjcQbiLWk/WBQ7nEmFQ9wQqWhcyJgiAtdYfW5F3bii/UEoQ0cAGLppzzz/0WudhMdfYtrjuaBd6+jxEaCN6D7xAN/ShVXpt9hnzEEZghConI+vxILYvrdROD6NF8QuGlmyFHYpzyuhbI= 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 ED47B497; Tue, 6 Jan 2026 03:57: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 9D8FA3F5A1; Tue, 6 Jan 2026 03:57:29 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:51 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=2803; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=OlYIb8cc4V9RmgLF3Zyiwupb6WwcLfvDpHSGDNTzc3A=; b=YOwoCLpBqU43lDpyl3Ju8+ZQeyZIlTD+KPvRhY/54roDCLWK5CgDRhepLAEtYawUM9AGT+DTs VPDDufTUA1GDR5j+cXPYun6kbEJ26pzW0kyLvcMLdc8ltAHwKjvUgTI 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 --- 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 Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E372A32E15F; Tue, 6 Jan 2026 11:57: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=1767700656; cv=none; b=SoPGQEgpXHisNwlO0A2p+m+Siu9A4LCwVQnpvqV0odQlS2RwAXkSW8xO8SvVh6mIjg8mq9i4+m3jWB8iantq9SXBY84C+h+tOUqgn3P1toBd/TCOpHyA3+ycJkKzDz6n6b6L7bhhie3HIgl0POwjsNIKzOdw9UM69FiwWxuuOv4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700656; c=relaxed/simple; bh=K+lf5GgTPw3SkqzOp32MWVxQu+Fbe4D7TBbZIbWs9ig=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZIBzB14nlfRAOw1JT76kWHh1ffi/iLlsi2z00WKNN1nBnAl2fKJV2bE+2HzN/jNZs6Dhr0tiSk0N8JMn7jpJhEgKVqlL2L+ikYKdSzPJFPTfXkjCNsz5abNEm9i90OKMsV1tLm7EdkQC4B3U+uzFM0K3ihltUPjiV6GHUURbpBs= 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 746C51595; Tue, 6 Jan 2026 03:57:27 -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 23BA23F5A1; Tue, 6 Jan 2026 03:57:31 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:52 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=1301; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=K+lf5GgTPw3SkqzOp32MWVxQu+Fbe4D7TBbZIbWs9ig=; b=k/xTXe3YqGqG9L/Nyv5kn4l5oxuuy7HIXzuHEGa6Vbg+veCO5lFeKkWYRjuEAATLbcwCwkKLX oYAK8EJSYivCNoahO4g+IUG+oV9rj+c5namDOlVJ8vvnmW4RertRPRd X-Developer-Key: i=leo.yan@arm.com; a=ed25519; pk=k4BaDbvkCXzBFA7Nw184KHGP5thju8lKqJYIrOWxDhI= Update SIMD architecture and predicate flags. 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 Tue Feb 10 00:23:59 2026 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 3BF4C32E721; Tue, 6 Jan 2026 11:57:37 +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=1767700658; cv=none; b=NQj9yYGCHuq7SZUwqECC8wIVKwJf8ZunYVBWBOhI59cepn+j5Jspnfko+VolvExFcG2sqrzpYh5Zoq3aptdYKY6oRpu/xWRG7rweF6UMESuBVgVvcPlB6ER0chr1MELGAsys9IBs/7/oGgThYfNqkjqJOedWt621EIekZd00V30= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767700658; c=relaxed/simple; bh=P6VcteePjsOc+z/jfh3BzQITL5eU0H0T4edf/3LxbtU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SHHmv5PGc1FBStzsk6lMqv1P0Rq52CDYtg1/Co8+dCJv/z+oNiJcunahdgPPOXpRB6Aai49qmAnW0dQt8z/xgXEfUrCQoPGyKrljrjUHZ19BGfosGmrlSvuqQ9lC0sRoWKOVXLeIIZtxOT3R1bDui2Bh/a+NDvzasXWVcEwaSnw= 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 F1DCF497; Tue, 6 Jan 2026 03:57:29 -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 9EDBE3F5A1; Tue, 6 Jan 2026 03:57:34 -0800 (PST) From: Leo Yan Date: Tue, 06 Jan 2026 11:56:53 +0000 Subject: [PATCH 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-bb2d143b3860@arm.com> References: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@arm.com> In-Reply-To: <20260106-perf_support_arm_spev1-3-v4-0-bb2d143b3860@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=1767700634; l=3476; i=leo.yan@arm.com; s=20250604; h=from:subject:message-id; bh=P6VcteePjsOc+z/jfh3BzQITL5eU0H0T4edf/3LxbtU=; b=BMN+L20Ua3YV27ClacmEvIKK9dEDIXf+gnCuecz3SXntbvjFIKGpPkFp/miYObBW5aQ/KC21Z QIrgqG6sIkGAzTchvWSoqmkrG/aQ+d7+CphD3TuyhSk2K+zCXrnEu0d 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 --- 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