From nobody Sat Jun 20 14:14:36 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 384B73D8102 for ; Tue, 14 Apr 2026 11:06:17 +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=1776164778; cv=none; b=qOVU88T5ysqtECDmVozSf0quWFFAR8+H3C6cuwYpEo9txol2/qCzod/wVkz7CYhx5Pp6Z4IYNOCnmLTnr9RJKK9vIlIan5oDEBTHRg8VBDKUf5AoZxq5URZ9anrTdBCzuGOhO7Tagl1J2iDIplMGTQS9X4+B/VSeZSXryXZkd0E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164778; c=relaxed/simple; bh=B4MOcb4BErEsKUcIM7RRmNpCR6Vyqi8cYdqj84QRn4U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aXaN+B2BihYkFE5kcr6MEl3UDokAoau4BkGWBdgudtXD5rSLWL7byPa88TAiG/IvmyWi0biNdppd/MmamompiP6GqEd0aMBEd8U6st7kEWJ/Giz0Pt66XdDv0GrzXvbY34/h3FGRcJY7tNKo3rvh9v3JZFs4ZBRz27W8ULcv1JM= 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=KOY2kjiy; 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="KOY2kjiy" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-488ba840146so53117735e9.1 for ; Tue, 14 Apr 2026 04:06:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776164775; x=1776769575; 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=LkEHFh887Es+jtZSLZuibHtBrvBj/V7mtq/pJJpeMMk=; b=KOY2kjiywJmcfZkhMW9HgUIB0CbFtc4ZTkCCRBgsJd42I66UYKLElLJVLqb/GfOZAH R0tDiUKU3G30ybzfrguxs6yq1OjLeEiZa8kww+/dtGpafcg8gig6weolD9QhSq77WoN1 2V/wmQF8Do2tDJa2P8/TOnDut0wRJ7q6oeNy+Uw++8kBj6IzTf9QE+gRHnKI7E0b7YTs nG8fm2C9Stuo1cbhLTsGG+X6WIHyZpy7R+QyN21+ZtxMY8xrASV7TD885qVVrpv4aXIw ZNdIe+U8tNq11GQZNVdGsdiht2yiYVOB/B5XJiy5fUkUyvhuIwYWFXCrko2kqUYcZu8M 8bvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776164775; x=1776769575; 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=LkEHFh887Es+jtZSLZuibHtBrvBj/V7mtq/pJJpeMMk=; b=s3h3yzzb9G0me8XKgAPLpVAgrO2ZKSSbfGySSlht45vC1kSPE/uB1IyJzZ4da692RG 3mWSGBZkG0WMDrkDXBKLO0+9A/Ic5wbC32tz7WIoZtecCOpngydESjqYQTWMoiWzrSut vwcN7ZVFu5o8VpsoMuQmi1MBUD8Pj7Ejfzzddgwr8yBuTXYVHFeEYM8Ny329B2i++YPP /CdTPHTkZtc+xXpO1nBY8Qie/qXix1X+57yAeF4Sr2Ch2Y6Abpmo4lmCfbT3mPCFCh9D z/qVbeSXDwFsvtbSm4z+Yuroy8ypoKTIsiVghvxMURwjIvcOx1UZhEn3DXAXCMfSOJyx l84A== X-Forwarded-Encrypted: i=1; AFNElJ9hgGv6Ad9asTjRCT5PmJjJPdC8svyHLv8ux/Dgldt7dIIL5QSjQTychrlO3283yziB8Udczg6UOanPZv4=@vger.kernel.org X-Gm-Message-State: AOJu0YyrU/Odm8B4w2s9Wfp+ElW+mDZRiuBC2Uw9czJiLPt2fSbMhOoc SDGV3hPTCTjb9eBxBiYOHOtMd/OXgpAgQytrdVoasUnT2jQNgkgLnAYX1l3WqDaQ+cw= X-Gm-Gg: AeBDieuqtHMi6GpMF+49n7pxc5zru1xGvBelIiEmLm4XsVmU+nn2u7vfN51QQaVpO5/ nSzt0pT2cxrg461bk75sRfXQ9tdcI9bnc9ishzk72EMO4bGiHGilsy/iZiuwDrrcYFdSVBEIx34 ndoq8wsGvWNnwuLCTB0ySYsOBh6K2ILZhhJ/vZLUdiPZxfU/LZPjsEHV2xbgccyedEZw94RnaRO gGQrXCUAdLSqKFF/nsG0RL9T8JFC73o0hhqUyR2FbxI84YzSkpnb+26ojZwXWk8EoiWNL/Doc4+ vkOdOSovyVQQqFS6swXxE0KjVlq2SmbfX1B6XcXJePS1SQkoCORlYrYT37+XEBnFGQrMWZg0XmL v7blwwfVaJZ3Cg1y7qpXQ51+hBKw83IQw2WePWUBCBr0Z5rH6Mzed5jFj6wgJWzMTDiBdwAOhAj h0CulnFSZb8KoJxecqqxijTQmhgguAUnmpIvCbpZ/hAg== X-Received: by 2002:a05:600c:c0da:b0:488:ab5b:d711 with SMTP id 5b1f17b1804b1-488d6864b6cmr191505975e9.23.1776164775580; Tue, 14 Apr 2026 04:06:15 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5d9dd86sm183254655e9.4.2026.04.14.04.06.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 04:06:13 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 12:04:47 +0100 Subject: [PATCH v3 1/6] 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: <20260414-james-spe-impdef-decode-v3-1-63baf9c893b1@linaro.org> References: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@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 Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark , Leo Yan X-Mailer: b4 0.14.2 We'll need the MIDR to dump IMPDEF events in the next commits so extract a function for it. No functional changes intended. Reviewed-by: Leo Yan 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 e5835042acdf7685f95e19665cd45f97ed868275..39046033e1433cff82ef0668074= 867aba4a462a4 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -972,14 +972,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) { @@ -987,15 +982,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 Sat Jun 20 14:14:36 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 F385B39A04C for ; Tue, 14 Apr 2026 11:06:23 +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=1776164785; cv=none; b=l9wJAZ4hnQv2DMbM51+J719egsOWS/qoff3A3B2KnXRlxyNJMbHlJCG/dtKJ/YLKXgpyij0NF7+K9c/ZZHQCWWQxUVG2XG3ugbT0kg7t5Xbhn6nT4TG/oqYETbykZJJ4wI9lALqUBBTt05eoVbtmpYcxo79JG7DWvUkmzFcYXUE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164785; c=relaxed/simple; bh=c7qPGq5j/uORdeirWTlNi4LwnrslrbyzEVlVFo++RKY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lazgad00553WQDaOADj394j4+/xRgv97+BMyUi1XLSPMPfCgEV39eN1usWy2tQWwUxRpRCRZcBU7xkebCIYJgOkKakG2h+qodqMRTz8Z8yssQv4a9wWz8incS3Rr7A0P1L3j4VHZmQdQb+zTt/hFS2IYUrJ7P/Qv1mb5XK0F1yM= 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=uvaxyHrH; 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="uvaxyHrH" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-488b0046078so54049875e9.1 for ; Tue, 14 Apr 2026 04:06:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776164782; x=1776769582; 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=A0m6CTk6wTQa2I/4VyueCvjJEv4p9jFA0baTHakVwpc=; b=uvaxyHrHThMZoYmckEq57fT+VznSvXbnT5U/N6N2NObcn+pp7dZYnZC+DBC/HxpX/c Pbc7SJJv65kkGrk2cIH12Akue4pcOCNlazYP2q+6QbQmKc9/qCdY3/iwegpx1FVJqPmg 9JPbJLLEIVtumi2gUUvsPiEDgZsC381Ak6/JnFMaIkNJjAOoWbYv+WOynvQrW6qyel1j cYwzU6mYu1dv8DchOxSkPByyCuwDPCwhrYjiiUhQgi2e7dGysEFrFaq4Fo/iZWHjsgVV grOlpc9009WPeUxQvd2xpVOAMyM8uoGbLrQa4dasLCwL3+gX3F4EgtNFyyPdV5cejzgG 9m2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776164782; x=1776769582; 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=A0m6CTk6wTQa2I/4VyueCvjJEv4p9jFA0baTHakVwpc=; b=TdaE4mfxt+mTYCmgHck9kX2P9pJTgalGjVNKxnrfKAvNm+Xm1Ghc4IRTm5vxPOh2z+ ydiu5IilwO6JbRjDeYoAlajmP1fhNquy3+DE31GBQYJfEGq99dYR6phftR4t023Vg3GQ XavmmXJ2O1u4lS+NZmF+HuOyOnPcrxlqSkTCREz/z0vedScDFl7dX5d9S8Zr3MThT1u5 IcwxCuggvW76K2LSI0EVC6aU8YeoIYwllHKbGJzCT8MPLqhn7CCZDZSfQ7/HGwFcXHq7 wwNjwp4LjyC+rBWGzX4x0aPceaGV93FiG5le0uo3FNJct+5F224V+0lv0RPTasV3oDop Abcg== X-Forwarded-Encrypted: i=1; AFNElJ/D//5kDZOttBS7f/mdchw6Ep1VPDL8lkoTa5HxOSHy7CXpPMhDSuzybkqjGsaUbJTfbI07MG+gRlyXd/8=@vger.kernel.org X-Gm-Message-State: AOJu0YzGHuYrl/EwrmeR/9i2WiC1zB1YKWZBRAMTrFZ4Kbvo1geOzVj9 rI4/cdX0hIA4pkwIbFA71PDOYpF2QQgZJyIErDB2HAhj/zkPsZ8DyTIIARCEz4Ekay8= X-Gm-Gg: AeBDiesRx02I+mYsY8GhObtJvF/tbEa/K0ytZOXYRbJpAVzwQY0bO8W1Ibfwn3BOZyj 2ZATrXnIk4uK3m6ASs/2wmJIWg6ZZj1rdOwgQAcchRK6Ge+F+lMlHvaww/OnPbn1206bLxL6YTq gSLG9VXTo/BPl6a+ZxAxYXglZqoEveBtliYDuxUyt4mJkXY1XaSNvqTjUc/ikg3DitL/5I7fw6K ZG40UzG1p34n8Hx780xXhjDWqii8hj1ZlAtTMOpwQn4Vi7u4eqYM1igI9vXfkO81kPpSYZ18rYt HtvhDvLWpKLjdqXjKkKh6v0hc0Wu5eGFdeA3uwTGzDOBUPBkp8GB9P9uIHDAmkuXHCprx1WEAcK y4l5L0dMNZhfc7KO6Ao+pYjqAArPYpwhY86XCo4Ne4mYfMXiH9HAraK1158CCWi7z6HBExlIiK5 uwx5diURAEJ0g+lWQxl+jV+kqqfcRnwbDI2z2+oOyUeQ== X-Received: by 2002:a05:600c:8207:b0:488:a4d6:69ad with SMTP id 5b1f17b1804b1-488d688dd1bmr229092875e9.27.1776164782252; Tue, 14 Apr 2026 04:06:22 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5d9dd86sm183254655e9.4.2026.04.14.04.06.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 04:06:21 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 12:04:48 +0100 Subject: [PATCH v3 2/6] perf arm_spe: Handle missing CPU IDs 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: <20260414-james-spe-impdef-decode-v3-2-63baf9c893b1@linaro.org> References: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@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 Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark , Leo Yan X-Mailer: b4 0.14.2 Don't call strtol() with a null pointer to avoid undefined behavior. I'm not sure of the exact scenario for missing CPU IDs but I don't think it happens in practice. SPE decoding can continue without them with reduced functionality, but print an error message anyway. Reviewed-by: Leo Yan Signed-off-by: James Clark --- tools/perf/util/arm-spe.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index 39046033e1433cff82ef0668074867aba4a462a4..f9188fdb8e786fccff94cd8a92f= 367d90efc5cfe 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -982,16 +982,23 @@ static int arm_spe__get_midr(struct arm_spe *spe, int= cpu, u64 *midr) =20 pr_warning_once("Old SPE metadata, re-record to improve decode accuracy\= n"); cpuid =3D perf_env__cpuid(perf_session__env(spe->session)); + if (!cpuid) + goto err; + *midr =3D strtol(cpuid, NULL, 16); return 0; } =20 metadata =3D arm_spe__get_metadata_by_cpu(spe, cpu); if (!metadata) - return -EINVAL; + goto err; =20 *midr =3D metadata[ARM_SPE_CPU_MIDR]; return 0; + +err: + pr_err("Failed to get MIDR for CPU %d\n", cpu); + return -EINVAL; } =20 static void arm_spe__synth_ds(struct arm_spe_queue *speq, --=20 2.34.1 From nobody Sat Jun 20 14:14:36 2026 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 078CB3D8101 for ; Tue, 14 Apr 2026 11:06:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164787; cv=none; b=BtzUeMz4LzWTaWJrRAZrfX0w1fWoIUjcIXm1F1uMpkLrVmkcisPiUpz5WrdZ+uq/+OGPHplKnz0BwfjreTbeD2Rkk8/0LBoVeAVcpITj+XRQFCdr9diL5Do5B/pWy7p3ZYjwHxRlHFnawn8qlOVOnULBs+4Aa70W6JLHK3dzB78= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164787; c=relaxed/simple; bh=G0bee4vw3d6hXTvsX+KE6tMYAJGliti2pdhDfJ2yqOw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=LSYUYPlBZfXPgCBhXlex8cQkR/jiiHUKoLj8Yx2vDRABtJ9avTtxUOP/UG5KX73qnGd4VPeYPM8pNbVDidPG/lXEMYiEgsM7k79knhgtgNagGrwvJAWPY4nrCZoFGHXqb0sf0TGrIxIFVhYDAPVAex5ZeWnucvC5+rPd37QYw4g= 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=YCrI33QL; arc=none smtp.client-ip=209.85.128.43 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="YCrI33QL" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-488b150559bso43095245e9.1 for ; Tue, 14 Apr 2026 04:06:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776164784; x=1776769584; 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=cnDaoHU9lvJQ2uQXddehL+kUOzgShbq6x/cqg2qBy3Y=; b=YCrI33QL9WOgfh4tcNb8avpbenC/KxXPc1ht1yAJ4NzCUNOu74pabUVpwbKg8XYf1f hIwyuZ2fr2j1PGzgM/XysvjKzMUgdM8bfReT1rWBdyW+OwW09Y+zisLlIOIkDuFmqrZ3 VfL3+VlAYmUG00qVaV8DmSpx2EMf1j3qoHzgNEJ3C09IFWSsFx0md1cZrCGe1ais2DF3 SE2mdUpwXO4WmwATj/Uo7c2ol5cdClrnJMHbCqdkHPZ1X7oG8pQ/xoOinNeo10X8ORxc tP6QR3MU9ang9ntCzaEOUnp3TnMYghPdNU0CUExMV6FfEkgwIJkWjD3HJPq1RJb+A8op r/Nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776164784; x=1776769584; 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=cnDaoHU9lvJQ2uQXddehL+kUOzgShbq6x/cqg2qBy3Y=; b=AgqrqJ7E/n8O2Sfd3SHZyzKph83SnyMXbHUpOlZAKtkKBsWZSzTb/ya8D3Vp53MAMw OdjA1LE4H/F+Wry1gCuqy/9IKaF9Nbo2Usb8+aKVl5RIcz3X8eqhArf7S0SLRtxbX9J2 fBc88Se2hLM1N/KlBuvLfOh+aciIjn6XVCDVRr/q5k6SgK8kxKZ/mna373ep1F9fYqGA wP51yiXukOi76arLv7BSEI8lQiP3JW0SqahDk/0hkAnHxR0E0M3cIzRvEYwbNVtIenFB nXgpP/zLS/s61eE0tjVfce34qib5tZdGWQi4j6qfjVp4S3b/TAfWJyWT537KYU3YpxtY /eCQ== X-Forwarded-Encrypted: i=1; AFNElJ8Y/AVUJ1DLQCnpvSmMeq+UTe8KQQbFFR1fZJlsnTHcWPnl0+KIDAkY8t2G6QX4kEqulxzZEgs6PJdKvcM=@vger.kernel.org X-Gm-Message-State: AOJu0YyBZZm7bR/j0Xjz5H4d4u7HgD+yoZkIaNo4ebHV/dqQ9EgUxGph YEO3nekQrxYXB8LiBu1WhD406bOo1B1RetXUzE6zXygNOBiYdN62pBTfcLUrWY9VLgI= X-Gm-Gg: AeBDieuzzaRdY9+RATSop8w7F5q4qElYdQOj3G3npPSLAIbNVMGd1HY/O/iV3Nhlo/n tGO2AiRVTv7KtPl2iWw98+9KwRbLOAXWmI/F6fYbnkjXkpbGo61DZ0YkeVPFiH4xTJsVDJ+Xwzh eYYgv1cwvXh7OA5KUTRMhiXxg+8qERxHYW2NBYK+z7eJHz3lgVUtMQHiPSIH/2f4p+TnvKST6Uy cb5DxkAoiJ16JUVk05Q91JYyZmcuGO2nIB0R+XJCgY2oM1mJ25vNmc/PkHoaFtx0uaVyATt+0NW gz3G4GUlKRHMwAsqxLQs3rEs/JNHTAxpXkYYcfi4lDfic3h020Xk+Lo+MHDb5ytdv3aWyU7aEWh sHABCeRsYfW8H6lN5PjcXpdD3hl88D7RZRf/CUPGM6SsoO6NGOw5eU+5bnVHD/3ytSM2aXNpXUn kvtoajHBK7qdbYEHIc+zpK0sooTWJTjewpK+Kc5ovmmA== X-Received: by 2002:a05:600c:c084:b0:485:4006:960c with SMTP id 5b1f17b1804b1-488d685b86bmr169239765e9.16.1776164784181; Tue, 14 Apr 2026 04:06:24 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5d9dd86sm183254655e9.4.2026.04.14.04.06.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 04:06:23 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 12:04:49 +0100 Subject: [PATCH v3 3/6] perf arm_spe: Store MIDR in arm_spe_pkt 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: <20260414-james-spe-impdef-decode-v3-3-63baf9c893b1@linaro.org> References: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@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 Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark , Leo Yan X-Mailer: b4 0.14.2 The MIDR will affect printing of arm_spe_pkts, so store a copy of it there. Technically it's constant for each decoder, but there is no decoder when doing a raw dump, so it has to be stored in every packet. It will only be used in raw dump mode and not in normal decoding for now, but to avoid any surprises, set MIDR properly on the decoder too. Having both the MIDR and the arm_spe_pkt (which has a copy of it) in the decoder seemed a bit weird, so remove arm_spe_pkt from the decoder. The packet is only short lived anyway so probably shouldn't have been there in the first place. Reviewed-by: Leo Yan Signed-off-by: James Clark --- tools/perf/util/arm-spe-decoder/arm-spe-decoder.c | 17 ++++++++++------- tools/perf/util/arm-spe-decoder/arm-spe-decoder.h | 3 +-- .../perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c | 3 ++- .../perf/util/arm-spe-decoder/arm-spe-pkt-decoder.h | 3 ++- tools/perf/util/arm-spe.c | 21 +++++++++++++++--= ---- 5 files changed, 30 insertions(+), 17 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.c index 9e02b2bdd1177193996d071dd88f969e25b1ad86..7a3a4815fd37b7f57687189c09c= 618aaf7ac9801 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.c @@ -120,7 +120,8 @@ static int arm_spe_get_data(struct arm_spe_decoder *dec= oder) return decoder->len; } =20 -static int arm_spe_get_next_packet(struct arm_spe_decoder *decoder) +static int arm_spe_get_next_packet(struct arm_spe_decoder *decoder, + struct arm_spe_pkt *packet) { int ret; =20 @@ -134,7 +135,8 @@ static int arm_spe_get_next_packet(struct arm_spe_decod= er *decoder) } =20 ret =3D arm_spe_get_packet(decoder->buf, decoder->len, - &decoder->packet); + packet, decoder->midr); + if (ret <=3D 0) { /* Move forward for 1 byte */ decoder->buf +=3D 1; @@ -144,7 +146,7 @@ static int arm_spe_get_next_packet(struct arm_spe_decod= er *decoder) =20 decoder->buf +=3D ret; decoder->len -=3D ret; - } while (decoder->packet.type =3D=3D ARM_SPE_PAD); + } while (packet->type =3D=3D ARM_SPE_PAD); =20 return 1; } @@ -154,19 +156,20 @@ static int arm_spe_read_record(struct arm_spe_decoder= *decoder) int err; int idx; u64 payload, ip; + struct arm_spe_pkt packet; =20 memset(&decoder->record, 0x0, sizeof(decoder->record)); decoder->record.context_id =3D (u64)-1; =20 while (1) { - err =3D arm_spe_get_next_packet(decoder); + err =3D arm_spe_get_next_packet(decoder, &packet); if (err <=3D 0) return err; =20 - idx =3D decoder->packet.index; - payload =3D decoder->packet.payload; + idx =3D packet.index; + payload =3D packet.payload; =20 - switch (decoder->packet.type) { + switch (packet.type) { case ARM_SPE_TIMESTAMP: decoder->record.timestamp =3D payload; return 1; diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h b/tools/perf= /util/arm-spe-decoder/arm-spe-decoder.h index 3310e05122f02e8ef32f79f8ed3c6932cc43eecc..0cbcb501edc9965d34cfd3ede79= cab3fd9b318f8 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h +++ b/tools/perf/util/arm-spe-decoder/arm-spe-decoder.h @@ -147,8 +147,7 @@ struct arm_spe_decoder { =20 const unsigned char *buf; size_t len; - - struct arm_spe_pkt packet; + u64 midr; }; =20 struct arm_spe_decoder *arm_spe_decoder_new(struct arm_spe_params *params); 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 5769ba2f414049161f271fd8b8f40c440d15a75a..718022aecec30bf30a51ba3d2bc= a9cf6465259a7 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 @@ -222,11 +222,12 @@ static int arm_spe_do_get_packet(const unsigned char = *buf, size_t len, } =20 int arm_spe_get_packet(const unsigned char *buf, size_t len, - struct arm_spe_pkt *packet) + struct arm_spe_pkt *packet, u64 midr) { int ret; =20 ret =3D arm_spe_do_get_packet(buf, len, packet); + packet->midr =3D midr; /* put multiple consecutive PADs on the same line, up to * the fixed-width output format of 16 bytes per line. */ 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 adf4cde320aad01265b5232b0d6ff6b1f752f35f..a457821f3bccb67691cfd530de2= f1c5bf9d8d50c 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 @@ -35,6 +35,7 @@ struct arm_spe_pkt { enum arm_spe_pkt_type type; unsigned char index; uint64_t payload; + uint64_t midr; }; =20 /* Short header (HEADER0) and extended header (HEADER1) */ @@ -184,7 +185,7 @@ enum arm_spe_events { const char *arm_spe_pkt_name(enum arm_spe_pkt_type); =20 int arm_spe_get_packet(const unsigned char *buf, size_t len, - struct arm_spe_pkt *packet); + struct arm_spe_pkt *packet, u64 midr); =20 int arm_spe_pkt_desc(const struct arm_spe_pkt *packet, char *buf, size_t l= en); #endif diff --git a/tools/perf/util/arm-spe.c b/tools/perf/util/arm-spe.c index f9188fdb8e786fccff94cd8a92f367d90efc5cfe..ed4515fef2de3dded17befc358c= 87c2461d397d4 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -134,8 +134,10 @@ struct data_source_handle { .ds_synth =3D arm_spe__synth_##func, \ } =20 +static int arm_spe__get_midr(struct arm_spe *spe, int cpu, u64 *midr); + 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; @@ -148,7 +150,8 @@ static void arm_spe_dump(struct arm_spe *spe __maybe_un= used, len); =20 while (len) { - ret =3D arm_spe_get_packet(buf, len, &packet); + ret =3D arm_spe_get_packet(buf, len, &packet, midr); + if (ret > 0) pkt_len =3D ret; else @@ -174,10 +177,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) @@ -302,8 +305,10 @@ static void arm_spe_set_pid_tid_cpu(struct arm_spe *sp= e, =20 if (speq->thread) { speq->pid =3D thread__pid(speq->thread); - if (queue->cpu =3D=3D -1) + if (queue->cpu =3D=3D -1) { speq->cpu =3D thread__cpu(speq->thread); + arm_spe__get_midr(spe, speq->cpu, &speq->decoder->midr); + } } } =20 @@ -1248,6 +1253,7 @@ static int arm_spe__setup_queue(struct arm_spe *spe, =20 if (queue->cpu !=3D -1) speq->cpu =3D queue->cpu; + arm_spe__get_midr(spe, queue->cpu, &speq->decoder->midr); =20 if (!speq->on_heap) { int ret; @@ -1490,8 +1496,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 Sat Jun 20 14:14:36 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 F291B3C7DF5 for ; Tue, 14 Apr 2026 11:06:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164792; cv=none; b=A68UaiNChRGrDb1A5qYo9hugHctlOeyvvHMvZZw83CP+09iS5zH3YhbhaHWDIecvYc8KoLOtEjxT4Tl4URbS0pCLj/o2rtXwJ5JwyIdiTNwt3kj7tIlNCsOETEWfCzETFHMWPdqtFkADOo0ZaZvqz2g9L7PAa2uPzPYQLyvh73w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164792; c=relaxed/simple; bh=chqGz8CXMiy63WmmO8OrPRWkTU/CYPZOJ9Kjy6IEH1k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bTbB9ethAOCERFXYhDY1r4raGQntfLDwXw71mIZOzW1TjL22Km6fq7hFnR4MgCXA/LSnS4C6EA2raabiJO4k13SNqGeWMf/hhhFknxOmUFONl4E8HbKWn/d2ARfBpcx8mE9QUQpgIug3mEfPelIBiA7b7xAb72FY/+aB8XFSaRI= 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=cBt3cuHG; arc=none smtp.client-ip=209.85.128.48 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="cBt3cuHG" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-488ba840146so53119925e9.1 for ; Tue, 14 Apr 2026 04:06:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776164789; x=1776769589; 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=wbsDVJkTRMx0qswgCm9IniTVkJpsMJgpoF58GIGXMdg=; b=cBt3cuHGlqDlzFkCEpOPnUyhV4P1GAQ+7Uvhx78u1A+jquFL/TRND5Su/e05pnsU0N Ol+p/aIQRbYcruoo7Zypf+DVJ3mdozhHM23UjRYmBLRjkCmKqYF/1lNY/IUXXOWt5Bjz C/FOOaw48g6ZUTULFk1hTABqKjkDDPBFbsjP6SKzGWMBMLWVzBPnbcpwyUlzqVGxJt8I ke2Yt2qIpUA8215AePQnO/5rBm52okz0EmA7WaZMPbexNHqagWXrUwAgJUKGNalQ62g8 2Q37yfY0bykIpHlk3wmZdc2wJuSto+rwh9A8UEZOqKx1Swgy8xcgUi3Uq55NuCO5c//Y Umbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776164789; x=1776769589; 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=wbsDVJkTRMx0qswgCm9IniTVkJpsMJgpoF58GIGXMdg=; b=PB/G06TXescTo6LcMEjiHb4aBKi3Dlrvr7dDwGtG6DEUC7f01iu5vdwP8LSTwRrzdu uSulonqcUC6ybs3yZkSPMllLGdk0KLma+DphKsX1UXzL+uaAZHWliGG3YhI90T7NZoPk jRtMXpbav7DuaOFb24/8o7EUGimSThhoQNPUUPPR9JB2//ft2TwLmyE5QVoiJNv8Aww3 3zlfgl7K3jsa8/pA/ILg/HLegb1tFKHpoHxsAPMqzHW0QOrfskl93ArEJXDdCv+xicKE izRrRWgpGrYOZ0MhBNQiiS4cvvoer0TkA3AC4jMSXNOX6762zXm1uSOTc9y/71KrJf2R yB4w== X-Forwarded-Encrypted: i=1; AFNElJ/Ng7Sp8httHbYbbEA+/4oofSG3ekxtYk/vwp5Pi3zf7JnkVp4pzpe+1SDyBXvaCtUWozuhk/4Yojz6bM8=@vger.kernel.org X-Gm-Message-State: AOJu0YwYf7pWZL1PjkwQFiL/FVzBXrJzC8dzML+G7CSTKT5axqwgBo3y 3ewzY5ued72WpCjQZwlyVnRaUtYA+WzxDIX3xsbmlLTZVBXQDn2nH9etY6+UlfR3gAt0NL2zppp 3kgA+uGo= X-Gm-Gg: AeBDiet7JFDf6WDyvTKSC3rz2D/Ob41LUBwqIUJB17/ADC7IdUqhtNnRISOIj8nE3xm 5PH/KKdODr50GZQacgbPQUpIcKHdKfnw4YnbKlKi2oww+1f8Htm/53ZqRHrfmDLhh92ndNE0Ecp gBD7jNlann/0LZtv4H7znM6kpppNdzsbALY8puBY9Q170Qy6GaPQPQEYyZdsiIgyrWPVIC4WMan T6jTcSqeGTfEO0hWIF0M+/fkXNWhXWPQ7nQEJZ+LUyexvobDk1POaBNNVCKVn7Kc2xpFikPjmzG LjD56FgrT9lbipG91fXa56ZFs2nQEniXB2HqzCCynoZIrOIg8q1eaRNs49lJ6ot/1wKRjs2LdH/ VFs50qEyCBX45B6aNwY1pqyLbsMndBarvxhG3a5MY4B4Cf3eOVT3pIpcMOKAJVn5VWRWKTi/Y0C HA55Q3/TLkrZnR0lrGpLDfESSC87ZhU1XMB06kCXdnLg== X-Received: by 2002:a05:600c:8710:b0:485:3abe:ab86 with SMTP id 5b1f17b1804b1-488d67bbd1dmr248340235e9.4.1776164789177; Tue, 14 Apr 2026 04:06:29 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5d9dd86sm183254655e9.4.2026.04.14.04.06.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 04:06:25 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 12:04:50 +0100 Subject: [PATCH v3 4/6] 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: <20260414-james-spe-impdef-decode-v3-4-63baf9c893b1@linaro.org> References: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@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 Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark , Leo Yan X-Mailer: b4 0.14.2 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. Reviewed-by: Leo Yan 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 718022aecec30bf30a51ba3d2bca9cf6465259a7..67ca356100e53aaf6d474897175= 37ba27aa2b98e 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 @@ -277,6 +277,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_ULL(ev->event)) + arm_spe_pkt_out_string(err, buf, buf_len, " %s", ev->desc); + payload &=3D ~BIT_ULL(ev->event); + } + return payload; +} + static int arm_spe_pkt_desc_event(const struct arm_spe_pkt *packet, char *buf, size_t buf_len) { @@ -284,51 +326,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 Sat Jun 20 14:14:36 2026 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 AA04F3D8129 for ; Tue, 14 Apr 2026 11:06:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164797; cv=none; b=gQoxnEkqjOIOcIvaVQx9dzoos0hTpr2vdWrWFxjnH4hYH5HX3QenwBnhmBJoVWtm/d0vkveqvKDjKEs7yoWzaXzI4lg6OmikO4SOwTRhOO70Cx67wdi6HLTIXrYjGQ58iNHbwN6avCJGHPod+6LzOJOVZ/te1hVpCG2Fqjdl4M0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164797; c=relaxed/simple; bh=+hAJHqlA9neGxwPbbyXGO8mgwNwORpfgUWNnvOZvG0o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VmOLhFChagq+4suWbuJWJiivi/lwTxGLRhREHXq+CFvkTSkXoF3cItA7NYw4iRbN4wUkingiRs5p4Ivrq+AxF/g1nh7H7+z3wPGl89uYBosE8QJh8uJJzbJ8CDv4AbotMh1ADI3ZDmGxZ2tcIejYDFdJeHxaZYyfQDJXCv4NmfM= 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=WOLZZQzH; arc=none smtp.client-ip=209.85.128.52 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="WOLZZQzH" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-488a29e6110so59226695e9.3 for ; Tue, 14 Apr 2026 04:06:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776164793; x=1776769593; 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=h9CYFRKleV99FYE5YRfSxRGUGOIShzVFADPCbQgmgLs=; b=WOLZZQzHDWsfL8lCSa6wmFllDUTBaNUDaenSwSBEM5qWBIKiuWHm5ysOGKJBRSNDP2 P8KY6jDmrXhBKYNWDVMO65GK8z44usI+hIx3AgWYxIrrBf56/io5kvl1e7juTfXzO3Vh ySnAVw6Jon/Oa4lK0K0fMpWDFIwH3K1eBBQ975xqM8dbzXsJQKMv984HhqJgOUz81kkI owJQdEOLd95+P4D0/6t9T8dwCYltRtJLdWMe/zXmBI8abXo/qSolcvlNmMK+4TdF540c H0t4Zb8cn/cJyf07VNvdYOvG1r6J6cAmmBtBNvQtMsQGtVU1TVvUUJccAKGhSgO/C4+3 UUiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776164793; x=1776769593; 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=h9CYFRKleV99FYE5YRfSxRGUGOIShzVFADPCbQgmgLs=; b=PsSkkaeULukQvl1pwxllOYrxgqZNbWLoyiraKUPwbIxUy/lg38fhBBHzRuhb4d30z3 4wjegiFh8hsLw4EqLFfEjo54eHDMP6gdB0VonJILYxylzTMJ7sIdHHfC9WDLuYl2pdSC CvTLWcMilsBHwBxWURZwZ+ho63ak7bkGKVeTo/n8aXnP1AkaqEctlj43ZV1FGOYooRXs 7Uxo8cuYwJzhckDfDypdtpsoYYgewrop6HofBcYgn5dkiFEooMB4BfDgZtSq+juagL3t 4j2Ga/EWdi943yzMbLdsVyI6JTb4keKfqxUGoCrRDk2J9d9mfb7zL4Ost2KuLsEPEBdd 0pdA== X-Forwarded-Encrypted: i=1; AFNElJ+wbsc0CJ+hVb/n6vDfw3/H1y21ZP+rh9H25hCvMvUR+FUDJKOb/q9dBnPbMuvw8s9Xrt/A8K/SNNzvAgE=@vger.kernel.org X-Gm-Message-State: AOJu0YxPNUKkssF99rf9PvqvwG2cpGPMQcm82uLIOghaqtsmI7mMhWpH BJvuNuTrfBiumLPkqPgmPItwEeo/HTGHRtUBH8YOlMhyPCjFlhtwEwalACGJH2AibZw= X-Gm-Gg: AeBDietUI3j6WG4O2BLOJtqCFKsL4mzCdzrApKbkEOPD1dtfB32r71ZihRnQVEMwHt+ UkB3juvMp6PbJFMFLn4rHL1urSjuNS3yixbu3XIqTNkWfjtnAO21KnjhrXIA7UYg7w3+QqKDNhO 8S/Y2AyMbGEe6RJJWXuUgLbX4Ve47dmgzOCP3E/AfrHAIzN0Cqho1CrKj2oWVf2UjNC5YUjAoOo FS9go4uEdP6H3mL2sri0edLYS8+Gf9ITfQ0BZPbYUgc9xgVGcDrAmo/TWry+2iSk1ujsgU+wf1y v3Ds84jGuPZ7VMfMajx1qyV+5NcixmXSe6Lk1PMejIEhBEuFKkEQiFruu18Hw5kJkHhOpvZFiK9 1GfLxbqgUoLeMmZGCTYp6l6ccKqZKvj8U5rqsNCpQzIqKPMbO+hX4SdSuLrXTiP+h02wTNaPI6J OPpeg4+lLf+VwkTO2eQNHHAnBZ7kZhZBnvGvnTMnwvlA== X-Received: by 2002:a05:600c:8585:b0:488:ba19:da25 with SMTP id 5b1f17b1804b1-488d6822a0bmr168820335e9.12.1776164792947; Tue, 14 Apr 2026 04:06:32 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5d9dd86sm183254655e9.4.2026.04.14.04.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 04:06:30 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 12:04:51 +0100 Subject: [PATCH v3 5/6] 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: <20260414-james-spe-impdef-decode-v3-5-63baf9c893b1@linaro.org> References: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@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 Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark , Al Grant , Leo Yan X-Mailer: b4 0.14.2 >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 Reviewed-by: Leo Yan Signed-off-by: James Clark --- tools/perf/util/arm-spe-decoder/Build | 2 ++ .../util/arm-spe-decoder/arm-spe-pkt-decoder.c | 39 ++++++++++++++++++= +++- .../util/arm-spe-decoder/arm-spe-pkt-decoder.h | 2 +- 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/Build b/tools/perf/util/arm-sp= e-decoder/Build index ab500e0efe2449fa2535d6efae2a30bc2690cb9e..97a298d1e2791bb9556cf893bd1= 70ef938bfe631 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 67ca356100e53aaf6d47489717537ba27aa2b98e..b74f887a48f2a13b1be165947b4= e3293f9987bd4 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", @@ -308,6 +310,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) { @@ -319,6 +326,26 @@ static u64 print_event_list(int *err, char **buf, size= _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) { @@ -326,7 +353,17 @@ 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"); - 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(packet->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; } 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 a457821f3bccb67691cfd530de2f1c5bf9d8d50c..a3300bec4990a76608d23e34368= d6146c9f4a5b5 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 --=20 2.34.1 From nobody Sat Jun 20 14:14:36 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 C2CE13D810F for ; Tue, 14 Apr 2026 11:06:38 +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=1776164802; cv=none; b=YFUIDcGRfDgKTMmOQ00pYl05Xv4pMJqFIIE1cmBfTMFlrsoylK6lWiPNOBUQNqz46A5kXmDZJbg84q1d8OpGexF5epd5jJwd9gE5jNMIK2+4fPXRugqEnP25pPRie8c3Q+PRDJO59ujDb/3fvOAOjbJRzn9FoS2HaVcUmZuIq8c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776164802; c=relaxed/simple; bh=/AzkEovsO9hXmRshBeGK0xV8fVdHRetAqtsdomf8VKE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZNH8tAp4o8NXTXVjeOLS7zS5PkD2cugF1OtviC8z+9kv7kHTEsdICAeC9iITjoNmJs6olBjvG5Mtw9PcekNxBMSllsOk7GQctcc/gV30nMRwJKuXrIWloTLFdJ/YSlZbqY3mnE97OzJXejmQylxUYPVTdRjtpafYgof5sZt8/7U= 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=Ce3rrReA; 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="Ce3rrReA" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-488d2079582so49234995e9.2 for ; Tue, 14 Apr 2026 04:06:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776164797; x=1776769597; 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=SmMwrtSIePz754V0sje5TuC0YnmOAM3jxAH9WYpMnUs=; b=Ce3rrReAf3xD/w1isok+d9t4CsxlVd0YXxhpLwbK1/Y7S2n3xC3fATzEyK9rPL1Wwu cL8aWoB0iBt3kKP8rUaaVe4jl4se1ajLeF/oN8WwLOVPRmhz/wNGaVEXLrhlC+GdW9PH /4QkhhC3tTaWDExR7bFHD2UlsScHGdQ/fXJbNgO/QBFpr/8bMvdBYcO8olY3UXabcRAU AKKdlmj3CcWVMFVdeKAf7i86Cj9JDoBYNawY/eCyF3WoMeBYMXdd3H9AiFp+7Dn4ugog U5f5FAcOMnBerqtN+xjgpFWfRz7acwM71wbu7dFbJL1HMhXTJyNXWrlMbab9+BKt+LH9 9Ggg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776164797; x=1776769597; 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=SmMwrtSIePz754V0sje5TuC0YnmOAM3jxAH9WYpMnUs=; b=cMtRp5FuLiKTJt2o6Rn7+84PNnOFs09zbATIQCXrWEOGh2fs30EC7u8Q1n6GLvRPlY tTX/YDAY6qqLfg/T/mwhtJ6HfX0CD8egfemhECQuhPThxazvtHd8Dcvpg+V1b1FY7bFb bXIjGsrGQisI09bh8DqbDVnzc2GE5k9Pl/cjLMYTHYcUMbgDAqEpcju9MAjqBnfFLpA4 YBzeu2Urw4TQmWjdWEZQoKgcCTtHF+jQQwDAr9XWDNS6hPbc9yo6CvR3HpcpqEWolpTy bolmuz/qMjhuUD59xxAhXf3D/S2DXLh8s30QzsQaH7BdqgGfZbeBS1OgUDwZVLLqs5nl 0DIw== X-Forwarded-Encrypted: i=1; AFNElJ+HqvAw2wHSvXf02YnOIm+p1dT9Z4P+wU15XiH/1qea7+y1Brjt2YPBPV6fyiC3m1ZQIb6jhlu/q9gceJQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzovIvb7tXQKH8Td/HCSj3FFmAraQsZAUCyRyroSVOaoHOBXK6j hHGM3sg7PaHV2KuW1RHz/lddEom1V2Vajs8fRNcSRzK3vsnybOGuklbc6XhQjiIuUkU= X-Gm-Gg: AeBDies60YQuZj3znd2MPqtP2XpKYAOnbv0kCxIAOb2aBZ577Wb87MT2/JTcqt3iy62 VM0G5+0iVaJW5wNmvvCNqCpmxF4bRqlIHLdc4Y7BGFrkGlmNQMFbDc1LT/HT7QpRgfsUob4MA+U XwFsLkQYbaLtdI6T5a+fO6aAX1/x0TCrt9vO7+7XClkmXIbhsrlJ1uGHujJCG31whkDwQkHr47C f9I+ZlW3WE2oCDuJ+cO+pfMzptk+jy9WrLhvUilYerRB1uK3r3wGA12WREPt6Y6keKY+Br40t1w GXJ5zqpsFm3VVm+EdTcN0jf2ZQ2kCUp9ekoGFmVfk3ElPBoBC657xQrNVBVwSeHsuSA/rjHSHi9 D72wjnGhuVX9v1XpAshBIXBhFqHllJA73KXnOJXKgQuI5AoH2FUJyuAPavA89LNCREltnJBCGpd jO/ppnVtjVZotN4sGTYHyGnOu4EZEZP8tign/18hiXuw== X-Received: by 2002:a05:600c:3b24:b0:488:b811:51c4 with SMTP id 5b1f17b1804b1-488d6872ed0mr236056315e9.25.1776164797092; Tue, 14 Apr 2026 04:06:37 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488d5d9dd86sm183254655e9.4.2026.04.14.04.06.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 04:06:34 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 12:04:52 +0100 Subject: [PATCH v3 6/6] 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: <20260414-james-spe-impdef-decode-v3-6-63baf9c893b1@linaro.org> References: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v3-0-63baf9c893b1@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 Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark , Al Grant , Leo Yan X-Mailer: b4 0.14.2 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 Reviewed-by: Leo Yan 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 b74f887a48f2a13b1be165947b4e3293f9987bd4..600677318f84c06970e4e618280= c39cc83ac5b1e 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 @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -365,6 +366,23 @@ 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:"); + for (int i =3D 0; i < 64; i++) { + const char *sep =3D payload & (payload - 1) ? "," : ""; + + if (payload & BIT_ULL(i)) { + arm_spe_pkt_out_string(&err, &buf, &buf_len, "%d%s", i, + sep); + payload &=3D ~BIT_ULL(i); + } + } + } + return err; } =20 --=20 2.34.1