From nobody Sun Jun 21 04:20:33 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 A003725C80E for ; Tue, 7 Apr 2026 14:05:55 +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=1775570757; cv=none; b=PLQ68UipBPFEIjvJYG6XH9kHprfE8Pv8FTxaL28iIeBblBNvqGGm44TBnxqu+fXh2KriB+KVF73Qgrohj9UEjMnokZHDhFuhjsxkI1Z5WdZ2SJs0IimsmmA+/2HFUmxMUXMGi/fT6t/fa7VeLjMz8SxPBpDDJxBOasZ63fKAOLk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570757; c=relaxed/simple; bh=Ke+mofOeDLb5pmcMy/dBCh0xbRjGzNIFYZJwmJXyb9Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JljMWUw6ttImq+k1qZNA8o2dPGyBREaH5H4y/flMP6b0DZI+w0nxeVLMsUuf1nULGmj31R6pEot1kcsvPaIN6mDru2nNFlCl0aMNtuFMwYWq6WtmD09j/3PeT+M86TDVCwCgbjPazio5gu8vGJcclxszgmP5ez1eGNvFagUtQow= 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=ZrRInc31; 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="ZrRInc31" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-48334ee0aeaso46789965e9.1 for ; Tue, 07 Apr 2026 07:05:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775570754; x=1776175554; 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=4KE4LNWE9ei5fXKZj9AAb4uKojrTcY8EpFDsm6Wly7w=; b=ZrRInc31nlQvt576b4KVZ+9hfSP9GPtYJ/WmMU/4+lQjQK67hmN9oBg8RJYwjS0KAa IUCRUcWpCBWI8QHvb9k+/G04UGZeoe8CJnSz42SOFSuWp35qcnS+5VSjYGv6y3nNJRPL dThr+c3JS4A6S9Kp/kFydjfUReCI3pxnTUDeycqxac2HceDFTO0ka4TQaF+QjKBhJLn7 Rlf24ILhbW2kV4jO0CKqL30qEqyd3bo05/2chLeFVP0iTAM9wZp9H3xNwON0wQE6uGxv p4o5yHRUUYByaAFtDG3U6+cyj0OzsEARkRqb0gk60rBFgitFFMZ+nP63dxK+OUwxKz/3 y0nA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775570754; x=1776175554; 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=4KE4LNWE9ei5fXKZj9AAb4uKojrTcY8EpFDsm6Wly7w=; b=aCTM966zmzNBmKvVz9Vl0W+3Pv9MbKpr6xW9462sRLdkuFwNMLWGV0G/Oe3OCyNMxm qa8ULuR1elk3uz0WxGari941sYy7UwIAXkXWCQyLAUpWc8lrFsO+2uYdQQWHVdruwImQ IfvWpY2sfYo5QLa9rGt/dLLvKGWPNlDkog4IPPpeDe4WZlrXYVum4uYlN286ENywh5XQ 3R68M35/RehQlMDClaLUOcN8gWAs4eaCCjTZd7nOdzpTMu3orqra8i5gBOOYZms/XXid JrzWVQFSjGGwo8FoGzQXHsE6xrB7u+Wuo6g9g2y9IDBHsI/yhoCeyl3FrthPYHBk29sf et0w== X-Forwarded-Encrypted: i=1; AJvYcCVhtoeqTRJZ9DiZHvZF12QAFUdR/07ilTzZTSRRwn4xALq1rTDS6WAwkbe8T/DFGi7NDCHIqTxup8/gY0Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yx5TKvGbYm9iXjodCdCqExw5KshjbaoXpwV5z84WGc9oyNwmhGF pwKhI3TlxNoV4nzGveFQ+gxXeNZx6/sSJjbepoufmW8B3SFkHeDbD50766CXRwoxyKw= X-Gm-Gg: AeBDiesMgDj6LtTVHuy79GCbqFn8rKpuBXzr5YqKwK6Ii8GAmk4FW6OLsJYMJ8/kyn5 LH7eEPtLuayLf4IRWbBnAWfaaXYpKRBmddcvqO8BQ7y0bMoxnmIB40HslBI2drAcWvlENJ+GZxs wgJwSOFhXRDmnd+AnouRk5IarHtAb+AUCS5DOMbPoJhpetIVn5MAdYGVLDywZrNW4D14vpp6JbW wqt2uAFTlCCIsCqUph82gK3TZbNBp7U4jAnEJlnIic2JRrDmGVh/x9NSF2y0dcHEjTnNGrkwJTx 0V/JyKVgN8jDmb6IG/Ydq+cJYaGdsdc4/ecw2U9kX8fMEuNqkWGqE3iF0jbioDDQP9Lh0Tdx9mf VoSjxRLy2GSaGreaJ4LlJ9zFrf7Ouj3NrPYCIEY9N3fQcecuzPgAQifsCUYO8O3tZGJwaPhl5y0 abS6ePX/XOnBxwbKj2iRARGRqNvqc9BGNy X-Received: by 2002:a05:600c:638e:b0:487:59c:2bb8 with SMTP id 5b1f17b1804b1-488997dec25mr232506695e9.27.1775570753935; Tue, 07 Apr 2026 07:05:53 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4887e822227sm626876145e9.4.2026.04.07.07.05.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 07:05:53 -0700 (PDT) From: James Clark Date: Tue, 07 Apr 2026 15:05:15 +0100 Subject: [PATCH v2 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: <20260407-james-spe-impdef-decode-v2-1-55d3ef997c48@linaro.org> References: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@linaro.org> In-Reply-To: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@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 , Leo Yan 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. 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 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 Sun Jun 21 04:20:33 2026 Received: from mail-wr1-f46.google.com (mail-wr1-f46.google.com [209.85.221.46]) (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 E7AC23B8949 for ; Tue, 7 Apr 2026 14:05:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570761; cv=none; b=m5g+6mY+I7W6PLG/NpcOPFEWFZ205oQgydTydAb4zROo2aIBC8w4n+KuzrduyAn68HtEmqLh/tp9VxLY6CimvuMSN0Wltv+xCX9HFes+Uf6pa66YBA2X7pXjsgSIARJQhI0JxckPTgL5RxLwyH+CX10M2DRqlyQZ1rIwGVXLruA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570761; c=relaxed/simple; bh=1TtLlyGoEjpcMlM0IIi6mugXWU7ed7R1NsJlS7WhIk4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=K0l64HNfqDYVsg50NEJKDUmxxbrxMBcPF0XTHx3R0t2TdDjj0wTxS/Qpz06+EfzRVMYbcQOuHbH8e5gTNp5MEojyy19DQTTFZYAxd3FhI6ntEQ7I+dfadYGDI/7UI8WuW6sdqjVyoqgGm5Fp+B2oIVmL9xwO8Wj/0kpEiOR/P/0= 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=A2KFQXvJ; arc=none smtp.client-ip=209.85.221.46 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="A2KFQXvJ" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-43cf73bbfbdso3061523f8f.1 for ; Tue, 07 Apr 2026 07:05:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775570755; x=1776175555; 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=QpsJulnDdvHBRscZw94/N6Zs1iwUAKYW6ZQQ9YyXyQU=; b=A2KFQXvJ+/VJNJpeFajXPdXp8dZXQGkBky29JDCWWklSpaHX51w0iR4euI0y+4HaDd 3LdNNfmIZ+peERPTgJ7J0IKyEA3jk9CYD6XBIlshZYcw994vG5pM/cdgoIHfI2sxwx5Y peD5McVpX4Ix0YAzBWAOF7kD4uDl/2rJnadaEtiTFz4/yCr66hpyaXRFl4T/Vo7Jznc0 wH9TJoF0cMehLPOuc/tFj8Cmq4K39PS0pISA6T2R89z3MPTTtti8BrfrEUPPW+bYIz7m uEPHrGv6Nqpi0v6V42Q0Ar1XqD3FQx4iLD6pDn5GkxV3CqhqJ7KnXbiiwgpjc+PnEXyF pe7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775570755; x=1776175555; 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=QpsJulnDdvHBRscZw94/N6Zs1iwUAKYW6ZQQ9YyXyQU=; b=W4XpAQMLoPcYIJds71sdVq/JyX8F6FeC95oURHoYHqDC2vAQqgKihNh93XCbj+bnFn mbmdIuwz6EdXnEPfsJbdySrFdLqDLMS5Soo0ooMKgauakifWXVIcDa8+ojaWfb3tcsSF 5Jn8RzL/eMXk28XSZwyvnRkzwfYORnH8YZMc+kJ5bYq/I58talXIj9Tg0pwEMQI9Y1YC qGpikLDV4wtkziMU1oFU7mC/0dBMYmfmHNkNjQgWTMaRRVY50gQhxIIduY4cLImIjEaP Bi2lGRnfpUDOkDYETk+uFohQfRyQeB2gTWd66iaDEV3Y/RYybUJla67/5tpmUppeNrcm gQbQ== X-Forwarded-Encrypted: i=1; AJvYcCUDxwRGVXI7yVGmF/W++u36CnrVAPYu44Qspt6ENncyeykIQseqLbly5D1eU9F8dbiLFZwCH2LTfa0GMRM=@vger.kernel.org X-Gm-Message-State: AOJu0YxxDhrjCzd1twpa/+ytUez9fbqaeH1EbFNrYFMDC48YJhwozo9n bngivTm0TamMSKCt+FlYJA3+CzqAvytwXNCCHYopX1VHqVSiaqFGZCk3bEgH5CtPXUM= X-Gm-Gg: AeBDieudDsNnihG6KVjbP0WmjjsVzlRXX9ER0d1L1LG8HQKdZbnZOb/iYsEz7RZWrjF egR0OzgLPEtI4fpetwOi/KXhWMumfAIVeiTF0b0v3nFavIvYrrJKpABMI2/NVQRJwR7viZjiBZd BdGdVJfFVsTrU9HZfgf3dx1PamIOjayeXQi+5I8bVMjpTYuat943z3lTZClKpIGtQrTf7YMfZE8 h7ZDPjdZrnbWz7d2csTs4s44m8gZ19waoiEAKMb/Tpjuqk/2Q/+EI3WsyBJacXAPuVmKf2ufNv+ bV4E9sw52l2IT4Mekemmn6k52Gv7ISs55mn1c5AUJk/cLUnLgCfYDugIxmLkeivunmjj89woH5s 336l7eHReDfT52dyL70anAWlUN/fNqSx5Pa1vrgBrT5Lv9Y0YCOmn4hoBiyd7LeRNh0zrzccBBF ZwxDU1Ncbah35Pb/gTJndikmzq88Hi8+z3 X-Received: by 2002:a05:600c:a4a:b0:488:904b:f31 with SMTP id 5b1f17b1804b1-488997a44e2mr248941935e9.22.1775570755200; Tue, 07 Apr 2026 07:05:55 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4887e822227sm626876145e9.4.2026.04.07.07.05.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 07:05:54 -0700 (PDT) From: James Clark Date: Tue, 07 Apr 2026 15:05:16 +0100 Subject: [PATCH v2 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: <20260407-james-spe-impdef-decode-v2-2-55d3ef997c48@linaro.org> References: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@linaro.org> In-Reply-To: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@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 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. Signed-off-by: James Clark Reviewed-by: Leo Yan --- 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 7447b000f9cd..fc11f32e4911 100644 --- a/tools/perf/util/arm-spe.c +++ b/tools/perf/util/arm-spe.c @@ -968,16 +968,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 Sun Jun 21 04:20:33 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 4FBE23B8D75 for ; Tue, 7 Apr 2026 14:05:58 +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=1775570759; cv=none; b=OWe8nFwcZwmgO/OFhWCeKwlC6xpSMKEkIsHEHWXG8jhxs7a9HLCPs49WJIGlzNbQs59x+jNlf6BNjqIY9WCA3MvPO+5eOSoVDSOO/+m68FrW9kBh8AuSmXfaCRjHUmJUr1T14x189DcXIjx60gTh7pktZhcBnH45qySzxfZLF80= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570759; c=relaxed/simple; bh=u1zqiIUwypVOUe3QPjcGXXBzhP8Aust4a3M6Cuz9R2Y=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MIKNKmsIm8Qi+6b++jUqIzE7Oi/RWuHt438dYQHn1bpUXdth1tibmrjAnz2SxiMx1T1NFHUgH7OPDo52ERtjW7ODo6QAuoFzfPbkh0z2930BQMhDnpGjaH/9p2pwv24qQazP2BBT2TUVd/J+mv6RwN0QZ5nxu5Rqk1xvUyiLQGg= 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=KG7D+Z6g; 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="KG7D+Z6g" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-488afb0427eso23975895e9.1 for ; Tue, 07 Apr 2026 07:05:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775570757; x=1776175557; 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=U9LL9PwPypWvbniXtyE+RR5RtoAnIbsZcQ38eiczBSY=; b=KG7D+Z6gLM+vnjLlhXkhcwACH76UJo/dgVBQvYlzQpK0CjVtv2N6n0G9n3OpFBIfNk txIFA9TvZljsxA165GX3rDcrT0AJmD1McMkQALZrkf4hZUkmaf1MMdjLsngYdUOfrxrM IDtKUcX0ztpDpKQkadAcJyUBzY5xPfGgLL3MLln6bjFIuZ5Quq58eh/S2ERWVVXXsvGK j1YzpJxl6XpJktqro67NryzotOij4f1+VQDu8kbZ2BH4q/MaZgD5HkTf8ZaSRnzf7BjK 1rO9pW2l53jAvFhXmWoe3A6173yEtuXDXOxyRW3ekTKyjK/+1jonp+u2pjQd4OncQcn2 KBBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775570757; x=1776175557; 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=U9LL9PwPypWvbniXtyE+RR5RtoAnIbsZcQ38eiczBSY=; b=RwqI+U0IeqwydWB11KRNzojUF4nxB881WNmKn+m/jYwxHrG+WwPwpOkzpXFSL6gQ12 NeRSYUoOnMXWGLMupjA1BezaV67wxtsigjwr6iXQd6LNsVze1BdVDlfIiP5TY+Pz1tei cMDvQr+j0mVqB7bGjlb3EaWZ8CY8k83n8zrV9Gg6JR98/H/+NagC77KXQ/zWT3YlJiS0 0emb4xWknebQjt/yWAyq56PbmVDq8I3Q1BTdwv0yfXZ6WLSQpGtPcWILxn/H0pxGqc7t 1BkE/fEQvf+Ic09Do2+odXygq9NG7JcTYo9gWMQ8+aFIlAnFmAITgrCI7ufB6cU18GfQ k1QA== X-Forwarded-Encrypted: i=1; AJvYcCUir3sEXfWNHYTKHsH69BrCt2rwc6rmYP+cJ8KFcnehQ19XOjVZ+IT4+Fjrwb3HAN75Q8voeAyRA+3KIN0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9NpWMRPdJs3bVvXeiIHGhukXknbemOkWytiqCP4zcUOyzHshS gnXV6zRI6mI/zq0nzICrbFMyQdBjYqeKRp1WEId73y378xnLSXxp5uDHO0H+Kv26EHM= X-Gm-Gg: AeBDievD28gjKMYi4kEljGELqScjoTJtPgsO8Ju8+GddNzFjNuTAYJOxmXpMVp2MajY x3hmLLRx55i2IONcdh9J1m4Z34JwXD9rPvwomc4GNI65vaaok3SzZtjmF03vq+zaN09XdRQggZL 0R8DA5fU2sH41Q0QfqjxKW3vs74gPvMG162r3lFHEB2caSwmAmkl5QQhPYd7ifZ/mm6oW56Jn4s aPlGUgf6G0+R1vTIjh5Z6VCgXxFXzSvkNMCRwVqzCPSqNs9XxV76vUaXlArZf2b75K+OlkD5ygl 9GVcxYoFkcSyqDJvRDIwabGZzpeZbHwQqQxyLPWsEsL5Vz9nf14czz16SXnS42q4DQ8+sOBujvr iyC/GZbtpdxVc1RnjkGyGbGIAtEc1hA1fYM2tmVKiVTR/JI1+23+RCMbC5LfoQZ+/IYxF3I2AfO n6PwsCHQx/rsCVpA46zL3uIySjQj0IjGS0 X-Received: by 2002:a05:600c:64c7:b0:488:a8f0:35bd with SMTP id 5b1f17b1804b1-488a8f037c4mr188433225e9.8.1775570756530; Tue, 07 Apr 2026 07:05:56 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4887e822227sm626876145e9.4.2026.04.07.07.05.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 07:05:56 -0700 (PDT) From: James Clark Date: Tue, 07 Apr 2026 15:05:17 +0100 Subject: [PATCH v2 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: <20260407-james-spe-impdef-decode-v2-3-55d3ef997c48@linaro.org> References: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@linaro.org> In-Reply-To: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@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 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. Signed-off-by: James Clark Reviewed-by: Leo Yan --- 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 9e02b2bdd117..7a3a4815fd37 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 3310e05122f0..0cbcb501edc9 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 5769ba2f4140..718022aecec3 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 adf4cde320aa..a457821f3bcc 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 fc11f32e4911..7fb33fe27693 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 @@ -1234,6 +1239,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; @@ -1476,8 +1482,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 Sun Jun 21 04:20:33 2026 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 2541D3BA221 for ; Tue, 7 Apr 2026 14:06:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570761; cv=none; b=T9QT70AneQ4Mg00bhjIDxs397rAUn2J0gdXlaDzXpiKChNPzQ30jgY8fCXbe5E35pT2deSTakwRk4bM7PASU6oM+QvyVqCZrMoBaCQWnJ26HmJCev/t1hFbE/c1rm+ChocdMmo1+EfLtoBMxouh0gQ1I4eNyFs1yeFvnQ0uy37Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570761; c=relaxed/simple; bh=saJ9/B0yxMVCJ3Hqjc5BIWZkV3tpmYeyWUx6kRa8APo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RJE0Twr+m1ii5kBlTJNzggj9dZxD7JVcjbuAkzoYJ4SzkhiV6JA3Mx+Q3/UqqmV4B3RiY2VKaPz1rVec6JrWf8AQ7ssYfdGLJpYD7ghqhsm7g3fsjzGejrIbM8vCiaVNI0f7YivU535yLvVyHubF1gkSfuvtcELn8iIyl9oLkBo= 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=mksXcwme; arc=none smtp.client-ip=209.85.128.47 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="mksXcwme" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-488971db0fdso39370955e9.0 for ; Tue, 07 Apr 2026 07:05:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775570758; x=1776175558; 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=7a5dHlK5ecPt6xckcJpPIY0VEGI+9frdQ7qhWf9R0sQ=; b=mksXcwmeqZgFvpFqY/i2mfgLn8xeO8ogafEqM14pW7xRMLhHjlvt5s4r4N7D/KoRC4 MiIaWuxdjt1kjCGiE4lcrn5hKu7iLtsWV9+D2YhHX4UqjS49Hx0PApCrGELONiig/s++ MaZprhTCy/uqVHuagvDyXg86qPkqrn+9GF9ob4vd8655qQ27MBMsrHp6EgoNpUO8w4tB 99K+OFs5ekuogG05WSXk2rZb4srp1b9jnh8brl4XoUI2Rb3//r9Skn6+ChPTO78wkQiw RKN7vOkRB/34hBF0JkpiS7eWgCeBpzPfMV3N2mA1sWYyOc8lMr2SOh8FEV6ydtffCPMS +Czg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775570758; x=1776175558; 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=7a5dHlK5ecPt6xckcJpPIY0VEGI+9frdQ7qhWf9R0sQ=; b=FiB63CGsVGJKVDyJWB8q6pO0N2vGS+y/aB8YxJOkmUMIsQSNox6BrgIw04dXXkHg2A lsZp5hf8bVLC4hwasrRX7y4Msr/fMXgKiO/gKLjFvA3un7uSLe521MzCD8WsQw7WgbRD dY7FK++IpSt6QgCQIEURkJAcNVoopgu+MABLa5dfa0RfzfY208NXDjTf8Q84Sz0ukCat 1LYv7BmN4vMxR/fNLz6qJqvdp9S3NLOfVGXary52tM5I6l86oCZdHJAURWyiMsnfp2lk cQgPZinS3Qr8/cgQIS6aQebTPmzxwQ2CkrzqMqMoX0jb/X3nQeRv2IpZXQLH0bVrlW4o cwbg== X-Forwarded-Encrypted: i=1; AJvYcCV+amHEKrckpzjzlPfuX7rPG8Fs6xGXsWezmIDe8I3aKa4sZ4Naa2ms9yfAsw4pxJZjMbunrCDpjuLjkdE=@vger.kernel.org X-Gm-Message-State: AOJu0YycaAXYuV71OjMdQ/eHcCkpuPaHXye/wcsA4FAVTlixAGmS3YEy TpYw75j4eMgjrFYfOzujT0IRT7W9U6STBExPurGFgvChb3QF6b9HSOHYOJ0qPq1guwY= X-Gm-Gg: AeBDiesBeeH3wwYfnD1hhUJtp1y+Pf0EZUMYbXNvPxvTCEAlFkHEh8LYBprdrZ9X9Z+ ltrW3/SqyybgFlYnvMU10ovuJjdXQKqNr8w7pa6qKxU1cLCLtsZ8dweXVQKjDwo9+6oUOdZg1FU Yn/TzRwLUqLMAfSkqY3jDNgSP00dv3dWwU+2zy9rsYYwVPejWEAp+uHQ9RMlSclsWiEd/2OWBql vB1VVOGIPRr6NJQYKo5ialr/OCDso5r0Yt4F05tQTwFsn8d54ShDfQiJNzdo67Ac+33VahnJ2/C v0Pi5Eyz2e2TNd3p4RTL2Zo4sS0Nf7f0pfA7qbN3+ROhQxMR8dRS7iUiEx2PdsyGNsM/3D2Paz7 F/YnQ8EYv/gvb62C8hBR0pSeARJykAXwl3ZH8WTEejjohTvF+V29mh9kyllnpN7YHecSgEpTz/4 YRC2tqeXhgBfS1aPp63NItksl42ONSHlcQFTPuULVQ5dY= X-Received: by 2002:a05:600c:1990:b0:488:a82f:bbb6 with SMTP id 5b1f17b1804b1-488a82fbdeemr154986695e9.27.1775570758405; Tue, 07 Apr 2026 07:05:58 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4887e822227sm626876145e9.4.2026.04.07.07.05.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 07:05:58 -0700 (PDT) From: James Clark Date: Tue, 07 Apr 2026 15:05:18 +0100 Subject: [PATCH v2 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: <20260407-james-spe-impdef-decode-v2-4-55d3ef997c48@linaro.org> References: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@linaro.org> In-Reply-To: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@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 , Leo Yan 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. 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 718022aecec3..67ca356100e5 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 Sun Jun 21 04:20:33 2026 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 63EE93B4E84 for ; Tue, 7 Apr 2026 14:06:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570763; cv=none; b=fRMeWDJJKSP7qTnWHsw3fngjBPy3S3waeRNa8J3SjMY4u8/gJ/velfHOZQWNCXPh/4zflfgVvBrAG7HL3FDQgyJnxTTroEPrGTKfmNbonYpXXvksVkrvLTG7NV+zwLrWUSCu4hwshwsuewLknLmYqwFdCisGoIBUflZgHlY8asA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570763; c=relaxed/simple; bh=SfHRtjxTdWpox2uy5+oIJcperwjPdyLz6dz50gZO0vA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l1YI/W5H8Wgi6e1rpWt7IqYARhomPtPTlOf+5EqQ422FzMeFyXJ0dPcCDN9ZTtiwPe/4cjUVJIPPJO0+f8T/DwT02xBS6eFNsD4uiJreTTMKQRibanSWoI9jG/ZpKKpo9svqnUSz8a/3XNDvf1rfb+8AQnlrdihTf1uxZIx4Evs= 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=hwMI3V3y; arc=none smtp.client-ip=209.85.128.42 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="hwMI3V3y" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-488b0e1b870so33742015e9.2 for ; Tue, 07 Apr 2026 07:06:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775570760; x=1776175560; 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=eLZ04h5XV7RbRTSYEuzKScz0bb5tSDren7EYv5i83Is=; b=hwMI3V3ygmsntkx/I7pE+ga9V5Xjt8lp5A0b4JQ4pQtxjF+/wdgk5yhcLoR6oZGkOR iZ81cJHHa4qIav7wbbhtnlrSAvBXr5HqxIkLko3CCgfbn9Erz8SdrNv8mmoj4/goYNSR 2CqsfJaeaT7bBCDRrUykbQ2c5N+TGD0QnFs0fczU2AtBuDB2S7As9u7oNGk8v+l+LQSI 2SJHscHgvDSMceNXUe4BD+as7GskFAucqQu/G3PHl9z/MKuQrpDTymav6lYH1c/3EsuT ZzOnZ4qLXD16uZOGVvKYtr+5jXLwSbrjR2MCy8SFtx5ROxQ5xDxYbolC/oCTmZP4Caeh 5oSA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775570760; x=1776175560; 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=eLZ04h5XV7RbRTSYEuzKScz0bb5tSDren7EYv5i83Is=; b=BASEjcme5xQ8syrcTofDpMXoJwcDuvv1lM5KH/Y5EAtLkgRJptwd3FC4UXb5OinO2W TWazE/PZLmOz7RNoGqon7OqunLnhOFj8qmb0ul6YkpvjiSjuDCoJufrXMBC+3hAEacUO 0TlbqOzU24jrQ9Pfw3oTY5OO0OmzYUp0e+sjOjhT44U3E6ICDkNMmwSnI/gU3PPRw3hw 0DvwwkTydwWvn0PYPu43aq4DhWUAHWHRgao1KO7KL6vdmG2ezpSdpgDEGFWmzqsBw9Do 2DjzNgzevHhh9Uco+qhfYzPpnjtVWWUzcHEg5uUbdnytwRv5TZD9LezPNx1ffFUuxWd7 VrzQ== X-Forwarded-Encrypted: i=1; AJvYcCWrRqd8PfKuFWbxdkoC+F776CNihpczjW3KCZ2+k4hCqAYtV0b9NPMYzndjCst3+6qCxrd+ZCSKZnCzu7A=@vger.kernel.org X-Gm-Message-State: AOJu0YxF8TIpvirr9GOfAPIsCmTQjzONq+KG8lRozT/NYwKQGsQoyWlM U679ixIT2Z70+i/YXxiUOuIX+B5coja9TqUXrkSoNs9e1y0mSl1IIgQZE7IMJQSSydE= X-Gm-Gg: AeBDievcys2p9pUvOnbZrJn0BbdJPm+d/dFBf1Rn91EFSlWKoTu1JfsuFX7fo1z5IzC wvBD4TmCxDqNTW2EsMwM/WJDbS8bL7jQN9b4Nwve54Gch5VoGl7Vg1u3rTpNvQnhS1bKALk90tA qvQPGPWwAtJsFhTckQjP7ab7xibQ55LBkSHzSazjTspFqS45bGlIUFPF8novyb15VdtcLFNoc0+ 3XP9wNTWHaLz+i3GOOlmcWhw278v9bhZ2IU3pa3RIgwoVjZhYatZ2IaLQeno2+xOhbXZVSW7oKb leCiqLrKikIX1uLlO3MzLsFNqMPhIQL++mStoFgS2dltn7+gxgU+wW9ssnk7QW0LK1VvefBuXeU Edsr3IFMS/3WC5HPZtLQ0ux/7/257uy5etmp07bOsYT1UTu59MLc1gNhvRz8SrPftpyZhXz4Haj BklRpI3lgc7guh4TdgEPbI9keyJowcgiudslgKvH/cviQ= X-Received: by 2002:a05:600c:181b:b0:488:a882:c7 with SMTP id 5b1f17b1804b1-488a8820213mr94479095e9.25.1775570759631; Tue, 07 Apr 2026 07:05:59 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4887e822227sm626876145e9.4.2026.04.07.07.05.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 07:05:59 -0700 (PDT) From: James Clark Date: Tue, 07 Apr 2026 15:05:19 +0100 Subject: [PATCH v2 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: <20260407-james-spe-impdef-decode-v2-5-55d3ef997c48@linaro.org> References: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@linaro.org> In-Reply-To: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@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 Reviewed-by: Leo Yan --- 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 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 67ca356100e5..b74f887a48f2 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 a457821f3bcc..a3300bec4990 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 Sun Jun 21 04:20:33 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 7A5E93BAD9C for ; Tue, 7 Apr 2026 14:06:02 +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=1775570764; cv=none; b=ZNmPAnHzcCFP93nAop5tJYIdsD4dNrnaj5Ilpx/ryepNW3vDfy4Z5Bz1cqNjkCB0XnY8j0aphvjRUOS4sJTAls/Bfy+g1EvGSqaAZuQULM42vQYMznbDXAs633uHrLkxcn0OXo/bNG7zanP3eic7gBTlfAEQnA5fFynN0KI2mmg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775570764; c=relaxed/simple; bh=isldx1JrIRTNGR69+4X19ew2mTc/25vMDf+Cpuh9U4g=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E7iFIaNWECFOHVCW0fbpjySJodQuYmuR9QEqA43smsclq6DlZk9GZOB4XplpUcjrcydSbrkwzrDzoREIPdgCsP9Ec46HulT8vdoilZP2HqL0pEK9/aczHO3xJYwUXo+2a5Sp6+QQRUOVdr/JDkpmyzWPgKnvgMjwzqqsjOvEdfk= 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=P+FKOI06; 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="P+FKOI06" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-48896199cbaso45373685e9.1 for ; Tue, 07 Apr 2026 07:06:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775570761; x=1776175561; 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=bUsEosGHbHSKoT3nv7zDi6wwgNQYAMlH9EtHkBeF/j8=; b=P+FKOI06GQrs+N7HykssbnH7/TC0pyPJ66PoMBAhOleQzhSwjSPmoBWn6OWUrE7Cxl /W/VtSMP9Bj1kU2qG8gbGzAGywfdMFWC8l8LEBzjHJD3RvZfwo3JEhOs7l3B79UeudQY DhJ5c0JSobsZwLiMRX4GSBrh2c0mehWPlA5+Qj02htKVBAOHqPOSl0Si4yKVPPSLRaUM 1ocf1Wvt8TYqrhCgUA6NszJqfMFgjHcJg7GlecqrzXDDHU/uoQYOP7xdFxeQf17+BwM3 S+bwmyAex7qGVvnp9r2SPhOG1viClfS1K++IKsJVG2j44ETEf0zrg6dTc91cJNcKL35T WaZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775570761; x=1776175561; 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=bUsEosGHbHSKoT3nv7zDi6wwgNQYAMlH9EtHkBeF/j8=; b=LFJHfsrChZBQGtApH/Ftpmx6OFVZNG9QiNMorXnFtun38JhvQxouZk1j5Tpqb+D7Mb YluMuv3mASwX5TQRMslHBHI5+IglM1DMwPVDzLwFCtYKpU4WYWKXqWproyVB2rkaDVej YQ+s13EEu8QWm3Sm9meFHzdQ3PKzLeZhSLw0lkZleY8r1S9oW/jOYdYr1hLJAV9vBySD Cr3czl0Qdk6cgzG1HUnLQ+litOT9MBA3aub7g9bUSO42r4dOWlU1naJ4/8Tl16ZPkvLq yu6SlJ6NODQsfU0IM+qcOKd29uzHQ92EyC9ORblerqtou51T7z/EHQzltSZnpb0yFuGj /FGA== X-Forwarded-Encrypted: i=1; AJvYcCWE8beFaK2OQbi7unG7MR+XxpJ5UgddmJNOsxH5UINY+t+PbA1fXA9dm7u+Aavo6xdmOCY7wg9yWOprVbE=@vger.kernel.org X-Gm-Message-State: AOJu0YwWBgtTeS5We2sGCMGyogFYqr0DiV/Qx+FJEyqfqx9cZlY19Ne3 8YoOdawvXTDM0tHvl6hX/rZF2M796VZjLlJHtUSUfn7bygERWP29OPcvQqwNWF65wRM= X-Gm-Gg: AeBDievHPOaPzPMPz8iTklNYjCgHqwVCXuAtsG6dTjdW21csW+jax4WI6CHUR8VPmHF tpNc454+dyY45bgLd9GwbdtEqpu4ZjWitBZiRFryoxbvbEvx9MiDN0mZIPFt6Q7RG7E/oPgs2Yp EVaWErY6BlhTl2RnI5pj3xLpD4OINs3pbIaHhEmvKAJITDtXbudIVznoLkq9CejXhkFKwDy9em+ VoQ6PxqLD4y4NZfTO9Ip4tqPak2kRdIipxWzXZeGugBIihx+3yqSIfZbCsDBQrhL4/QjEzWnLwu bG6+FyH0rreDeAOop5x3QlMLMjQRdAmcUBbNtotkwnsz1Yh9dvOGFof/dqWfyyJfQxOoveJEIVc cd7/YOC+jb5T0UlPeAhqZVNZGbghM1Wo24qRzJjsPuaOVFqSJhhxcE+d4K7BRhIneyOawxjAxuB yEo3HOd7UWVrSwIay7J+8bnUgJ6dap/MOF5Zd/Sz1SYfA= X-Received: by 2002:a05:600c:5292:b0:488:966f:70a7 with SMTP id 5b1f17b1804b1-488996b02f2mr260622725e9.2.1775570760907; Tue, 07 Apr 2026 07:06:00 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4887e822227sm626876145e9.4.2026.04.07.07.05.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2026 07:06:00 -0700 (PDT) From: James Clark Date: Tue, 07 Apr 2026 15:05:20 +0100 Subject: [PATCH v2 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: <20260407-james-spe-impdef-decode-v2-6-55d3ef997c48@linaro.org> References: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@linaro.org> In-Reply-To: <20260407-james-spe-impdef-decode-v2-0-55d3ef997c48@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 Reviewed-by: Leo Yan --- 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 b74f887a48f2..c65b22a2179c 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) { + int i; + + arm_spe_pkt_out_string(&err, &buf, &buf_len, " IMPDEF:"); + for_each_set_bit(i, &payload, 64) { + const char *sep =3D payload & (payload - 1) ? "," : ""; + + 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