From nobody Wed Apr 1 20:46:04 2026 Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C94B744D039 for ; Wed, 1 Apr 2026 14:26:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053573; cv=none; b=PiP7CxUU01AbLg7vv0Xf2723usQtamrC18EOLaGkt7ERlvBMkBvFmCrAma5Bft/LiS4XcM6U2iJGfbHWzTp8jAagvaFJfLRDfvbodArpvoYVmXgYVeAmQwYVsiwAMACn31TSY2XnKBqulJL4Zd03ssRaLDcGoKMhLYMEf1DLT+8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053573; c=relaxed/simple; bh=+FMZz6XfK7GZAd6AXUWNQbC86FlwgnBY/fa7MUm++S4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bwvDRnidg3TNUTAXUHJA5fcRIpJDbdIbmF254LBseFxXisi4nwCOP0iNf+c5T7zHnNolmkLvieJrIMqNncnNSMQ0edaAWnn8EQkBCPTKEy69muKst7+75K3Udp8BNBVh+7XIfXsXtOB5cf0rf1xXZgqu0OS11G7zug31PgN8LoI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=O8Dt/s7N; arc=none smtp.client-ip=209.85.128.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="O8Dt/s7N" Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-48700b1ba53so64475185e9.1 for ; Wed, 01 Apr 2026 07:26:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775053570; x=1775658370; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Oqas3u7UM5z91PWtBVrB+LRpDVECVVS14S5CCLaW82w=; b=O8Dt/s7NGDBRkpWq694HWuqklHzI1sZDtUKdUpb7R9ZRJctLIOQ6sG+e+KSH3Tcr5N 6Ylri3IqVf3iVypZCHHGC0FtfDkh5vkVsKCTy9bYwuaD61Y8jbrpW1kGRWpfVZozyert K2BXzSXf/sk6pSXQcDOGuE8ElvSnVMI6viCH26xE1ueBulCwoMDLH6+idTa/9SjRCOla +/U7qSecg0TOyMs2o+hMcX0M89JesgsDKfOMvV09h1njXchAd8d4H+Yb/eQFQNrSYtbm SbG4dI0P86eUMfchIKE4IjRm7bdh9NWPCgosW86haT6Fltg+kctq4biQBNzdN7a+IZD3 iKXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775053570; x=1775658370; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Oqas3u7UM5z91PWtBVrB+LRpDVECVVS14S5CCLaW82w=; b=n8PqCEpLTKyGkN6VjiJhC7pAwtgGfZTontQrvkmQbgNInqSupQh7woiOm5GygffZXQ bfSXE+opo29MWlZzQq8VDgp3fB9A9uu0KZ+Ri8k1VwWxolGTqtf8hhSuV1gE+Roqygc4 CFOY6HpABLP2bi4NMkVuli176FOv5XGi8O3DBjBUezefS9zckKiMJgvc/OAwEy8y4YRK lVnPVo7nAC8PeLZh2hIBX8zQGXswrECZ16BNtLK31htUCNGJddhB8/jNpplz08iZeaeB bzh1SLUDNRZdKEm+VElMKDswX/6uLefgeGnn80PWsf5Q2h6GPV6vpanhc9t+iT5XrFHQ /RiQ== X-Forwarded-Encrypted: i=1; AJvYcCVUAdy42H0/ztgPnv10XorvepgnevF8ZUD4Sm5/5ufezvrh61iQb7bjfm6npaTkG2sqEbn1gOTC5U39Tdo=@vger.kernel.org X-Gm-Message-State: AOJu0YwyzbAs4TWuV3SPLCIy29RnlZc4r4OKYXAm5e6WcQh/rMQrX3qC vxieDHbTC1Hoj/AjiN2n04vVTBrrNtZ0f6lL9o0sBPv4mNVSy2Vb41/1pkpHmyxaJMI= X-Gm-Gg: ATEYQzwFcwV6uhvh6mfANv2xqSPBeI8M9+h0zYDH8eTaMaDm1fihXpA5h/c6fg67uAh qxD8jtGtbMUFrhNC8dtTIONgE0/7AXS3YLV3EQUU8NZTpVpKPe7/zKqNNpuKCtEBxJA3wzrfVJ/ nGzp0QP39/S6aSlXOW9KCgB7KQaft4QAG6XPG5XryfRt6HJEJ6/VyJfJdc11LON9RW1HO/zgD02 s0nIDfXNMXLsQ1Cb66zBO1I3spgfqHFcsGELyPbTnc1Oxh0tF2kvc6TWJSiKXEEfsClXFKJVoPQ ZoCUNlRhbA2OBiWeH+ejO2tpgKJMeY9liEJme6b93sQrLLZx0HZW8dNqlrvx08KCVsAqg03mKci lCNi3LliOsa7biofxMNXs63tZW+pzro3EcMHX+YEdC7RxCAeb7ftKhJpJxAE35V5u6MPNvPHEy0 qzOgQeVqpPnSiVPB0UDARWeFNw5Fgkqkf6 X-Received: by 2002:a05:600c:c04a:b0:486:f9aa:2b57 with SMTP id 5b1f17b1804b1-48883597e39mr46789365e9.16.1775053570170; Wed, 01 Apr 2026 07:26:10 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4888a63c9b1sm2305595e9.5.2026.04.01.07.26.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 07:26:09 -0700 (PDT) From: James Clark Date: Wed, 01 Apr 2026 15:25:49 +0100 Subject: [PATCH 1/4] perf arm_spe: Make a function to get the MIDR 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: <20260401-james-spe-impdef-decode-v1-1-ad0d372c220c@linaro.org> References: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> In-Reply-To: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> To: John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Al Grant Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark X-Mailer: b4 0.14.0 We'll need the MIDR to dump IMPDEF events in the next commits so extract a function for it. No functional changes intended. Signed-off-by: James Clark --- tools/perf/util/arm-spe.c | 36 ++++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 70dd9bee47c7..7447b000f9cd 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -958,14 +958,9 @@ static void arm_spe__synth_memory_level(struct arm_spe= _queue *speq, } } =20 -static void arm_spe__synth_ds(struct arm_spe_queue *speq, - const struct arm_spe_record *record, - union perf_mem_data_src *data_src) +static int arm_spe__get_midr(struct arm_spe *spe, int cpu, u64 *midr) { - struct arm_spe *spe =3D speq->spe; - u64 *metadata =3D NULL; - u64 midr; - unsigned int i; + u64 *metadata; =20 /* Metadata version 1 assumes all CPUs are the same (old behavior) */ if (spe->metadata_ver =3D=3D 1) { @@ -973,15 +968,28 @@ static void arm_spe__synth_ds(struct arm_spe_queue *s= peq, =20 pr_warning_once("Old SPE metadata, re-record to improve decode accuracy\= n"); cpuid =3D perf_env__cpuid(perf_session__env(spe->session)); - midr =3D strtol(cpuid, NULL, 16); - } else { - metadata =3D arm_spe__get_metadata_by_cpu(spe, speq->cpu); - if (!metadata) - return; - - midr =3D metadata[ARM_SPE_CPU_MIDR]; + *midr =3D strtol(cpuid, NULL, 16); + return 0; } =20 + metadata =3D arm_spe__get_metadata_by_cpu(spe, cpu); + if (!metadata) + return -EINVAL; + + *midr =3D metadata[ARM_SPE_CPU_MIDR]; + return 0; +} + +static void arm_spe__synth_ds(struct arm_spe_queue *speq, + const struct arm_spe_record *record, + union perf_mem_data_src *data_src) +{ + u64 midr; + unsigned int i; + + if (arm_spe__get_midr(speq->spe, speq->cpu, &midr)) + return; + for (i =3D 0; i < ARRAY_SIZE(data_source_handles); i++) { if (is_midr_in_range_list(midr, data_source_handles[i].midr_ranges)) { return data_source_handles[i].ds_synth(record, data_src); --=20 2.34.1 From nobody Wed Apr 1 20:46:04 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D8214657FA for ; Wed, 1 Apr 2026 14:26:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053586; cv=none; b=s9SvXbQMIT1bL8NpW0cs1T8PgB3KmA832fBOvXD/AzpHFupR1/nQDOkh0PZP7CurRI+gdFPZRvLyE+RRtTSL208EifBKXfIyOFVSIjcn9wutPeXc83zYIEtvP8SL7DEs1Upi8uzvSE2wNos2BzuO7EWcz6y5gf+YMANnx05zldY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053586; c=relaxed/simple; bh=jccoruL2T+NGqOEgKJxsle4jnVNgDjpWN1VhgSnRmEI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EN627RSdFT+nIGSOF/N/e0CZsQBR27i/h6uCl1qml135GIjb4+m4AE80nlwBnRb/gJ5li0GuohZsgpgWuhC4ctgP33FsnkoB1KtG4pUmDfoc5vzOLCuB/v0zDPX8JBJ8Jcu5T0fdd0lUt0bjMLSp95c25AFejDSMhNS/eplsUi0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=VlLbknmB; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="VlLbknmB" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-48541edecf9so83403595e9.1 for ; Wed, 01 Apr 2026 07:26:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775053583; x=1775658383; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=n24sszBVzgPIC0kU6aw8yrDjc6YoHko/OXDuAL7iz6Q=; b=VlLbknmBTmbp4XuhubdX6S/nzRuEReObpGBZe5q0kI9Uuk33dhYPGM1l1emePzufDL +iAUt1VNjEXaN4gZc1QZZwedBCKTnkOIHH81kc4YiFi1lpcPUOE2TKyOP1YXufWeIZB8 avMfOEtl2bZibmWqAxx0TkEL+lE82FY8QD3VA3rVE21FOnzHtp9hLtIpNKmphJLNIKkZ aTxqJuGPmcEMXcIbHDTjJTs6O1Ekx+BqdrxrYLIi9PaUawNORucF6RppFlaQLRkTwNPu fSnkbS1pjPztlB6emLjhJTGuKcM1466OoHzUS9ij2RSGg4cw6n+2M12o1T5ZP1wxtnac eBiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775053583; x=1775658383; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=n24sszBVzgPIC0kU6aw8yrDjc6YoHko/OXDuAL7iz6Q=; b=UoiVEriuCLFD6swVfV//U/yS5DB4akB/Yi8nrwF/YiNT/+OUlz4ERBrjeeRsKcqlJM ZHPvXnBzlv7yFOZeW3QAIFSj20tNiwE2eIL1lzjN4SZRlVMImBw0DKJNqyCtv07442zF qD7+K27QyZWyguWHhQer1wqropJGajCK5Fb6hpejYfTk5152vk+7vSiM4MQnpjzWEtYY 9Yb6Hz85a7SU8+HhV1XYvrvAtoTe/7XuOXUXZHgouFZh7ixgW2KPZXPscQqgsHOBmD0T 0D8S0LwvXgZ05CwX0GZ1ZLC0jk9z26/bbsQI6pJxZ7mrkB+1nrQl9XDWNwwNcUbqcDEp 0pTA== X-Forwarded-Encrypted: i=1; AJvYcCUIOXwL/Ffi/oh4FGgxQ62OAYdHmNaLFShKCdKvmXUEtJ9Mpdir8YZ+psB5oYk349XzMP4fJy40q7DQhvQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxRYbJBqNzBXTBvuBmbRJ4440xps+s2mWaKBOTRMCbq9YoRgich G/xwtgcQ6aOU0zNl+T6zrbsF8jHmxjvbBCu1VH5Pi9dWw6LVI6Gio5rL0Sjte1YzOBY= X-Gm-Gg: ATEYQzxT88D1Cb9IPqvSHOrMGOLke7MQnzG6YQGHr4Th8tTPx+19W/dFE7J53JO0WeK 5m2Yntrcur/UdFCPZ9SV0Q6pKu7WA/yREnUKkAlHbdKZzCeYuDnHe9RmPgANTtQKxiCDZsxLdKO FvfZeT/E1aI5AR4iAVpVKX6007JyA8apq0mjZUEkYzvoKZOql0OrZYTwpn5YaDI/wPUTK8xHq2c nIQqGbriI6S1OH/fPBdjV8/sCy0V8C4PI/STOV2caduAig/fItinRK1MzSI7CeNSEsSvh7Yuvc3 0PZOe7wguXg2r3HaJbM37TsmkU6tRPcl0rSXTrx/os3sYg7WFNFH3ihU9bJn7j2VWSyXAXUGC+d LGcrUc0jBzIY+sO0eCICsBbch4tWhDC7xi+0163MFhFzjUpZ9jAFMzafCcJIbSO2zGmJrEY//et tFWND13wD6DptARBz/4YJd0JoEyvM6Vago45iZoNCqApY= X-Received: by 2002:a05:600c:828f:b0:485:4388:348b with SMTP id 5b1f17b1804b1-48883310809mr72258105e9.0.1775053582629; Wed, 01 Apr 2026 07:26:22 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4888a63c9b1sm2305595e9.5.2026.04.01.07.26.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 07:26:22 -0700 (PDT) From: James Clark Date: Wed, 01 Apr 2026 15:25:50 +0100 Subject: [PATCH 2/4] perf arm_spe: Turn event name mappings into an array 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: <20260401-james-spe-impdef-decode-v1-2-ad0d372c220c@linaro.org> References: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> In-Reply-To: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> To: John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Al Grant Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark X-Mailer: b4 0.14.0 This is so we can have a single function that prints events and can be used with multiple mappings from different CPUs. Remove any bit that was printed so that later we can print out the remaining unknown impdef bits. No functional changes intended. Signed-off-by: James Clark --- .../util/arm-spe-decoder/arm-spe-pkt-decoder.c | 88 +++++++++++-------= ---- 1 file changed, 43 insertions(+), 45 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 5769ba2f4140..c880b0dec3a1 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 @@ -276,6 +276,48 @@ static int arm_spe_pkt_out_string(int *err, char **buf= _p, size_t *blen, return ret; } =20 +struct ev_string { + u8 event; + const char *desc; +}; + +static const struct ev_string common_ev_strings[] =3D { + { .event =3D EV_EXCEPTION_GEN, .desc =3D "EXCEPTION-GEN" }, + { .event =3D EV_RETIRED, .desc =3D "RETIRED" }, + { .event =3D EV_L1D_ACCESS, .desc =3D "L1D-ACCESS" }, + { .event =3D EV_L1D_REFILL, .desc =3D "L1D-REFILL" }, + { .event =3D EV_TLB_ACCESS, .desc =3D "TLB-ACCESS" }, + { .event =3D EV_TLB_WALK, .desc =3D "TLB-REFILL" }, + { .event =3D EV_NOT_TAKEN, .desc =3D "NOT-TAKEN" }, + { .event =3D EV_MISPRED, .desc =3D "MISPRED" }, + { .event =3D EV_LLC_ACCESS, .desc =3D "LLC-ACCESS" }, + { .event =3D EV_LLC_MISS, .desc =3D "LLC-REFILL" }, + { .event =3D EV_REMOTE_ACCESS, .desc =3D "REMOTE-ACCESS" }, + { .event =3D EV_ALIGNMENT, .desc =3D "ALIGNMENT" }, + { .event =3D EV_TRANSACTIONAL, .desc =3D "TXN" }, + { .event =3D EV_PARTIAL_PREDICATE, .desc =3D "SVE-PARTIAL-PRED" }, + { .event =3D EV_EMPTY_PREDICATE, .desc =3D "SVE-EMPTY-PRED" }, + { .event =3D EV_L2D_ACCESS, .desc =3D "L2D-ACCESS" }, + { .event =3D EV_L2D_MISS, .desc =3D "L2D-MISS" }, + { .event =3D EV_CACHE_DATA_MODIFIED, .desc =3D "HITM" }, + { .event =3D EV_RECENTLY_FETCHED, .desc =3D "LFB" }, + { .event =3D EV_DATA_SNOOPED, .desc =3D "SNOOPED" }, + { .event =3D EV_STREAMING_SVE_MODE, .desc =3D "STREAMING-SVE" }, + { .event =3D EV_SMCU, .desc =3D "SMCU" }, + { .event =3D 0, .desc =3D NULL }, +}; + +static u64 print_event_list(int *err, char **buf, size_t *buf_len, + const struct ev_string *ev_strings, u64 payload) +{ + for (const struct ev_string *ev =3D ev_strings; ev->desc !=3D NULL; ev++)= { + if (payload & BIT(ev->event)) + arm_spe_pkt_out_string(err, buf, buf_len, " %s", ev->desc); + payload &=3D ~BIT(ev->event); + } + return payload; +} + static int arm_spe_pkt_desc_event(const struct arm_spe_pkt *packet, char *buf, size_t buf_len) { @@ -283,51 +325,7 @@ static int arm_spe_pkt_desc_event(const struct arm_spe= _pkt *packet, int err =3D 0; =20 arm_spe_pkt_out_string(&err, &buf, &buf_len, "EV"); - - if (payload & BIT(EV_EXCEPTION_GEN)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " EXCEPTION-GEN"); - if (payload & BIT(EV_RETIRED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " RETIRED"); - if (payload & BIT(EV_L1D_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L1D-ACCESS"); - if (payload & BIT(EV_L1D_REFILL)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L1D-REFILL"); - if (payload & BIT(EV_TLB_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " TLB-ACCESS"); - if (payload & BIT(EV_TLB_WALK)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " TLB-REFILL"); - if (payload & BIT(EV_NOT_TAKEN)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " NOT-TAKEN"); - if (payload & BIT(EV_MISPRED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " MISPRED"); - if (payload & BIT(EV_LLC_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " LLC-ACCESS"); - if (payload & BIT(EV_LLC_MISS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " LLC-REFILL"); - if (payload & BIT(EV_REMOTE_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " REMOTE-ACCESS"); - if (payload & BIT(EV_ALIGNMENT)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " ALIGNMENT"); - if (payload & BIT(EV_TRANSACTIONAL)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " TXN"); - if (payload & BIT(EV_PARTIAL_PREDICATE)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SVE-PARTIAL-PRED"); - if (payload & BIT(EV_EMPTY_PREDICATE)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SVE-EMPTY-PRED"); - if (payload & BIT(EV_L2D_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L2D-ACCESS"); - if (payload & BIT(EV_L2D_MISS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L2D-MISS"); - if (payload & BIT(EV_CACHE_DATA_MODIFIED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " HITM"); - if (payload & BIT(EV_RECENTLY_FETCHED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " LFB"); - if (payload & BIT(EV_DATA_SNOOPED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SNOOPED"); - if (payload & BIT(EV_STREAMING_SVE_MODE)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " STREAMING-SVE"); - if (payload & BIT(EV_SMCU)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SMCU"); + print_event_list(&err, &buf, &buf_len, common_ev_strings, payload); =20 return err; } --=20 2.34.1 From nobody Wed Apr 1 20:46:04 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BFE62466B6A for ; Wed, 1 Apr 2026 14:26:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053587; cv=none; b=mxiIAKZVjf6lr0t3ldw37qjbrdqTXODW0Daz9gvtDmKasprWKcocgCGoYb2kzZg/nEDduKMJSVL6ymjviRO+SXiL5VuTDTwt0yBu+esyvPdMRhMrC1EqnaMSX72QyEqZX7fZZJiSpJ+gcaN4Y4fuTR2DLeKV0tzUEqr4nqi1TAQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053587; c=relaxed/simple; bh=Eooq+5bKb0xsDs+PjIdIUDN4p8LZJFeXS5YmCx+E18M=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NQqGL2otYNxnN3TZsoIazU0NJutOcclyj5Rt15BJbYIv9i8StHAQ+lN9LZFZFBP3bZJCSB+hrZfx1eQE52y/suGqqE4ImxHSlOAhedrMZSPyf2HsAhjKLyJH3isq0LfDRjpIF9UykySkkouRUXXn/nTufL0t1tPqHAzVEz7O4II= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=Gu+bk6Jr; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="Gu+bk6Jr" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-486b9675d36so57263655e9.0 for ; Wed, 01 Apr 2026 07:26:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775053584; x=1775658384; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=osWrxEAqmZXiuVvpI8iKF9LeT8juwh9RdnQ1+Y4xO5c=; b=Gu+bk6JrQsscwepLcFfJpxRJaoSPVaCz1YJwlpYeQbMxTAHxJA+jBAm9Icjeg8Y6N5 AAH+QdP60mE1SCB+cvZ7tL16TSDBl5CrieRxz8CcwTKAqO+12hRsc9oGlH2AhfsbMJ3f +t9PhkKUjzxYYpntIMI7zdPXEEhL2cw3cxcD13hVvRY4dm6ZWn/b0TlxxVaTgMpqOkxD GSzD1g96ySPWp9/f3aI28IL4/Fos0GUQgnleI3xxISGMmN3DVavyScE/wU+MBCjh98D3 2GqeMj29FEogZpCCqKpwAAu+9AwDGNdGnyogdWDHW9Gkw01d8AJgk77IQNFwfTiW+ylQ PQAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775053584; x=1775658384; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=osWrxEAqmZXiuVvpI8iKF9LeT8juwh9RdnQ1+Y4xO5c=; b=sDUdlBMLh3kZrT6qaPmhiqeT1lzlLrcXiqsnW5bk7kmPrjZBp5bIpbis8yF7DKvqct SNdZwOHpnWwXF5uLFwvpL+3CatHYl1X5cyw6HcOPCy0YmhwDEklrDSiZOdIjF5KWXubd 4lhMTWx1VaUHOzh1s/rIXKo7RyqKhH9iBHkdrny7BtHEdmHmNs9gHo2AYP3zUY73ZNV/ oSw1rJ3CpPXpWpC+KgQJFP3fs+sTqjwTdrQSaWk4/VKLIxsa+tk6Enq9Oq/Td946sGS1 otNFWlxuKMRenUeKxIQjdckxfwpNkKnvtL1i3t3g/xx2b9T8xd5HhtfuVwuOUxfGSszg FTwA== X-Forwarded-Encrypted: i=1; AJvYcCWFoIh7XYmJIzeJ0U6TKirOUBxePkdtHaM9T2tfqG0z2gU6nDdQayWz+/6cB2c3t9e1B/mUwxhMncVVKAs=@vger.kernel.org X-Gm-Message-State: AOJu0Yw63W5gg9yO9Sxso/GWSKf5CwEZi0JX7IZodIXbhgViAPIv3HC1 YYKunj/Tmj1Suwt3GY+2/fJZ9tUD+BFjBDRlGakqlwaTiuYfNWxdG8AzbKhc/IpMPPk= X-Gm-Gg: ATEYQzyR39jNGuUBoYHFKWiUDrpt9By4Lz8DtbLvZXSRnpV9DE/n8rnkstADn/MnIEB VYx6oi6bhyMRJMTQCR33Ob9o2uoES2E9kZ5ii6sUvxuPRE5Ru49Nuw15wMZ6d6QfUHOsoLfb3hS Xtsuok7D3eFKN6Am/cRcGoxbqA1dkCAiY1xJ7nQkCGmhFhdavhIY+dScsSULWU6yoXlAYIe8g0X sd28VAu7trw4ETpEiS90QdbIRvL71y5CNI/GDsDTL6Uq3B42yx3oKld6T3n+FZAkPfAn+6+NU5u aqyuHse2J89VHFV3diyIF3CFdcZS4Ch8BnZAUxs0DeqeVwVDY8r5ee+GxY5qXYImZAJbrWaichs Cf2BwfsgT+RYbrX0S0LayxgMS5ZeHM81myTYw7ZPRUQbdsrq7k9b5pC8oJ4RYkwQut+7b2WGJwS lr/xvEOvAbIvOsAQx7Gg4m5Pccw89RcBdY X-Received: by 2002:a05:600c:4508:b0:485:3949:e5c6 with SMTP id 5b1f17b1804b1-4888355ec76mr66836565e9.3.1775053584032; Wed, 01 Apr 2026 07:26:24 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4888a63c9b1sm2305595e9.5.2026.04.01.07.26.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 07:26:23 -0700 (PDT) From: James Clark Date: Wed, 01 Apr 2026 15:25:51 +0100 Subject: [PATCH 3/4] perf arm_spe: Decode Arm N1 IMPDEF events 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: <20260401-james-spe-impdef-decode-v1-3-ad0d372c220c@linaro.org> References: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> In-Reply-To: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> To: John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Al Grant Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark X-Mailer: b4 0.14.0 From the TRM [1], N1 has one IMPDEF event which isn't covered by the common list. Add a framework so that more cores can be added in the future and that the N1 IMPDEF event can be decoded. Also increase the size of the buffer because we're adding more strings and if it gets truncated it falls back to a hex dump only. [1]: https://developer.arm.com/documentation/100616/0401/Statistical-Profil= ing-Extension/implementation-defined-features-of-SPE Suggested-by: Al Grant Signed-off-by: James Clark --- tools/perf/util/arm-spe-decoder/Build | 2 + .../util/arm-spe-decoder/arm-spe-pkt-decoder.c | 45 ++++++++++++++++++= ++-- .../util/arm-spe-decoder/arm-spe-pkt-decoder.h | 5 ++- tools/perf/util/arm-spe.c | 13 ++++--- 4 files changed, 54 insertions(+), 11 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/Build b/tools/perf/util/arm-sp= e-decoder/Build index ab500e0efe24..97a298d1e279 100644 --- a/tools/perf/util/arm-spe-decoder/Build +++ b/tools/perf/util/arm-spe-decoder/Build @@ -1 +1,3 @@ perf-util-y +=3D arm-spe-pkt-decoder.o arm-spe-decoder.o + +CFLAGS_arm-spe-pkt-decoder.o +=3D -I$(srctree)/tools/arch/arm64/include/ -= I$(OUTPUT)arch/arm64/include/generated/ 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 c880b0dec3a1..42a7501d4dfe 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 @@ -15,6 +15,8 @@ =20 #include "arm-spe-pkt-decoder.h" =20 +#include "../../arm64/include/asm/cputype.h" + static const char * const arm_spe_packet_name[] =3D { [ARM_SPE_PAD] =3D "PAD", [ARM_SPE_END] =3D "END", @@ -307,6 +309,11 @@ static const struct ev_string common_ev_strings[] =3D { { .event =3D 0, .desc =3D NULL }, }; =20 +static const struct ev_string n1_event_strings[] =3D { + { .event =3D 12, .desc =3D "LATE-PREFETCH" }, + { .event =3D 0, .desc =3D NULL }, +}; + static u64 print_event_list(int *err, char **buf, size_t *buf_len, const struct ev_string *ev_strings, u64 payload) { @@ -318,14 +325,44 @@ static u64 print_event_list(int *err, char **buf, siz= e_t *buf_len, return payload; } =20 +struct event_print_handle { + const struct midr_range *midr_ranges; + const struct ev_string *ev_strings; +}; + +#define EV_PRINT(range, strings) \ + { \ + .midr_ranges =3D range, \ + .ev_strings =3D strings, \ + } + +static const struct midr_range n1_event_encoding_cpus[] =3D { + MIDR_ALL_VERSIONS(MIDR_NEOVERSE_N1), + {}, +}; + +static const struct event_print_handle event_print_handles[] =3D { + EV_PRINT(n1_event_encoding_cpus, n1_event_strings), +}; + static int arm_spe_pkt_desc_event(const struct arm_spe_pkt *packet, - char *buf, size_t buf_len) + char *buf, size_t buf_len, u64 midr) { u64 payload =3D packet->payload; int err =3D 0; =20 arm_spe_pkt_out_string(&err, &buf, &buf_len, "EV"); - print_event_list(&err, &buf, &buf_len, common_ev_strings, payload); + payload =3D print_event_list(&err, &buf, &buf_len, common_ev_strings, + payload); + + /* Try to decode IMPDEF bits for known CPUs */ + for (unsigned int i =3D 0; i < ARRAY_SIZE(event_print_handles); i++) { + if (is_midr_in_range_list(midr, + event_print_handles[i].midr_ranges)) + payload =3D print_event_list(&err, &buf, &buf_len, + event_print_handles[i].ev_strings, + payload); + } =20 return err; } @@ -506,7 +543,7 @@ static int arm_spe_pkt_desc_counter(const struct arm_sp= e_pkt *packet, } =20 int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, - size_t buf_len) + size_t buf_len, u64 midr) { int idx =3D packet->index; unsigned long long payload =3D packet->payload; @@ -522,7 +559,7 @@ int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, = char *buf, arm_spe_pkt_out_string(&err, &buf, &blen, "%s", name); break; case ARM_SPE_EVENTS: - err =3D arm_spe_pkt_desc_event(packet, buf, buf_len); + err =3D arm_spe_pkt_desc_event(packet, buf, buf_len, midr); break; case ARM_SPE_OP_TYPE: err =3D arm_spe_pkt_desc_op_type(packet, buf, buf_len); 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 adf4cde320aa..17b067fe3c87 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 @@ -11,7 +11,7 @@ #include #include =20 -#define ARM_SPE_PKT_DESC_MAX 256 +#define ARM_SPE_PKT_DESC_MAX 512 =20 #define ARM_SPE_NEED_MORE_BYTES -1 #define ARM_SPE_BAD_PACKET -2 @@ -186,5 +186,6 @@ const char *arm_spe_pkt_name(enum arm_spe_pkt_type); int arm_spe_get_packet(const unsigned char *buf, size_t len, struct arm_spe_pkt *packet); =20 -int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, size_t l= en); +int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, size_t l= en, + u64 midr); #endif diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 7447b000f9cd..46f0309c092b 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -135,7 +135,7 @@ struct data_source_handle { } =20 static void arm_spe_dump(struct arm_spe *spe __maybe_unused, - unsigned char *buf, size_t len) + unsigned char *buf, size_t len, u64 midr) { struct arm_spe_pkt packet; size_t pos =3D 0; @@ -161,7 +161,7 @@ static void arm_spe_dump(struct arm_spe *spe __maybe_un= used, color_fprintf(stdout, color, " "); if (ret > 0) { ret =3D arm_spe_pkt_desc(&packet, desc, - ARM_SPE_PKT_DESC_MAX); + ARM_SPE_PKT_DESC_MAX, midr); if (!ret) color_fprintf(stdout, color, " %s\n", desc); } else { @@ -174,10 +174,10 @@ static void arm_spe_dump(struct arm_spe *spe __maybe_= unused, } =20 static void arm_spe_dump_event(struct arm_spe *spe, unsigned char *buf, - size_t len) + size_t len, u64 midr) { printf(".\n"); - arm_spe_dump(spe, buf, len); + arm_spe_dump(spe, buf, len, midr); } =20 static int arm_spe_get_trace(struct arm_spe_buffer *b, void *data) @@ -1469,8 +1469,11 @@ static int arm_spe_process_auxtrace_event(struct per= f_session *session, /* Dump here now we have copied a piped trace out of the pipe */ if (dump_trace) { if (auxtrace_buffer__get_data(buffer, fd)) { + u64 midr =3D 0; + + arm_spe__get_midr(spe, buffer->cpu.cpu, &midr); arm_spe_dump_event(spe, buffer->data, - buffer->size); + buffer->size, midr); auxtrace_buffer__put_data(buffer); } } --=20 2.34.1 From nobody Wed Apr 1 20:46:04 2026 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 22DCC466B73 for ; Wed, 1 Apr 2026 14:26:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053588; cv=none; b=oxBEwF+13AIHvnB72uGc/Q4mSnEqPMcrZax/K2hEt5L5+9u2kkyNo1ZGpMsvdiTvoFOXye6f1R4fYSrHdVIzZhWn4PUubPc0glYS0fptes+EsJv4ZiqM6QDaOuU1pZKdk3fSpxoaDj2dlo1DvILFog65vIRpzla6TE4/n7W43wE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053588; c=relaxed/simple; bh=+FXiNbpAlmgCkXW5ith5w56rGcl3R0HNhjs0qhFXNjU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BJDSCks1bS2FjoKfbZbwZDgZqgF6ILHL3FrycORwITHKZyUwQEXM2KvzqSyoU5v1wE2c7QBTRTFkCQWAK1bFwT69+dart4Hqi1m9wKt0lQrBsY8CI86GsFTAKzM4voup/SbXQYmVXBF4pPrAWYhYRyuF2bEZ7cKda8Z2NCZ2cwo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=DlkiQCu5; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="DlkiQCu5" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-486ff201041so68953605e9.1 for ; Wed, 01 Apr 2026 07:26:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775053585; x=1775658385; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=m7bKqETK+WJUp6t0jb6uev5MchsKdP3VnlpvBvvpKLY=; b=DlkiQCu5MyLse/7ehjKRP4CsgeKglKCaDo83iLAgnLIdjGF58sq1ikXy4ZvehJWhre 6O+iXPbHFn3kjBswRLbJ8iW2OvHeEJ7Ahcy61xTASuxZLSP76MgGaONkQIvugBEaY+y5 lYCYrqEmhUcwShl5fOYHv8eKdXeZPkkPIRnUyHSNLV9H1VCMmh1ZNyQg7m3UuW1grWlT k3cE7MewEVNJUOAOrugmI52omikcdHj7MUDJ63TeJEnnQY+w/3+5PmNt9JxPQDRVJECa nNsoT2rQ4Wu+dhc7UWPV5EkjyC18LHE0SKj6w6JFuO4oJeNtKbrWWncfbfeZeQkBXYqN TYoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775053585; x=1775658385; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=m7bKqETK+WJUp6t0jb6uev5MchsKdP3VnlpvBvvpKLY=; b=RRTIMnsyWMlttECL7LLAhrF4xQBnbJKooyJNx+X+yqMz8DOdNtf7pxLeeVuOH0KPyF PIY4HcGjBhOyiWZ6Wzm7qH/tATZgBXdPokF+f65LE7lQqfFQX/qo/jRArBb5WfqjHAA8 V+BupmUw2JqW+KmFvhhg9jH3ikifDU8FMKco7S5E0pDY7tEGfvbkL6gua7+S+v1iDcAR nXJD8seucpfWQ66J8kCbzLNYiDXAXaAGtimKj9tgEoovvc3ugKD+SpAGP/cbjZ4qkMkK ZlIuKdbucA4Xh2PVVEl4QE2oytyjaCpEeF9Ch8JmCDFPwmeprEfp86H/ORpAy2WFvCjI CYIw== X-Forwarded-Encrypted: i=1; AJvYcCWwCo7C5IEm9I2BH8bjKqk25+LYGLCF+EzC64NozCjIiNVxNQbMnKAymiBs7PmdMBNFhFnNfepgNxQ38lE=@vger.kernel.org X-Gm-Message-State: AOJu0YztboGgLRulC65ombYiDkJ+jycBEMOOeHdbAhaTdqPbxbuLbEIf hPhSRFLG4gdPJ1/QRC3pDiJHErRtQNRe+x2JPkRQypXMOC/ksaOiZubJt026S1+Qv6g= X-Gm-Gg: ATEYQzwlZEqmEFl65LTcjXCPwWevu0ah6nxrpjTtypN44LwDnRGCibbXEKFzxjiLgM9 5Uz+vjdMNXbViYDCJ6mjOATIA32sEyY4o8udd4K26cGMHJBk4/stD9hayPgdwxmy+llL1qacg1N 64Hb+yhYD36p1Ne9tsNDQ6Rkw/wNw2dLjLUN+0QYwWzE/I+ZRV49CRd4myEHYzKcUH6OdHbl0bb 0B07lrSKm/bhNYE2zhodEp6EJM46njylYruZpOA05TO6lli2/BaZnH+9hyY1sZDvkibt2QdBfiZ gE7ZHJLnZfR4D/9uRhw3DOQdYHCBp06cEpbvW18yRe6rREKCcm97t7PeVYRiZGOz9eSvoNO99PS DLgPI86/nhnv1NSOkdAlbe5qbqzcavj02jNMUtjL6ujFifMSiESviNr1oeY8g1MdJFgRdWW3JIs Cm72M40A4/HGLuD+mhDsgNX+lCwpSiyxQ5U2pWqmYhbE4= X-Received: by 2002:a05:600c:a415:b0:485:41c4:e2e5 with SMTP id 5b1f17b1804b1-48883596671mr55626635e9.27.1775053585406; Wed, 01 Apr 2026 07:26:25 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4888a63c9b1sm2305595e9.5.2026.04.01.07.26.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 07:26:24 -0700 (PDT) From: James Clark Date: Wed, 01 Apr 2026 15:25:52 +0100 Subject: [PATCH 4/4] perf arm_spe: Print remaining IMPDEF event numbers 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: <20260401-james-spe-impdef-decode-v1-4-ad0d372c220c@linaro.org> References: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> In-Reply-To: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> To: John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Al Grant Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark X-Mailer: b4 0.14.0 Any IMPDEF events not printed out from a known core's IMPDEF list or for a completely unknown core will still not be shown to the user. Fix this by printing the remaining bits as comma separated raw numbers, e.g. "IMPDEF:1,2,3,4". Suggested-by: Al Grant Signed-off-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c | 18 +++++++++++++++= +++ 1 file changed, 18 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 42a7501d4dfe..b93712ce0aca 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 @@ -364,6 +364,24 @@ static int arm_spe_pkt_desc_event(const struct arm_spe= _pkt *packet, payload); } =20 + /* + * Print remaining IMPDEF bits that weren't printed above as raw + * "IMPDEF:1,2,3,4" etc. + */ + if (payload) { + arm_spe_pkt_out_string(&err, &buf, &buf_len, " IMPDEF:", + payload); + for (int i =3D 0; i < 64; i++) { + const char *sep =3D payload & (payload - 1) ? "," : ""; + + if (payload & BIT(i)) { + arm_spe_pkt_out_string(&err, &buf, &buf_len, + "%d%s", i, sep); + payload &=3D ~BIT(i); + } + } + } + return err; } =20 --=20 2.34.1