From nobody Wed Apr 1 22:15:21 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7D8214657FA for ; Wed, 1 Apr 2026 14:26:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053586; cv=none; b=s9SvXbQMIT1bL8NpW0cs1T8PgB3KmA832fBOvXD/AzpHFupR1/nQDOkh0PZP7CurRI+gdFPZRvLyE+RRtTSL208EifBKXfIyOFVSIjcn9wutPeXc83zYIEtvP8SL7DEs1Upi8uzvSE2wNos2BzuO7EWcz6y5gf+YMANnx05zldY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775053586; c=relaxed/simple; bh=jccoruL2T+NGqOEgKJxsle4jnVNgDjpWN1VhgSnRmEI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EN627RSdFT+nIGSOF/N/e0CZsQBR27i/h6uCl1qml135GIjb4+m4AE80nlwBnRb/gJ5li0GuohZsgpgWuhC4ctgP33FsnkoB1KtG4pUmDfoc5vzOLCuB/v0zDPX8JBJ8Jcu5T0fdd0lUt0bjMLSp95c25AFejDSMhNS/eplsUi0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=VlLbknmB; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="VlLbknmB" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-48541edecf9so83403595e9.1 for ; Wed, 01 Apr 2026 07:26:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1775053583; x=1775658383; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=n24sszBVzgPIC0kU6aw8yrDjc6YoHko/OXDuAL7iz6Q=; b=VlLbknmBTmbp4XuhubdX6S/nzRuEReObpGBZe5q0kI9Uuk33dhYPGM1l1emePzufDL +iAUt1VNjEXaN4gZc1QZZwedBCKTnkOIHH81kc4YiFi1lpcPUOE2TKyOP1YXufWeIZB8 avMfOEtl2bZibmWqAxx0TkEL+lE82FY8QD3VA3rVE21FOnzHtp9hLtIpNKmphJLNIKkZ aTxqJuGPmcEMXcIbHDTjJTs6O1Ekx+BqdrxrYLIi9PaUawNORucF6RppFlaQLRkTwNPu fSnkbS1pjPztlB6emLjhJTGuKcM1466OoHzUS9ij2RSGg4cw6n+2M12o1T5ZP1wxtnac eBiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775053583; x=1775658383; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=n24sszBVzgPIC0kU6aw8yrDjc6YoHko/OXDuAL7iz6Q=; b=UoiVEriuCLFD6swVfV//U/yS5DB4akB/Yi8nrwF/YiNT/+OUlz4ERBrjeeRsKcqlJM ZHPvXnBzlv7yFOZeW3QAIFSj20tNiwE2eIL1lzjN4SZRlVMImBw0DKJNqyCtv07442zF qD7+K27QyZWyguWHhQer1wqropJGajCK5Fb6hpejYfTk5152vk+7vSiM4MQnpjzWEtYY 9Yb6Hz85a7SU8+HhV1XYvrvAtoTe/7XuOXUXZHgouFZh7ixgW2KPZXPscQqgsHOBmD0T 0D8S0LwvXgZ05CwX0GZ1ZLC0jk9z26/bbsQI6pJxZ7mrkB+1nrQl9XDWNwwNcUbqcDEp 0pTA== X-Forwarded-Encrypted: i=1; AJvYcCUIOXwL/Ffi/oh4FGgxQ62OAYdHmNaLFShKCdKvmXUEtJ9Mpdir8YZ+psB5oYk349XzMP4fJy40q7DQhvQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxRYbJBqNzBXTBvuBmbRJ4440xps+s2mWaKBOTRMCbq9YoRgich G/xwtgcQ6aOU0zNl+T6zrbsF8jHmxjvbBCu1VH5Pi9dWw6LVI6Gio5rL0Sjte1YzOBY= X-Gm-Gg: ATEYQzxT88D1Cb9IPqvSHOrMGOLke7MQnzG6YQGHr4Th8tTPx+19W/dFE7J53JO0WeK 5m2Yntrcur/UdFCPZ9SV0Q6pKu7WA/yREnUKkAlHbdKZzCeYuDnHe9RmPgANTtQKxiCDZsxLdKO FvfZeT/E1aI5AR4iAVpVKX6007JyA8apq0mjZUEkYzvoKZOql0OrZYTwpn5YaDI/wPUTK8xHq2c nIQqGbriI6S1OH/fPBdjV8/sCy0V8C4PI/STOV2caduAig/fItinRK1MzSI7CeNSEsSvh7Yuvc3 0PZOe7wguXg2r3HaJbM37TsmkU6tRPcl0rSXTrx/os3sYg7WFNFH3ihU9bJn7j2VWSyXAXUGC+d LGcrUc0jBzIY+sO0eCICsBbch4tWhDC7xi+0163MFhFzjUpZ9jAFMzafCcJIbSO2zGmJrEY//et tFWND13wD6DptARBz/4YJd0JoEyvM6Vago45iZoNCqApY= X-Received: by 2002:a05:600c:828f:b0:485:4388:348b with SMTP id 5b1f17b1804b1-48883310809mr72258105e9.0.1775053582629; Wed, 01 Apr 2026 07:26:22 -0700 (PDT) Received: from ho-tower-lan.lan ([185.48.77.170]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4888a63c9b1sm2305595e9.5.2026.04.01.07.26.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 07:26:22 -0700 (PDT) From: James Clark Date: Wed, 01 Apr 2026 15:25:50 +0100 Subject: [PATCH 2/4] perf arm_spe: Turn event name mappings into an array Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260401-james-spe-impdef-decode-v1-2-ad0d372c220c@linaro.org> References: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> In-Reply-To: <20260401-james-spe-impdef-decode-v1-0-ad0d372c220c@linaro.org> To: John Garry , Will Deacon , Mike Leach , Leo Yan , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Al Grant Cc: linux-arm-kernel@lists.infradead.org, linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, James Clark X-Mailer: b4 0.14.0 This is so we can have a single function that prints events and can be used with multiple mappings from different CPUs. Remove any bit that was printed so that later we can print out the remaining unknown impdef bits. No functional changes intended. Signed-off-by: James Clark --- .../util/arm-spe-decoder/arm-spe-pkt-decoder.c | 88 +++++++++++-------= ---- 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c b/tools/= perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c index 5769ba2f4140..c880b0dec3a1 100644 --- a/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c +++ b/tools/perf/util/arm-spe-decoder/arm-spe-pkt-decoder.c @@ -276,6 +276,48 @@ static int arm_spe_pkt_out_string(int *err, char **buf= _p, size_t *blen, return ret; } =20 +struct ev_string { + u8 event; + const char *desc; +}; + +static const struct ev_string common_ev_strings[] =3D { + { .event =3D EV_EXCEPTION_GEN, .desc =3D "EXCEPTION-GEN" }, + { .event =3D EV_RETIRED, .desc =3D "RETIRED" }, + { .event =3D EV_L1D_ACCESS, .desc =3D "L1D-ACCESS" }, + { .event =3D EV_L1D_REFILL, .desc =3D "L1D-REFILL" }, + { .event =3D EV_TLB_ACCESS, .desc =3D "TLB-ACCESS" }, + { .event =3D EV_TLB_WALK, .desc =3D "TLB-REFILL" }, + { .event =3D EV_NOT_TAKEN, .desc =3D "NOT-TAKEN" }, + { .event =3D EV_MISPRED, .desc =3D "MISPRED" }, + { .event =3D EV_LLC_ACCESS, .desc =3D "LLC-ACCESS" }, + { .event =3D EV_LLC_MISS, .desc =3D "LLC-REFILL" }, + { .event =3D EV_REMOTE_ACCESS, .desc =3D "REMOTE-ACCESS" }, + { .event =3D EV_ALIGNMENT, .desc =3D "ALIGNMENT" }, + { .event =3D EV_TRANSACTIONAL, .desc =3D "TXN" }, + { .event =3D EV_PARTIAL_PREDICATE, .desc =3D "SVE-PARTIAL-PRED" }, + { .event =3D EV_EMPTY_PREDICATE, .desc =3D "SVE-EMPTY-PRED" }, + { .event =3D EV_L2D_ACCESS, .desc =3D "L2D-ACCESS" }, + { .event =3D EV_L2D_MISS, .desc =3D "L2D-MISS" }, + { .event =3D EV_CACHE_DATA_MODIFIED, .desc =3D "HITM" }, + { .event =3D EV_RECENTLY_FETCHED, .desc =3D "LFB" }, + { .event =3D EV_DATA_SNOOPED, .desc =3D "SNOOPED" }, + { .event =3D EV_STREAMING_SVE_MODE, .desc =3D "STREAMING-SVE" }, + { .event =3D EV_SMCU, .desc =3D "SMCU" }, + { .event =3D 0, .desc =3D NULL }, +}; + +static u64 print_event_list(int *err, char **buf, size_t *buf_len, + const struct ev_string *ev_strings, u64 payload) +{ + for (const struct ev_string *ev =3D ev_strings; ev->desc !=3D NULL; ev++)= { + if (payload & BIT(ev->event)) + arm_spe_pkt_out_string(err, buf, buf_len, " %s", ev->desc); + payload &=3D ~BIT(ev->event); + } + return payload; +} + static int arm_spe_pkt_desc_event(const struct arm_spe_pkt *packet, char *buf, size_t buf_len) { @@ -283,51 +325,7 @@ static int arm_spe_pkt_desc_event(const struct arm_spe= _pkt *packet, int err =3D 0; =20 arm_spe_pkt_out_string(&err, &buf, &buf_len, "EV"); - - if (payload & BIT(EV_EXCEPTION_GEN)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " EXCEPTION-GEN"); - if (payload & BIT(EV_RETIRED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " RETIRED"); - if (payload & BIT(EV_L1D_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L1D-ACCESS"); - if (payload & BIT(EV_L1D_REFILL)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L1D-REFILL"); - if (payload & BIT(EV_TLB_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " TLB-ACCESS"); - if (payload & BIT(EV_TLB_WALK)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " TLB-REFILL"); - if (payload & BIT(EV_NOT_TAKEN)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " NOT-TAKEN"); - if (payload & BIT(EV_MISPRED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " MISPRED"); - if (payload & BIT(EV_LLC_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " LLC-ACCESS"); - if (payload & BIT(EV_LLC_MISS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " LLC-REFILL"); - if (payload & BIT(EV_REMOTE_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " REMOTE-ACCESS"); - if (payload & BIT(EV_ALIGNMENT)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " ALIGNMENT"); - if (payload & BIT(EV_TRANSACTIONAL)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " TXN"); - if (payload & BIT(EV_PARTIAL_PREDICATE)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SVE-PARTIAL-PRED"); - if (payload & BIT(EV_EMPTY_PREDICATE)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SVE-EMPTY-PRED"); - if (payload & BIT(EV_L2D_ACCESS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L2D-ACCESS"); - if (payload & BIT(EV_L2D_MISS)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " L2D-MISS"); - if (payload & BIT(EV_CACHE_DATA_MODIFIED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " HITM"); - if (payload & BIT(EV_RECENTLY_FETCHED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " LFB"); - if (payload & BIT(EV_DATA_SNOOPED)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SNOOPED"); - if (payload & BIT(EV_STREAMING_SVE_MODE)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " STREAMING-SVE"); - if (payload & BIT(EV_SMCU)) - arm_spe_pkt_out_string(&err, &buf, &buf_len, " SMCU"); + print_event_list(&err, &buf, &buf_len, common_ev_strings, payload); =20 return err; } --=20 2.34.1