From nobody Sun Jun 14 06:55:11 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 666143E6389 for ; Tue, 14 Apr 2026 12:48:15 +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=1776170897; cv=none; b=aQ4NFp9PD824wj66o2w42VVT/v0EKgKvdAJ7z+sMAV9mRQ1Qsb24upQACuTGuqEb+XX9EB68tYw8X9s0Dd1Yxejl1yFKGk6atAymRHFKYk11b6EXVnJb/wq+kXDklHDtJL64H3Zic90NyDbcksDLV4rxqGrwPAT1sgZCz+eUwfQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170897; c=relaxed/simple; bh=B4MOcb4BErEsKUcIM7RRmNpCR6Vyqi8cYdqj84QRn4U=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=XUym/3zl/1m8yAsNNadCaNtxhw4yl3Gy+NcEtncCPaguTUKKGAwDijQnPnNB8Yurp3KCiy1hyt1XdLAUGmGbu5KW6oyYmV9mZn1YP7xjZsN62oErKPrA+Z0ySSxH076Gr0Vg5JE/u/38DBIow3l6mCSfQquSzXDKByYhuyWg8EY= 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=jZeWOTro; 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="jZeWOTro" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-488a4bc360bso30678135e9.0 for ; Tue, 14 Apr 2026 05:48:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776170894; x=1776775694; 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=jZeWOTroFtLLV9F8C9Vw2d+u85VQxcUKNza/mJdvKe4sZyWkZMvoaUOM6EvuiB0lY1 9lXu0ZNQPUR2VEuFVbdGZfTB7FEkqA7xSzxdCUBT5Mao9gZgUCnO4bCN5Esuk5op79qB p6eTcU+RpqKTYdzmz06VJOffbK7O62IkPrRp1hkYwS6jIXSSGnd58ZykPyB11DKoxzdx LeOig1VH/AtYjqufYM9k/nR2TNdlu+99lTv5oh8+iMR5AIyk1fuKmEfKYqmHQD4FhQbq 7JAH9K3dYhkupXsaBfw/icTcyo9hiDNU6mxv2iWUzGY/jtl4r3xetOjI7orkDDR9uQwc SQ1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776170894; x=1776775694; 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=c0eYa5sOnbUYow61WkG2sSPvNej2lM0ucFxRSNBWsKIRGQ1OP2wSWR9ZiK8Wpda6Sh 5BcprE4Cd+CbgdplIxqFyXO6iUZGTw5SVgvzL5Va7wk2xt1QWT4CQ4H/SKGLhqnSMDJ5 pv8ddsbWXphMvgC3wi8/PWhxrQEOo96K7GxzBT70bGdWf42xAwfkUWz75a55uQJ8u0/I VHTuLJXcsURaaHRxu5Ias0UVVYzGcaGV+1K/Hz463w+8b+97irWRsjnkLMhlLv8XNGyX cW++QGWuHnBZybW/zcgBmx5J84a+bMu1QvcC4yXUB9TB3dUXBh8uURWyF7zhdcyO+meS PQcQ== X-Forwarded-Encrypted: i=1; AFNElJ9FLbQtd+XhOVgP+NdogQA8fD0vfRsd5JJcYeidaNumSUflIvsj0a1ysb2s+tNk1W+P0qoga31+/w34AbI=@vger.kernel.org X-Gm-Message-State: AOJu0YwfdMxC8hpJHwP8jID/LA16tns+qSYQr5nzsUl+yqA+xoS7rsEw 3R5UDVSB5FRajLgRd4M7mYNC30TyH6qaIQkrbcRZAR72meySGv4+5MiynKK0vP9crL0= X-Gm-Gg: AeBDievHIsJit/okRJuAi8E6v5tbzARsNaOaClsqDKONc1qcF79OVSHohV/S8O/D9lv aNF9X+cGbZ3yJ0rnItPz6rahtVnoympOCCNTDjOKWCbNQS/5i0eeUf5ScMSOaQHX1T486ysv5iS +TPgvhiG325+Is+GTQ3qaqaKFA5AI2ELfX2W2LTJL0X2eSwp9EnDbNkk3cvWLKxJLJW06hkIKBe 0/JPo7IskHhZSXBWzOIdDS10sQ/zLqTt6c3wxtYMM55ndbcQcmlQBRQM3PS6i1Ay1OGexmOdKCN AuyR/lvU26e92qHIumOBR56sKj7kpaLPHcf04cBay6aMmUBJm46+NGh2pKi9uqr9uaojr+6CB+f FnGv5ugBbEw4/N4OZKOiZZPnujKPM45klRhHnrPAXfE73+OtD713fAvGYCnvmryCpynpKmoE/Ge qaurrEc2wWmp2VO0ZPHl96Chp79vFmWL832V+7PMKcJQ== X-Received: by 2002:a05:600c:c10d:b0:485:3ec6:e634 with SMTP id 5b1f17b1804b1-488d683982dmr166085705e9.15.1776170893726; Tue, 14 Apr 2026 05:48:13 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488ede1e05bsm81185285e9.6.2026.04.14.05.48.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 05:48:13 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 13:47:59 +0100 Subject: [PATCH v4 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-v4-1-1dd30783a33b@linaro.org> References: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@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 Sun Jun 14 06:55:11 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 08B1F21D590 for ; Tue, 14 Apr 2026 12:48:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170899; cv=none; b=bNohsLvuNIQ4YUeoMJmAD5g1hQj3GoIweaCZwUsBPqM1wFN4nPF8sLrfvQnU1YmG/EOvqrL68gBptRuMhhbb7UCCjMgiNJ4Ojdr/aKli/IlnFjyQRmnjO5vf2GzFDbENU3enPYDNWmWcmPOE6SeiULmF1io4PsiuGaDKkSCshYA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170899; c=relaxed/simple; bh=farxSNQwiB9LUcKDN/v7yz6rJcSDtgflT0mq1LBa0SM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jQ6s6bODqwEnGy8OMPDYiGfhh/2XO20L6X524C9925twPJheTdvPN5+P0MyiD/VI/4pP+WAdpdCR5nqStrCGIeTtBVqHLVD17dZ5Bhnpjd6T/v1181/FcPWrDV8t5a2KhIZpjtmGjBWmQVafjce7IDOfcIfVYDzBEnB5S+rMyNk= 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=EczixZ0p; arc=none smtp.client-ip=209.85.128.44 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="EczixZ0p" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-488a14c31eeso45719045e9.0 for ; Tue, 14 Apr 2026 05:48:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776170895; x=1776775695; 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=Eg1AN3CPIjuOdDVSv7pgWZI8ZtX7HtgIH7qnU4E7Mis=; b=EczixZ0plC/oJZFRFPQkojxb9JE9bPG19rzTchMjVVXkOG6ucT0XgvGRnKoAAYxvi/ QeBq+TNm8o8zQRsX8y7vUbv84Xw77sYyiiLyrNfoU/9wHFlQrOCLjfW9zEjokmXafjXT 3VT2Bx1sOE6yovDfhXD+T54rVEXZ90jYSBNgiKOkIsn2+DnpO2Hisld13GwKi80v+aSS AP76zE1zIqYWW7yxVe7soZ9d/7HeL6L09EEbUUTTj1O1pXUoc2RiQZcFyzSH1pq1Jsrn U/5mjfO1s0ZoyJ7o2sI8QuKK06gjys5rCszUI7Ia9qEdhct9bAZ0T/hTRBJ5S3JmL/+6 3jnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776170895; x=1776775695; 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=Eg1AN3CPIjuOdDVSv7pgWZI8ZtX7HtgIH7qnU4E7Mis=; b=jCt4My97Av1KEs5/Ijtovtb3WioTGoOZb52P2W7aEkKdc23wagYSsdI4dK1HIIIcuX nRCafCWR7qooPiNHTSRLZqrfSjU1ndAA8NMuzxYZLgZdFmJZjomhoQYRaqs5EcWBZ6RX P7VRlFbh49N6TBjy7BYtJjm67LE4VDHG6b6fkQGU47bA9u4h4L4/N9ZCGgo13djdjqfX 5+UkobDqQNE9nA2IwoF44Bs/st9W+AR6GDRmXRY89pyPJYZLYtiLbzIpvOIzXVZunQxB UEeB3XBNJk1akOE2b4pwlaUc8f5E02ipzQ2FhdDLGmD44PXxRy8ZN1mTW2N0jcXv0TUO u9vw== X-Forwarded-Encrypted: i=1; AFNElJ/qPrGWqGhRkjBu1FXh4ZAoK742o60vnBO8/Sr49S8cKEdDYnjq8wYFpdQT6IcDiNMUyW9I0wnq3IQOvgE=@vger.kernel.org X-Gm-Message-State: AOJu0YyOzmQS5tHDBabWfy3jdfJh5VGZixMNzG7P1U1viz+enOnnkDhh YHZ6n5/xx2aiRrYgElFQW3Gg5o7dyE4sVyQWirgfWDqZ2dTaEQ/vT816kj8EQlDMgpA= X-Gm-Gg: AeBDies6E53PVzG/jnSwFRkgcThI2/6jMhSoPfrgzqmyyM104yVFJZtjLBK3CYdwhBg vO6XQVuszz+BfpJwP4M1+sXQRRspCyTx0ODQM9YD9W7/dTADPVTFB8u1tldO6qRgo1D0ilLnAqd UNwO2khosIJNXyGCD0psOT5s4QOdap4e4eg3RQXtH5K+yhYDMM+FpIkNx3EVCjG7/FXejgitAgr IzdJUTtV+YwDAMWe5tNzbsxZg71VshHlJHuODB2RyFbkJ+I2z5TNLzBIuvyal0D03wwT16rKYp8 3fj3qRTHKVjhfaCk5JhH7z/KsM7Z+krMIvndcctPqHi1tHT1q6nTr7nrTCrB8KxrNDypzL/vIGG oUOWdfCU5/hvY3dFl7xoECuu0s0zvhncLivT9rvv11zLBKTgg+y1c45jOQnYz8yFKFOQqTtaOuD o3AC7bMkcEF1XdriZ4G4FMJHU4oukDf8QTDhH8VpR8TTaZhV+ts0Xb X-Received: by 2002:a05:600c:64cf:b0:485:b6dd:5066 with SMTP id 5b1f17b1804b1-488d67ce664mr229692535e9.7.1776170895003; Tue, 14 Apr 2026 05:48:15 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488ede1e05bsm81185285e9.6.2026.04.14.05.48.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 05:48:14 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 13:48:00 +0100 Subject: [PATCH v4 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-v4-2-1dd30783a33b@linaro.org> References: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@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..037c7aa150c1efeda6e8e956a5b= 1db733e6ea74a 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_warning_once("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 14 06:55:11 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 3D6323E63BF for ; Tue, 14 Apr 2026 12:48:18 +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=1776170900; cv=none; b=BAp/Dzq5j0SOybY+uMZ0+b+mRsz4kDH9s55WpKv5anpa7VIG8zyiJNx7XGYTVQk6XcnC6QMZT4uXLka1k46LLJkswJOcLh6GRJPq+jymo6LyGVNrsM+oJIP60tajLOLuL4oDGw+q2pSynDxDV0KNLBL5n79mHA33Kc801dMHPBU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170900; c=relaxed/simple; bh=nGmx1YuAvFIQdUkuZHjjlOY0td5Cc8BcRfM1Hn6H9hs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=G0XzfV+1raGKyIZxVzfpUlI4NkwTvygkBAvCOLPEUGIeDcrBnorky9aDpjuvg74UIwZEI0bRx4L3roHU0ZD3w7DzvLgPqUzicuqAfQsQY0cdamBI2vcKgr7ArCWu+Eh5KfZeU1QlPCCIT95XEoz5Louc/0EiqpQ4LHWrSJTc25g= 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=ZtMgvp4O; 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="ZtMgvp4O" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-488a88aeec9so74471185e9.2 for ; Tue, 14 Apr 2026 05:48:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776170896; x=1776775696; 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=A+Xe3V/IHAK7tYUKXkEGJ5jpMYrvIkuA0BtXyooehrM=; b=ZtMgvp4OYI0fYdbsg1/ZObfPcb2kpEdZ/DnatnyRLEQLCueC7UOv4+StL4wg3JBHd5 KA0FJjH4o/5UsRIbIm0kKeTWf2ZJFQ1zn6b9t1OzeuoaE23ayyTcPPOcO3O2TlOuekE+ ffqRuZ+ApNDS1ubA2F2k0EddijxsBZJhAoPI/jEqixPce92Ynek+rb6bm809/uXxZoYJ UmOHff4xrEbgWnQb4ghhNKcvv2+NdkQxgaVUCUzybWnRaUuKK/TJkvTHgFbjKOcsR8az V6zBHT31McSBqz4RMJ76Cyhk7j4GVJakcEmqJj5N5QW0ftVojYMKwsSHr34X7U6PiH6T FzAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776170896; x=1776775696; 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=A+Xe3V/IHAK7tYUKXkEGJ5jpMYrvIkuA0BtXyooehrM=; b=J8bbDY5F2S7Wub/6lopiA91vIg4HLc5eGrk850fAtbFJStmgtHVDlkpp49kp9j5X9d P/6hQuEh0yWzg4mSFuea9OM29Z/QyFjMdr6lDk92s4G2rkGuLfa9xfv0pXEU/PMBToRP 9BSnq5Jm5HG/IBgm6DKQ/nziG4PMhMp2PHAi0Mnjggdf8VlBCv2cuHimtvnGIqOEoxGr Dy14EA8XHHPZusGKrUbu6EfD/0JveemjpcHq3Uvh15FbLXPnsQP8rTOtW0IV1OKxX32T lJ+b1sxcMpsI2o5COVYzTeMY2H+asaF+5SAzUHZIYLrdtgz5IsD3zOmiW/7X0xwnrl6a xvBg== X-Forwarded-Encrypted: i=1; AFNElJ+Q5Yr13GjCCKTO0IHRxNPEz+K2BnK+oPgFWP3gupyxSxZn950YsEE8M2jxSP6U+5Y0BLJizZ+EmIC89So=@vger.kernel.org X-Gm-Message-State: AOJu0YxyAR9NakkZfWdSqp3E+M0akPwQsCkFNvQF8xqvgkiUpW0N+Sop 9B5aha+KXRB+24Wc/xjo5imd9Ssx3lHlOCJkKM1/UpMVqOVjJVjmqOagDEm83kwLP1U= X-Gm-Gg: AeBDies+Zb/bu0MY1i9U9/DUW6cDvKOcCgxhQI0KAOyiz1k/pWRhSBzs8IhHk2z6pQR J34t07bEkDGJLUwQqjAfraWBdD1YiUnUbrxEyE0ocICqshouWHees9cuyHRZbu+T/kiknhz6HPD xoul20DSZAhh3W9y8IPQiMsSAtHcGK3d4oDiUYtHo8Jn+y655q+SWiwNprI+JPkF4qDTuyZLxnP WJZjzQ4oJNF2RfqR4NFSXAnebbOaVkCssNG5IZxcIdOTWZr9dcMuFlGPyHLepCuuIngsj0fZNQY nhaPdCFsItyDooTnCemwfon8PHimp3rvKtx8rYVI4KhFBHjl4n5+QNpjNtsTzExLu2Yrlv0x4Ym GN5CCMKZCRp34jxh/M0CRIIvNToSWAvYDy8SiblchQBu8+NR1P3mUrDcxI8DX9bjaTudEz/bt1D 2SwsWpFvEWE7nJx3/NvfHzjdDfx9zryGP62u7dNCrpwxfdwVNfhCC4 X-Received: by 2002:a05:600c:19c8:b0:483:709e:f238 with SMTP id 5b1f17b1804b1-488d68ab2ccmr236905995e9.29.1776170896420; Tue, 14 Apr 2026 05:48:16 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488ede1e05bsm81185285e9.6.2026.04.14.05.48.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 05:48:15 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 13:48:01 +0100 Subject: [PATCH v4 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-v4-3-1dd30783a33b@linaro.org> References: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@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 037c7aa150c1efeda6e8e956a5b1db733e6ea74a..2b31da231ef3ec84a37b5a314ab= 1fc1151dca907 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 Sun Jun 14 06:55:11 2026 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (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 CE56F3E6DCB for ; Tue, 14 Apr 2026 12:48:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170902; cv=none; b=o/SzOBmwtd9fYhm2dMLvay1djPFSkxmnzzzzPoxwpOBZgWwBJAVYRC+R5gqLNqINvX8k2HJ7XYK12BP5c/Dh/lOZGgxV7BQ1Agsz6wn9DyfSu6JIwcI4B8CnyUCuaRfiuk1f3jrCXCEMg7ELs1u2VQjEkcxcdT9r6XEB9mU4x+Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170902; c=relaxed/simple; bh=chqGz8CXMiy63WmmO8OrPRWkTU/CYPZOJ9Kjy6IEH1k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Uc0ErGzLfxHijLd0x1YC9Lpcv1FDPIk+of3mviAsTO/2VfAKM9/VTV0Mkj6byo/rMr10Q+ev+C5V1LoFndnHgQ/kLsURHxHwtr0OOYPJr/v1W5WuQb+IuU8Uf6deKBjg01nWZ7W1xHpH1p/Rtsmvpb1DQ3Qr3oSQNwDA4spZCQs= 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=BWlCUnNA; arc=none smtp.client-ip=209.85.128.51 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="BWlCUnNA" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-4887ca8e529so36487795e9.0 for ; Tue, 14 Apr 2026 05:48:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776170898; x=1776775698; 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=BWlCUnNANL/P8sdQR1hL3ZWOx8e88hRN+LJDBRfI45uxMPJn9D+5lrhfa7lyZudFlI cp4yHwm7xdHGoJj6xEkrWswrM/DlI8DIkjgx7CQuzyJolIwF7nxY+CmjBdIEkIifpxba ggH0d9vxUpG0Irg5kldLYDWy8GFN88i3wflT0UjwG5aKBBJSePBVfWLrqA/8YcSlQ8Pt 0jWflsXvyDloa1yytVpo07jrq+MHwb+6bb/XQQz0UKNrpH+mQ76m1+aXdJjYcXE0aQ1Z O4csPCKyKZVPnpFpI1SQIxKQgvyLLTGbEFP6H0fZjCX/l7aCwfOxkp+TM6Mk+R9BAMKM yX3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776170898; x=1776775698; 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=TDOlhqbb+R/lwjiD5dJXavNgEXTqfCYWlylox5zOQUCJBsPvAXUPuZZNu0Bm0Mq1Bp U3bgMI6Y1SJ8aioUIZfl14CoKj5JrGVpn/eQn8+ULgfNWq0187L3/wo/SuKa+yM+UuZN g1AU4zqR0yDS5xYyYq8dU5DqxQ4znFOyiyevKtMBFyqUwNaGznQB64R9r+XmBm4bwAmf 4cNb4CPuk9gYU1jI5q2Rs7hTJr8nOWplqHeYvTf5IXJujEayLZtgYXmcMsIl93q6F4S3 B+iXU3kpdZuXcidwh23eEFgSa0J7kMr5XAY7AiDzf9QIpZ6eQmvxT0Bc5uiUdarWrZrE FI6A== X-Forwarded-Encrypted: i=1; AFNElJ9dhaivRj5Wed0YfJ7xKYlrKnNXqH/LFTgY0LZmqT6dwgro5epWUoAUrAvLIrhyhI8CylpUDOyEl0B8uZU=@vger.kernel.org X-Gm-Message-State: AOJu0YwhnSyKa061EdgyboBqdcLdpSZi4MgO0lLgUglm51fi56HAeR9U xeS61/7bkuWQsJZCbbE1k4ubmhqnSLskT6rzMtq/qdJbRFQDhshYLFTqpxjJyoaWAio= X-Gm-Gg: AeBDietZd/L/Rlhh0VIQGp4jSkU3pLGNXFzVxyvRNVv7lu8hWBAgANKZ2KhwW8vh+zK OvZ0tJ+pqpeEy9OVJRxG6UZrEov2j/iR+RMSDadt89dIFQKPQvSY1KQsX/cKwP2BLP8ZoGf3EIK bPWyhWHJGRbODsO0fArzYzaTj7DWP0XokF5ioLcr70CbUNtEaFlH0MhiNAvfjrYrzSRs8Pt3Lus pfbq0o7wP7gK6E42I06oV+Y7JQwZ0H+bKzwvSWfqjKFg+VntjSP7PmzAaf+XbBo6HsuRdvSxXr7 onBk9FgouczYe2a9Bz1zSEbFNmvasTJYN0bepC4KRWZGigXILrJZiBbLzpCVyC6VSJkrFlZlWc1 ylyoeb3o6X174yv5Te7BFhttr2VUxrUeEs77dfYmi33rZ7HNiFrSNZl9gv2DZJa4TuruiC0JjFf SlgpPHxUcRb0DsZYHc+q9fpB7XjfCSkIFrkQASqk3Iqg== X-Received: by 2002:a05:600c:c10c:b0:486:faa8:9e4 with SMTP id 5b1f17b1804b1-488d68cb8demr145699165e9.12.1776170898153; Tue, 14 Apr 2026 05:48:18 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488ede1e05bsm81185285e9.6.2026.04.14.05.48.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 05:48:17 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 13:48:02 +0100 Subject: [PATCH v4 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-v4-4-1dd30783a33b@linaro.org> References: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@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 Sun Jun 14 06:55:11 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 518123E715E for ; Tue, 14 Apr 2026 12:48:23 +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=1776170904; cv=none; b=DqA8wlskBJ7AERxzp66ZG1PWls7RldnEpB7Ehnu6r8ZEbMJFpkpvG9GQWLJGGAqIamVbz7i/GR+hzhzy95pvfjSpuMGFEemO5R7DeV3ifBoMuPBCFqe2V7kENQK+yHmlmTP28g69mc0+lhyyVTFW5EKRkLqXEoUi9LtlkDUrlEg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170904; c=relaxed/simple; bh=+hAJHqlA9neGxwPbbyXGO8mgwNwORpfgUWNnvOZvG0o=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nWo0DVy9pMx4svGx7GFeYrSniR33zOviwBZCLjdcEl9Qi8VAnMXeYWeRxUIwlj8L5Lq6IFEloi+lDVOF13mIrnq8leplp5nV83O9Ug0+7CVkttYVqyH0TJORYRdSYiDxaTpM/Nng0Y0C6AM0unljT/ogtGDGy6u5knrxlrg4opM= 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=CXrlMvlX; 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="CXrlMvlX" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-488e1a8ac40so43028595e9.2 for ; Tue, 14 Apr 2026 05:48:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776170902; x=1776775702; 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=CXrlMvlXRbZ5fsKCNuI/WStZzvnV1KhD6ToggY5Djbwwf1qWg7MJK6jilFpOlkgXhk SDE2NpsscisXqCHnJ+NbNiojMtH0ei/huOy8GK9P2VeiHwcgn67EwakVtwo8sV9xqN+w 5AK6naaZOFeaWThPHfqyEtFFWb8sh4pxzrb31VvpXAW2ubeails7brwpLTLGXjctO0EX 8ZFllPS58kB8YwxHba5bHSsfn8M7SDSqUWgoRKD9uo08zIfP+bUPNiR2v6tyzMhs9Xh4 a94Y9h3nJNX9y7+vJlcohRFvb9alGD/dwhv0JCB0UFJjnnyrH9Nq2Hnjl/hQ/qxKWgf2 uRtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776170902; x=1776775702; 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=tYYvcJn9OIEzOjihdG0WUZcto2ZA1RgIK+QemyTnW3V3Kj9mwUsaznfRFhNGzLbwKi 0E/eHIZRA679NhGoFOscxwW/LjLmfhk8OXQPxdHqfDk6ucuOLQqYKz5C3xvHjvZe/ocZ /rl8tfSESEyWCEBltF6tX6ct+eRbbrMe4MXCS/kabveEQp70VRqxECMhxc6ANCjVClb9 6i3QMI5jZr01C/FzRPbjgsUSULJAMru8JAv3uSjRwiRmPRIohT1QoeFxH8SHXRZFWQSl Duk9ieCsycJg+sOHN5S5wB9SQJwTtqkwrcrDOl07dhzoWfVMh+P/kdrXal1StTKvehMQ kxoA== X-Forwarded-Encrypted: i=1; AFNElJ852Z7xBrBsauX6gvooPgVH4JAYOcyLJmBeX6M/wQ4D6s0LoRU2L3ozAvvRqO9e6lgUdox9xGIrSvCO5nQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy87HcsL0vBLPMeP24PKU3lLn7RJ/rSPz0InIzvghEvPw+Slr/9 CKO097sB1epXtpqR2DELWX0feicVaenFg9qoQRz7dzUNzfSAfYA5yCVDreKUZIr06tZ2znqOhoX Jpth7hSZdeQ== X-Gm-Gg: AeBDietR64wE0KUS2oZvGuOBdzlpVMKG8YU2tJtPal2riF+FasztGj+BZllSm2XbmfK 07DOCg+qrCb7t5cOKJygb+WE21PGNSK2+PRxewoH5vqBYqp/et3no7HqUteXx0jncGGhyxV9qUK vpK7grqSV2V/i5JfIh62+V30v71R09jtgKmBOiUKa3OPLzRe3lu6Istkf4N9kr/WleiMaZO2/at r3V0hXiOl1vuxUtunK7rw5bJvPKHQlyhDTYER8dP46D61QY86N9vCJNe9GXa0ZSRAh3uLdsXQHf KLX9j26qqZXecVLiMN3VcVndTBedgDT/mm2loxkIlm0sNs7D0GYhQ363cJ5uJon3jECuFTEq8nj JTeMyiVD3oZvSaoPa9YfMzjiYij51c+NSHZfe6100acvr71rCjQwD6YZAS75625ZAC1tD9p3j0v kq2IyGOKxvBFNFhhwQEtgrKhFE4itZg1v9XUq10/bF5w== X-Received: by 2002:a05:600c:8585:b0:488:9bf8:7f17 with SMTP id 5b1f17b1804b1-488d684bcb0mr179229125e9.14.1776170901671; Tue, 14 Apr 2026 05:48:21 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488ede1e05bsm81185285e9.6.2026.04.14.05.48.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 05:48:21 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 13:48:03 +0100 Subject: [PATCH v4 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-v4-5-1dd30783a33b@linaro.org> References: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@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 Sun Jun 14 06:55:11 2026 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.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 0094F3E7171 for ; Tue, 14 Apr 2026 12:48:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170906; cv=none; b=SwoQcQtv0GGAsgAGk2lARqwsJ2JWqwiNp3UtnMOu+FNpFW2AMuQXI/yeaOQGkrEpaD/RRxxazAct1UuzXmDhbY8Y4UpWMGDZgcrx2MQ0za2ZZkkkMCJF4/2DofkJLIJOQDTNoQ+PSne/ePIKnaemg+bucJbS1Tmlt2PbikGOyK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776170906; c=relaxed/simple; bh=/AzkEovsO9hXmRshBeGK0xV8fVdHRetAqtsdomf8VKE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E4ZoFBeY5XyJ3j2sfeh61zPUKk8Tg7ZtD0N5vawLvokHvFqTQSOucy73kUq6EnIDDzDJD66YNv8HWAe8Ujr70aFet2YVCOSxyM+amf061r09WSsbLUwcU1mQvJTc+ZNxKJsDPVGdrZOJINA2Ko5PjvxbKCS3kY/VATDY+aJQR0E= 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=cx4cpvDa; arc=none smtp.client-ip=209.85.128.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="cx4cpvDa" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-482f454be5bso58638445e9.0 for ; Tue, 14 Apr 2026 05:48:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776170903; x=1776775703; 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=cx4cpvDa+IotMPzgMwXiJVfSUroM9VdO2nloWNGlt7uEas882LTaeWvLL8Gd9nBB9i HTDV6CnHyoXatNwDljc224MI8ZW0T+xmbK3RlttoiOUkWeUzxbplFyWnbdOVNUddkXWV vGzwakTLtH29jt90Kz0hYoL3FeeQld/arklfi+d61z+Wq5/rZVN5FYHAMLV2T4OrGqjR 2jt/yA/qV495TO7mRWKDyAd6zkEB5N70cGGez011zZKTzfOwCz/pY45oNmScmTiGm7vl 24iEmN0STHs0+VE4HQ26ljYBh0GDuy4wjlJ2hZ1nSNX/XrdVcefqy26WM4aFMHqSK0JN 7JrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776170903; x=1776775703; 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=KovZSgo+DG7B71is8GeRDOaqblJQXLbXpYNxipho+4Q7pCWajVHlytK8PtL6zX5e4d m++7TLxsFOlPLuvzSIMYhaSNlclJaDCaqOChTf5f1DtwJiKmDKPW0uNgXsi9f/d/C/dY og3K087tMXYfR8ASGm3TfFrdaa5mUaUh7MJnIg3v5whDzrFjuS1YKgGXnRxWdaCLbVwr r5E9bMeZMEQGr0znaYn+kA08nshotqmgKeRIV9Ra9rovlJGKuP7qh4I4wgyrHhKpqplh n2f4vdZOjcVNBPsfrmrnAVhGySN9eb56JtxZvS4aiuvdI1Ve5Llot0sl3y5lF//kq2/R bubg== X-Forwarded-Encrypted: i=1; AFNElJ9DnbhlnQLw3w6cx3hsW2klyTAzS2yWWw3Ahmj8jf5TBNbl/Z4QnS0/4GP7rI/ajXJU+eBWUn8z8fbyrfw=@vger.kernel.org X-Gm-Message-State: AOJu0YxSmSu/DJiRIh/b65SmMHbhkYZkHtZBFgeouetOYKhlFij+Ftk2 NjXrn4h58FIAz7euIhNgGQWjeSG4YnSSSu6W2MTmtJ6jlWdtYbUooXqWM6aDcsFTkKgUmuOxOcX s1oL0icXPwQ== X-Gm-Gg: AeBDievSGeD+c7vNvbXIc66IAHjGjJiJFR0EdRQ+K1hDzvDPuPphl32vDH7NVlWRuOy Iuce2d6bPA24XqWO0XEYsQHbT1WiappLXm5Yx1/nIzYd6MC68d0dVgYBk3e7afLqe0M9CwmzQh3 VfAfIUeJOqMOgszIKxKAbOZrD1IEoExaqNiWPunNJX9GkO10jpgy2p25Gcq93nMKH2jYW79uETY OSRcZNFRIGFf436Qa9W8LIti6vk5LP2HOHHNo4tDV+YNdX6gZKhk6yB8UMthFASY0J80wnybB9g NreiKN5/rDlhFoUWvuCNVKSLU9xMm3SjlSoBTxu2E+XAddDEz+eNxNoIsfUqOFRe09+ndqI5XnT aHQrm+vnJtTjnwx4Egc2aca5SA7YJnUkqn8TlRfTO08VMrYM4PwLl4F6iIOFbTEy1GRJ2cNtUeI rRBlP4kLNHmzHZ1a8mybwwcUnvMXkwy3wNlyaAs+nTiQ== X-Received: by 2002:a05:600c:a406:b0:488:aa33:dc8f with SMTP id 5b1f17b1804b1-488d6781cf5mr185361955e9.0.1776170903346; Tue, 14 Apr 2026 05:48:23 -0700 (PDT) Received: from e133063.arm.com ([213.137.22.193]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488ede1e05bsm81185285e9.6.2026.04.14.05.48.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 14 Apr 2026 05:48:22 -0700 (PDT) From: James Clark Date: Tue, 14 Apr 2026 13:48:04 +0100 Subject: [PATCH v4 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-v4-6-1dd30783a33b@linaro.org> References: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@linaro.org> In-Reply-To: <20260414-james-spe-impdef-decode-v4-0-1dd30783a33b@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