From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 49A8F27A93E for ; Tue, 6 May 2025 11:42:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531757; cv=none; b=RZaFN4LhxQ2SigvZ0UC1ksjAxjeqwCk3f9vf32LSf/7uKxwxW4FDuZ4r+R5gtR5eip+UT6XfbP1ecdDJDYEFqnVDT/RZ8VXscJF+pMHSPaEWU/Ap6T58hElZ48u1xqPDQTYfnwzD9HOYNOo4lYqGw7uhx6eJ22la+7Zvm32rIwY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531757; c=relaxed/simple; bh=gsVA8ADxmNU5sFAxcN6FUauD6AhKeHsJ1+2Sh2Sunl8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZntxLjsFzpyNTeZenUJJ2yrLF4WUAap8wGTKvTlYX0UPQXETr3peO+2E2hhcxDGeMxhrQD1fPjtjcyLfv79xusMSqBGYzct5zAtA06N1FL96Eshv9sxK32YSI+XKSTvEsWQifI89uaPl1B2tAgSHvjgHzupSWfMYj5NDL8WhqCA= 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=um/8Z1k5; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="um/8Z1k5" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-3995ff6b066so2627201f8f.3 for ; Tue, 06 May 2025 04:42:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531753; x=1747136553; 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=61Iqgtu46/FNdhFy61CVblGgsvlOmM6sXXaQm3S4mzk=; b=um/8Z1k5zhv3S5SsgCKXeDuZI5btuRH9N1jWhKqGv7T0FnukE6DLR3Qjftr1I8ydXP WTEdXp2kzRrZeTAenwTRgw5We8PtKfIDJWV+B760tpsXEMNfYtDytPIgbO3jS+8+kLrI E4jDWKH4R8gMj609scv45fwoyM+CqgOcfahM+bLcCopnCoe4gkKUg4AudCEu35y5rjRI fXuoRH6sB4MCknnnuGlP3E1zG6wc6Gf6juLh2nkDSyuQgNGMWZsdKkqqa+U6g6vuafYd +DqVqEYqHRzMmSg6JFc2Kqcm6d8oRq+fRIHl9XqNAgXTmLsQitS1tR3+GHLJyaGfpf/l 9CnA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531753; x=1747136553; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=61Iqgtu46/FNdhFy61CVblGgsvlOmM6sXXaQm3S4mzk=; b=Zfzob1evJG3xPWVQ7f60e0XXMHJ1DL7usH4EIj4BlH2V8QNCkeuSm8eleNag1DpWTx W0XhiPLW+YBWhENlNBpo0bhn2uU/HY1C+i8s96cvaPN9njzCUowM/wJMb35BWaYjacA7 yqoIyzgA7IQM1oGnGvzn2O64+69mIPPT1CtXKGT/iTkA/dLHmZoHuy98+weP76WtyVYQ BKuon0jEC+GFAOKNNs58URAvUwUysruLYbMK1kbHqew2zG1qEDw66A67Q528TzMHoQca 900eSaWrv9QGwa+Wv61UDBVX85df95C0Jp1RGeLjMZiQKCUatIwinSI3Z/oqWrH2kKPO q1EA== X-Forwarded-Encrypted: i=1; AJvYcCVO9jtpESzchRK0CNEhtRr4RTq/9d6PKTNBIr0e6iIvW6IuHUeuL0FQisKdwY/iPpj7PkzjtLGcAYG9P6Q=@vger.kernel.org X-Gm-Message-State: AOJu0YxzMnX6KsI3TB5L+kt50kiVgQOKO+cUkpCsOuRhjRASYLQwgzWy HrOccpEwwtkyYemQnDjA1vSfl1NjnjaySSX0RWdL4wxR71P+wzE4dW0U28E+6jc= X-Gm-Gg: ASbGncuVYuyL2tj6BvI3aEEZQv8bxFUaox/j2Pd1Cg3rY+rOEYVI+W5iO6w2kYjJ8fo xMLtvceaZ1uWGVT+XwpZY3UMQ6iNzhXXXlgt/4K12kYgQ3j7114O/3BCRSNqjPrw7UdEnqR86Ss KrFc+KCPiR/9rn05WUfcB55AvCgzMSBI7acDxKAp95s+pjIRVe1DdMrPif4hBNd5xE2W7O9zX6h YzBOsKfxJ2/gmp+94ujJjs/KMjWhjCA1wIIAX0+gmJDvvmuRJyJ0tXgwsaC0EkOpbvzmyB056Hh LoBIHv7A5foJccDXaiRA20ZSutdJ+Ot6+QlnWKyNbR0fzu8= X-Google-Smtp-Source: AGHT+IGOdg/E7hDqzaYj4d5eAC+LYCA9Y7Nh4kV6qn5WCG2sjJC4tu8qT06CrXeaclDgMwZbgMGuJw== X-Received: by 2002:a05:6000:402b:b0:39c:2692:4259 with SMTP id ffacd0b85a97d-3a09fd7a2d5mr9000895f8f.21.1746531753539; Tue, 06 May 2025 04:42:33 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:33 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:33 +0100 Subject: [PATCH 01/10] arm64: sysreg: Add new PMSIDR_EL1 and PMSFCR_EL1 fields 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: <20250506-james-perf-feat_spe_eft-v1-1-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 Add new fields and registers that are introduced for the features FEAT_SPE_CRR (call return records), FEAT_SPE_EFT (extended filtering), FEAT_SPE_FPF (floating point flag), FEAT_SPE_FDS (data source filtering), FEAT_SPE_ALTCLK and FEAT_SPE_SME. Signed-off-by: James Clark --- arch/arm64/tools/sysreg | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg index bdf044c5d11b..80d57c83a5f5 100644 --- a/arch/arm64/tools/sysreg +++ b/arch/arm64/tools/sysreg @@ -2205,11 +2205,20 @@ Field 0 RND EndSysreg =20 Sysreg PMSFCR_EL1 3 0 9 9 4 -Res0 63:19 +Res0 63:53 +Field 52 SIMDm +Field 51 FPm +Field 50 STm +Field 49 LDm +Field 48 Bm +Res0 47:21 +Field 20 SIMD +Field 19 FP Field 18 ST Field 17 LD Field 16 B -Res0 15:4 +Res0 15:5 +Field 4 FDS Field 3 FnE Field 2 FL Field 1 FT @@ -2226,7 +2235,12 @@ Field 15:0 MINLAT EndSysreg =20 Sysreg PMSIDR_EL1 3 0 9 9 7 -Res0 63:25 +Res0 63:33 +Field 32 SME +Field 31:28 ALTCLK +Field 27 FPF +Field 26 EFT +Field 25 CRR Field 24 PBT Field 23:20 FORMAT Enum 19:16 COUNTSIZE @@ -2244,7 +2258,7 @@ Enum 11:8 INTERVAL 0b0111 3072 0b1000 4096 EndEnum -Res0 7 +Field 7 FDS Field 6 FnE Field 5 ERND Field 4 LDS @@ -2287,6 +2301,10 @@ Field 16 COLL Field 15:0 MSS EndSysreg =20 +Sysreg PMSDSFR_EL1 3 0 9 10 4 +Field 63:0 S +EndSysreg + Sysreg PMBIDR_EL1 3 0 9 10 7 Res0 63:12 Enum 11:8 EA --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 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 15EAE27B509 for ; Tue, 6 May 2025 11:42:36 +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=1746531759; cv=none; b=oH8O9LfJRHrWBediWFkx4jsxfnjYob2zWGVdw6yTHuwX+mWGyFwItSLeE5P0+YzeiJSvMrNb3BTIQfnc3bAPzxXNbhxCrnH/n1+upnZY7rBE1m5kr+aRxWySUkxc92Oro9h1e1NW1hzhI5vRjSjTNWp7MdX7mFSq7nbRLXfb8Lg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531759; c=relaxed/simple; bh=ypJv34hSI/cyQpZHsVl/I2dLtP+yiW11q72mGd7TSV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FqIYrQqYbcsOvYBXLPAPbigBWT3zILlpQF8IrfzwPO8b1i8FtLY++AZciOgdG5GQKA7QUdcHxC/OmWS3kK3uqGa14PgPbf2IrASGacY7TDBD4fCXDpSdRAimA9hf5PP3Kgje4EBUV/IzYei9O8uE2BAU4vCB6ssXd8tFolPJKRk= 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=rsCyurtt; 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="rsCyurtt" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-39c1efbefc6so4115480f8f.1 for ; Tue, 06 May 2025 04:42:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531755; x=1747136555; 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=tr/eVzoQ45Dz9ymRgXeR+QCkRn1x7wE6DVCL1MblI/0=; b=rsCyurttQ5kSBQQcqSDZ8BYa2JIZ+gjt+UKSiPUM3XnnCRWOntnZLLKe/MRqs0Fy0J 4H7+wKTjTkIIvg0WB+cpeaiieh6EtKG9e0A3YqSLlWb5JXMzfrPuZJCtygWy/FJmZRXR OPw0FcAgV2wm1aQmXzFAzFXQe2fDyAWIR9eC6IlSWAB5nj94HcflMPn24MZtnmWufQh1 Te1QZ0Yw96iY4HPqFOSeAuzQEi7tbRi+b1oBEA8WrvfT8KXqfbnJQrllTxjZgc18KXml Y6tsv9/vXBKR0O3EWw/2JnvMk+EFU9Ym+MEjHgK5lRJK94oaB8/nzbAXlPXHDSRsLza6 JmJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531755; x=1747136555; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tr/eVzoQ45Dz9ymRgXeR+QCkRn1x7wE6DVCL1MblI/0=; b=O7LY18FFXzelUHcaWn1X4J1+6P41KnbmwbMfz2H6reG9S03tnEa0sPabsRXUSYyJ1e hgw00R/7E7xdnSUzSyclmmYN3L7C66qIx+HA+H2EjsCnHqm2FdkV2vHrjmYcFPDoPeqT 33d2XOIzIsy4Kz6KcxRKNr6cy/azbtk1DLV+f82ZS/BwhH0Ur0P4Og+t87XMPPNA+u3d XCRm5iK3C/N7gVDY7PWrge0pw/qr7h/r5tVWVXkQ0tx9IkpMpiW9C6Elcpzjq21PWF6/ F61uHO9av0ydc9dx3VmZcm4qOnEKA0YRDdxz4wU3q1NDvzS7SlAV7sdA3OUXpiiG2eXg 96PQ== X-Forwarded-Encrypted: i=1; AJvYcCXJTmpUXMBTxizikmBFTp9jfllwumOBBkjJAwaQbU3XcwDcKCQmJMHNsHfyy35TfLXi3RR9DzRWAbEwDz8=@vger.kernel.org X-Gm-Message-State: AOJu0YzhycJt511vHwr3bsKYEMvLzw1+9xWo7+j2BcmUlXDj28PGYleq aHIIvvVTGBnoL9F7UrCb/YtL6IeYfim2f4rxW8JfGQiM5VIK46gdNeRfoqAzDUE= X-Gm-Gg: ASbGncv19rRMcg7YXqKQwhnPnZTP3a+nwcsLe9CvgUnaBmWA4MLkNg0cZghXOTEiJTO CXiPALXi3PY14HtQTxSs6OliXuVvFIC62P+Kejy0Eyq7wMlZ37TS9VVjBni/0uru7YEyK8mGEC6 kV0Q5Wy4joDJe2+iL9hrv8OdQEwwYrzgWUjB0N7PiXgliY59a4zgdo42A1VqxPqTgP4gYl5IY9i m87HSpNBlnsbDkcxavUU+YTNcW6Cm1HhYwB+P0SSGxIiuoDT+/vc54VGvBjFNNGefujoNvucaYM TiMfc9OtwEsVacvtPGsiCfM0/B/7BEHz1H5sxSnue/iXB98= X-Google-Smtp-Source: AGHT+IEH2+KTPzukEfAEMWWhxbAHT6NzJ/G9YGCnXDbFPk9R2A+Wr+4SDydWQzAME6RiQhm5jVhrhw== X-Received: by 2002:a05:6000:1787:b0:39e:cbe3:881 with SMTP id ffacd0b85a97d-3a0ac0cb3afmr1864277f8f.12.1746531755089; Tue, 06 May 2025 04:42:35 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:34 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:34 +0100 Subject: [PATCH 02/10] perf: arm_spe: Support FEAT_SPEv1p4 filters 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: <20250506-james-perf-feat_spe_eft-v1-2-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 FEAT_SPEv1p4 (optional from Armv8.8) adds some new filter bits, so remove them from the previous version's RES0 bits using PMSEVFR_EL1_RES0_V1P4_EXCL. It also makes some previously available bits unavailable again, so add those back using PMSEVFR_EL1_RES0_V1P4_INCL. E.g: E[30], bit [30] When FEAT_SPEv1p4 is _not_ implemented ... FEAT_SPE_V1P3 has the same filters as V1P2 so explicitly add it to the switch. Signed-off-by: James Clark Reviewed-by: Leo Yan --- arch/arm64/include/asm/sysreg.h | 7 +++++++ drivers/perf/arm_spe_pmu.c | 5 ++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysre= g.h index 2639d3633073..e24042e914a4 100644 --- a/arch/arm64/include/asm/sysreg.h +++ b/arch/arm64/include/asm/sysreg.h @@ -354,6 +354,13 @@ (PMSEVFR_EL1_RES0_IMP & ~(BIT_ULL(18) | BIT_ULL(17) | BIT_ULL(11))) #define PMSEVFR_EL1_RES0_V1P2 \ (PMSEVFR_EL1_RES0_V1P1 & ~BIT_ULL(6)) +#define PMSEVFR_EL1_RES0_V1P4_EXCL \ + (BIT_ULL(2) | BIT_ULL(4) | GENMASK_ULL(10, 8) | GENMASK_ULL(23, 19)) +#define PMSEVFR_EL1_RES0_V1P4_INCL \ + (GENMASK_ULL(31, 26)) +#define PMSEVFR_EL1_RES0_V1P4 \ + (PMSEVFR_EL1_RES0_V1P4_INCL | \ + (PMSEVFR_EL1_RES0_V1P2 & ~PMSEVFR_EL1_RES0_V1P4_EXCL)) =20 /* Buffer error reporting */ #define PMBSR_EL1_FAULT_FSC_SHIFT PMBSR_EL1_MSS_SHIFT diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c index 3efed8839a4e..d9f6d229dce8 100644 --- a/drivers/perf/arm_spe_pmu.c +++ b/drivers/perf/arm_spe_pmu.c @@ -701,9 +701,12 @@ static u64 arm_spe_pmsevfr_res0(u16 pmsver) case ID_AA64DFR0_EL1_PMSVer_V1P1: return PMSEVFR_EL1_RES0_V1P1; case ID_AA64DFR0_EL1_PMSVer_V1P2: + case ID_AA64DFR0_EL1_PMSVer_V1P3: + return PMSEVFR_EL1_RES0_V1P2; + case ID_AA64DFR0_EL1_PMSVer_V1P4: /* Return the highest version we support in default */ default: - return PMSEVFR_EL1_RES0_V1P2; + return PMSEVFR_EL1_RES0_V1P4; } } =20 --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.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 38BFD27BF63 for ; Tue, 6 May 2025 11:42:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531760; cv=none; b=BpgcVCmfU2uR+8y6UQN1ERHCnuNrRWLPDigZId//NLwS7bq8+CIWZuek9uE054P39C9Yf+TdadK57kHW26toeDXZBgX13JJsDM1vAyJsnF23Nzo2K0OZAfV+PR9+4qQGDKWnUP0bBTsCBLoNrIPx1eRWp3BIBrF0y6awJC2X7kI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531760; c=relaxed/simple; bh=6zOqxgfql+1NZvpILT5/fH5BwORwsFoauP/tZ4peo20=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FLhfMlz/rB03LxGg2BrlW/waHz3+oDb9OHOTuSf97uZbfNuLuczlyG0QpFmLRDaYUS56OpQldhjcWBX1E8EU6lXFbLU1rpoyZqYaHD3/aaHS2GhQ6QRRw+5QCh+y76aUgTuydYMdOKHFv0Ead++MxZXnpgV39lOKpz9N9RcE4D8= 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=T0FGrH9T; arc=none smtp.client-ip=209.85.221.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="T0FGrH9T" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-39ac8e7688aso3980711f8f.2 for ; Tue, 06 May 2025 04:42:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531756; x=1747136556; 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=gzZ+1KD4NGg60jcZwWP0bq87rNQ9MmWgbpyrUPa98XU=; b=T0FGrH9TkyaTi9PNPi3Cga5Ly35wiOr9KxtKoOoFRj37VtGGeeig4n0chogPhm4b5x DCjotW078+svKusVL17p6/mH3/qOxa9J2hB7fA8IypNZ6ArvapDshQyaeRejB1ZcPPTn fpYe1v/oPeIE8vPSHWK8Z6efgpVrpgVXXNBU4XRdml17ekIJE3DlttdA7F7uQhEBufue TE5M2j3FRlnLgI5zvqJrU5XCMX8icYiWuRQQBWyaXJS40IrmDC3uJZoV4Mh7+BmdUCw5 Boa8EY93fc8+U5qVVRBv6azAVclh01MllyxAq/AX9hFrC3TMi3XW+DyQlVm3w2iUU/Xe 8taw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531756; x=1747136556; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gzZ+1KD4NGg60jcZwWP0bq87rNQ9MmWgbpyrUPa98XU=; b=pu4/TCXr6Y6aueuua2zVBVN0FqFYsS4+1JGeA4iOHWWQNGvxjr+x55t6FYjiabmUly Xi9L6QcAE6Yjb+pfiYJoBDPqptMkUNRhx84dQRUul9Ye9JoyC9V7ErtwGnM+rVEspQ8v n/cA4T0FnUsTj5wuo+VAeMS49FuRj6mhIUWlAYJ48/ZszyYpHeZE8ZD4D+dfJziBJ8L7 jqvrh+vvO6n7UzI/Gu1xvOyxwL6AGfL2mzyMViad9Bc5EiH4eUqKs2RGLMG5py/sJd7Q iYQWuExBvs9KzxJ4sWKsPkwi8hSpHQKs249LxUuWPA0UWNO7rJpYLCNg1zNjFPplKFTS 8E5g== X-Forwarded-Encrypted: i=1; AJvYcCUqYadu5EcRziOldH93M0vs4deX5/fGjGeEBWBbqeddN8I+PVCyDcCpA4o06D2TToMgfLu/gAXr6qpmo8Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1pmCcCrhbJJN/CIz1zsoYYoeJ6BghONV+sj1kma5wMmqlkpU2 sjnvHUnFXPmSjYw+iALh8asijZaSs0hVe8+LZUwy9cNPWHeAg6C3vnYxKN8zt1w= X-Gm-Gg: ASbGncvTSiNl1AuDOp62lp41dMYhyQcSoukLF6Tn72b+MSf1qM2At+kD9KtkZ+Tu7tp OyXdk1wuSdFy/seARaEHMVka8IVKI136ye+tPiznnKGf87KNYIKqXsN+CYxISDtWPmcmt9k9ea6 pFQTOHnxVRByCgCsVLBZigV+aZt+orLjFeJ+Lhht8expxqMgEUjRISA8aL3yvu2iw/zsbXsIloM PVnrdS7kLtNMfPP3qYkBsZw4+03TcMwFbVZ1nfFQKpsbHyPjdcGgUaQ/uDDaOPryaYVINC7BpqU k7JAB06cCvjnuuxwiuF5mDA4pdlSc1hJJ1UjIdfz/yEfZJY= X-Google-Smtp-Source: AGHT+IEXEwk3zSFAr5Xrso0uLEccU9r9mKQAlZzEgcUzP08egpj1n25VEHboo8bpop8IWEom5eO4qw== X-Received: by 2002:a05:6000:400f:b0:3a0:8c46:1763 with SMTP id ffacd0b85a97d-3a0abf6b782mr1946389f8f.0.1746531756420; Tue, 06 May 2025 04:42:36 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:36 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:35 +0100 Subject: [PATCH 03/10] perf: arm_spe: Add support for FEAT_SPE_EFT extended filtering 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: <20250506-james-perf-feat_spe_eft-v1-3-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 FEAT_SPE_EFT (optional from Armv9.4) adds mask bits for the existing load, store and branch filters. It also adds two new filter bits for SIMD and floating point with their own associated mask bits. The current filters only allow OR filtering on samples that are load OR store etc, and the new mask bits allow setting part of the filter to an AND, for example filtering samples that are store AND SIMD. With mask bits set to 0, the OR behavior is preserved, so the unless any masks are explicitly set old filters will behave the same. Add them all and make them behave the same way as existing format bits, hidden and return EOPNOTSUPP if set when the feature doesn't exist. Signed-off-by: James Clark Reviewed-by: Leo Yan --- drivers/perf/arm_spe_pmu.c | 64 ++++++++++++++++++++++++++++++++++++++++++= ++++ 1 file changed, 64 insertions(+) diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c index d9f6d229dce8..9309b846f642 100644 --- a/drivers/perf/arm_spe_pmu.c +++ b/drivers/perf/arm_spe_pmu.c @@ -86,6 +86,7 @@ struct arm_spe_pmu { #define SPE_PMU_FEAT_ERND (1UL << 5) #define SPE_PMU_FEAT_INV_FILT_EVT (1UL << 6) #define SPE_PMU_FEAT_DISCARD (1UL << 7) +#define SPE_PMU_FEAT_EFT (1UL << 8) #define SPE_PMU_FEAT_DEV_PROBED (1UL << 63) u64 features; =20 @@ -197,6 +198,27 @@ static const struct attribute_group arm_spe_pmu_cap_gr= oup =3D { #define ATTR_CFG_FLD_discard_CFG config /* PMBLIMITR_EL1.FM =3D DISCARD */ #define ATTR_CFG_FLD_discard_LO 35 #define ATTR_CFG_FLD_discard_HI 35 +#define ATTR_CFG_FLD_branch_filter_mask_CFG config /* PMSFCR_EL1.Bm */ +#define ATTR_CFG_FLD_branch_filter_mask_LO 36 +#define ATTR_CFG_FLD_branch_filter_mask_HI 36 +#define ATTR_CFG_FLD_load_filter_mask_CFG config /* PMSFCR_EL1.LDm */ +#define ATTR_CFG_FLD_load_filter_mask_LO 37 +#define ATTR_CFG_FLD_load_filter_mask_HI 37 +#define ATTR_CFG_FLD_store_filter_mask_CFG config /* PMSFCR_EL1.STm */ +#define ATTR_CFG_FLD_store_filter_mask_LO 38 +#define ATTR_CFG_FLD_store_filter_mask_HI 38 +#define ATTR_CFG_FLD_simd_filter_CFG config /* PMSFCR_EL1.SIMD */ +#define ATTR_CFG_FLD_simd_filter_LO 39 +#define ATTR_CFG_FLD_simd_filter_HI 39 +#define ATTR_CFG_FLD_simd_filter_mask_CFG config /* PMSFCR_EL1.SIMDm */ +#define ATTR_CFG_FLD_simd_filter_mask_LO 40 +#define ATTR_CFG_FLD_simd_filter_mask_HI 40 +#define ATTR_CFG_FLD_float_filter_CFG config /* PMSFCR_EL1.FP */ +#define ATTR_CFG_FLD_float_filter_LO 41 +#define ATTR_CFG_FLD_float_filter_HI 41 +#define ATTR_CFG_FLD_float_filter_mask_CFG config /* PMSFCR_EL1.FPm */ +#define ATTR_CFG_FLD_float_filter_mask_LO 42 +#define ATTR_CFG_FLD_float_filter_mask_HI 42 =20 #define ATTR_CFG_FLD_event_filter_CFG config1 /* PMSEVFR_EL1 */ #define ATTR_CFG_FLD_event_filter_LO 0 @@ -215,8 +237,15 @@ GEN_PMU_FORMAT_ATTR(pa_enable); GEN_PMU_FORMAT_ATTR(pct_enable); GEN_PMU_FORMAT_ATTR(jitter); GEN_PMU_FORMAT_ATTR(branch_filter); +GEN_PMU_FORMAT_ATTR(branch_filter_mask); GEN_PMU_FORMAT_ATTR(load_filter); +GEN_PMU_FORMAT_ATTR(load_filter_mask); GEN_PMU_FORMAT_ATTR(store_filter); +GEN_PMU_FORMAT_ATTR(store_filter_mask); +GEN_PMU_FORMAT_ATTR(simd_filter); +GEN_PMU_FORMAT_ATTR(simd_filter_mask); +GEN_PMU_FORMAT_ATTR(float_filter); +GEN_PMU_FORMAT_ATTR(float_filter_mask); GEN_PMU_FORMAT_ATTR(event_filter); GEN_PMU_FORMAT_ATTR(inv_event_filter); GEN_PMU_FORMAT_ATTR(min_latency); @@ -228,8 +257,15 @@ static struct attribute *arm_spe_pmu_formats_attr[] = =3D { &format_attr_pct_enable.attr, &format_attr_jitter.attr, &format_attr_branch_filter.attr, + &format_attr_branch_filter_mask.attr, &format_attr_load_filter.attr, + &format_attr_load_filter_mask.attr, &format_attr_store_filter.attr, + &format_attr_store_filter_mask.attr, + &format_attr_simd_filter.attr, + &format_attr_simd_filter_mask.attr, + &format_attr_float_filter.attr, + &format_attr_float_filter_mask.attr, &format_attr_event_filter.attr, &format_attr_inv_event_filter.attr, &format_attr_min_latency.attr, @@ -250,6 +286,16 @@ static umode_t arm_spe_pmu_format_attr_is_visible(stru= ct kobject *kobj, if (attr =3D=3D &format_attr_inv_event_filter.attr && !(spe_pmu->features= & SPE_PMU_FEAT_INV_FILT_EVT)) return 0; =20 + if ((attr =3D=3D &format_attr_branch_filter_mask.attr || + attr =3D=3D &format_attr_load_filter_mask.attr || + attr =3D=3D &format_attr_store_filter_mask.attr || + attr =3D=3D &format_attr_simd_filter.attr || + attr =3D=3D &format_attr_simd_filter_mask.attr || + attr =3D=3D &format_attr_float_filter.attr || + attr =3D=3D &format_attr_float_filter_mask.attr) && + !(spe_pmu->features & SPE_PMU_FEAT_EFT)) + return 0; + return attr->mode; } =20 @@ -341,8 +387,15 @@ static u64 arm_spe_event_to_pmsfcr(struct perf_event *= event) u64 reg =3D 0; =20 reg |=3D FIELD_PREP(PMSFCR_EL1_LD, ATTR_CFG_GET_FLD(attr, load_filter)); + reg |=3D FIELD_PREP(PMSFCR_EL1_LDm, ATTR_CFG_GET_FLD(attr, load_filter_ma= sk)); reg |=3D FIELD_PREP(PMSFCR_EL1_ST, ATTR_CFG_GET_FLD(attr, store_filter)); + reg |=3D FIELD_PREP(PMSFCR_EL1_STm, ATTR_CFG_GET_FLD(attr, store_filter_m= ask)); reg |=3D FIELD_PREP(PMSFCR_EL1_B, ATTR_CFG_GET_FLD(attr, branch_filter)); + reg |=3D FIELD_PREP(PMSFCR_EL1_Bm, ATTR_CFG_GET_FLD(attr, branch_filter_m= ask)); + reg |=3D FIELD_PREP(PMSFCR_EL1_SIMD, ATTR_CFG_GET_FLD(attr, simd_filter)); + reg |=3D FIELD_PREP(PMSFCR_EL1_SIMDm, ATTR_CFG_GET_FLD(attr, simd_filter_= mask)); + reg |=3D FIELD_PREP(PMSFCR_EL1_FP, ATTR_CFG_GET_FLD(attr, float_filter)); + reg |=3D FIELD_PREP(PMSFCR_EL1_FPm, ATTR_CFG_GET_FLD(attr, float_filter_m= ask)); =20 if (reg) reg |=3D PMSFCR_EL1_FT; @@ -716,6 +769,10 @@ static int arm_spe_pmu_event_init(struct perf_event *e= vent) u64 reg; struct perf_event_attr *attr =3D &event->attr; struct arm_spe_pmu *spe_pmu =3D to_spe_pmu(event->pmu); + const u64 feat_spe_eft_bits =3D PMSFCR_EL1_LDm | PMSFCR_EL1_STm | + PMSFCR_EL1_Bm | PMSFCR_EL1_SIMD | + PMSFCR_EL1_SIMDm | PMSFCR_EL1_FP | + PMSFCR_EL1_FPm; =20 /* This is, of course, deeply driver-specific */ if (attr->type !=3D event->pmu->type) @@ -761,6 +818,10 @@ static int arm_spe_pmu_event_init(struct perf_event *e= vent) !(spe_pmu->features & SPE_PMU_FEAT_FILT_LAT)) return -EOPNOTSUPP; =20 + if ((reg & feat_spe_eft_bits) && + !(spe_pmu->features & SPE_PMU_FEAT_EFT)) + return -EOPNOTSUPP; + if (ATTR_CFG_GET_FLD(&event->attr, discard) && !(spe_pmu->features & SPE_PMU_FEAT_DISCARD)) return -EOPNOTSUPP; @@ -1052,6 +1113,9 @@ static void __arm_spe_pmu_dev_probe(void *info) if (spe_pmu->pmsver >=3D ID_AA64DFR0_EL1_PMSVer_V1P2) spe_pmu->features |=3D SPE_PMU_FEAT_DISCARD; =20 + if (FIELD_GET(PMSIDR_EL1_EFT, reg)) + spe_pmu->features |=3D SPE_PMU_FEAT_EFT; + /* This field has a spaced out encoding, so just use a look-up */ fld =3D FIELD_GET(PMSIDR_EL1_INTERVAL, reg); switch (fld) { --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A6A827B4FE for ; Tue, 6 May 2025 11:42:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531762; cv=none; b=UO+hWCmcpryT5FN7QvjtQc7o2zavUgkoWHt3ecpHpIOeGvMLjmClqsxpF708esKcfS4Kb7TxcpvUuXbZRJ0oAg+j6BvyHm5Bp+PDNfZfzv66fY/wmnDC1tQn4G0IwHq+WDnmbkDZPGibu09ErrSFf8gIC6YitbnHtGe02wvx22g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531762; c=relaxed/simple; bh=TD6ToqP0Mw9/zwmt/jMIGuCKaH1dYDGMG9cypkdxqkw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VtGULoOPTM6bz64GaGbKRDKKFuj8WHBDAJ5qTyvt+DMvMtMDsl4LOFH9gIpZUAosDyf9oSHcf5La3/M8sKqlBl+EB+2/s9nF/y6nA66Rc4r23WJ7/vQl5EWD45g0r6QXna+HyBRTwoA/BIB+FJK/aomMhHR4RmA7mZqypGpSdas= 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=OqVUSZUE; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="OqVUSZUE" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-39c0dfad22aso3526742f8f.2 for ; Tue, 06 May 2025 04:42:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531758; x=1747136558; 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=2LJ8ZLIjDVC5fijUJQfad9+mmQw33lNnVTO/5Fbzfl0=; b=OqVUSZUEIn9+M4eH2yndN8kQVMh/r9mh7UrA5j5nrKxNl23G6AdHIdY432VQA8GiPV 2aRchZV5WQRxE4RrpZ9NsljVj6KUYtWxyKeSmoUZVPdV7KgT/+Clseq6omsdj2+d7hec 7I2g0NVWKO3m7zZ4uCDWrBvgASAcrzPoeTWWrdofquwAInhuLl8PBfRbr+Iwey+NEKCq eqECHJpe9LvmUnzFjpMRnjS/DCKPjoxoZHP5RwWD86v8/r57Uh+CWGp/c/f0fR2peFD3 fBYZU8MrgKZiKBgSTIuMW8WdnHGTx5rV0DVuShLuwMzJXMeEBUAlYFGU5s2YQLYTbLGu ZDwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531758; x=1747136558; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2LJ8ZLIjDVC5fijUJQfad9+mmQw33lNnVTO/5Fbzfl0=; b=B9FimN54pECkYCnmJ7R7cMSBWt4LoucRkZYRckactuK/AFNzo3gSI4a2EpkaVKR5UE 0mPFp3OSULNCd8tEKFarRm138Oebai5at3JItswK3sslpmoLKZ2mGESlQzJv9561OalM cgAotoVEXLcBH9eoS+XpvQ+s91GIGImOB4Wd9fORWhoVPgYBNYWvnL7Dp2k7379EZkm/ o/HZXdSZqdwi1YKvhIQsTnyhRW8UG6FPInjtuQ0wk86l0nMF7B1mLzv9YqD2MbgGvB8R oqNawaCi0CyxtkBn59sRfO7JfMcfSPWM4FeS4t77PZvZ9nxLenL3d/OO9GDQDP5zlAD5 S10Q== X-Forwarded-Encrypted: i=1; AJvYcCXGKbX2NAPqKpMqQ8dzEA7Qzk1nfebmYvVlUpXoTd90lQXxVrHdEPBl4zoDnAxo6LnZV9CCfLQFSc4Ft5k=@vger.kernel.org X-Gm-Message-State: AOJu0YyZqO/65gstJZNPj5oihICWk3N7GVx/Fr+nthmG/Rjmy7F/HEZ6 /s9+Du+gc1TnGxF0qrdYx1cyHUNBQab4bSUm9SdjZ44E9QBRTSxxegsVfrpd3ps= X-Gm-Gg: ASbGncvQzkGvatbj0ecjrlyvu3w+ogZrbtpsXB/SH6dIt0JHrh8sZFcXExr6FSfbOe0 V9CVaxWfadvDZnI4r1S0NRvOBeuRyWQJk8QEL7dnphkyb+WJ8+8/PZlEVBiBI7w5OYw8+KqWSRg 5Fx7GcHBrgHjGkKh5K3jfe4KVDp7rdnL9DV/096gBbtILX6qNd6yKkPHdKoFXhtzcxp3ujBtyL6 uo+2fDwKhHFU1Geab0wQHr4WZLD43V2UWk1y618LjIjDDBEe3/tGVA994lG3Dudv/U19OQvy6Q4 ZGOVh2WEoIes3CyVRhFKkUE2g4SMp2iZfrBSWhIxFvs4mkE= X-Google-Smtp-Source: AGHT+IFY2PTkM5OGqyGQ1rieutDdi16VfttDeC1GlcJYbSC4zGE/aIwEggIDkiNucqgP5hbvdPyHIA== X-Received: by 2002:a5d:5f8b:0:b0:3a0:b133:8d4a with SMTP id ffacd0b85a97d-3a0b1338f93mr1496745f8f.5.1746531757737; Tue, 06 May 2025 04:42:37 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:37 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:36 +0100 Subject: [PATCH 04/10] arm64/boot: Enable EL2 requirements for SPE_FEAT_FDS 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: <20250506-james-perf-feat_spe_eft-v1-4-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 SPE data source filtering (optional from Armv8.8) requires that traps to the filter register PMSDSFR be disabled. Document the requirements and disable the traps if the feature is present. Signed-off-by: James Clark --- Documentation/arch/arm64/booting.rst | 11 +++++++++++ arch/arm64/include/asm/el2_setup.h | 14 ++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/Documentation/arch/arm64/booting.rst b/Documentation/arch/arm6= 4/booting.rst index dee7b6de864f..8da6801da9a0 100644 --- a/Documentation/arch/arm64/booting.rst +++ b/Documentation/arch/arm64/booting.rst @@ -404,6 +404,17 @@ Before jumping into the kernel, the following conditio= ns must be met: - HDFGWTR2_EL2.nPMICFILTR_EL0 (bit 3) must be initialised to 0b1. - HDFGWTR2_EL2.nPMUACR_EL1 (bit 4) must be initialised to 0b1. =20 + For CPUs with SPE data source filtering (SPE_FEAT_FDS): + + - If EL3 is present: + + - MDCR_EL3.EnPMS3 (bit 42) must be initialised to 0b1. + + - If the kernel is entered at EL1 and EL2 is present: + + - HDFGRTR2_EL2.nPMSDSFR_EL1 (bit 19) must be initialised to 0b1. + - HDFGWTR2_EL2.nPMSDSFR_EL1 (bit 19) must be initialised to 0b1. + For CPUs with Memory Copy and Memory Set instructions (FEAT_MOPS): =20 - If the kernel is entered at EL1 and EL2 is present: diff --git a/arch/arm64/include/asm/el2_setup.h b/arch/arm64/include/asm/el= 2_setup.h index ebceaae3c749..155b45092f5e 100644 --- a/arch/arm64/include/asm/el2_setup.h +++ b/arch/arm64/include/asm/el2_setup.h @@ -275,6 +275,20 @@ orr x0, x0, #HDFGRTR2_EL2_nPMICFILTR_EL0 orr x0, x0, #HDFGRTR2_EL2_nPMUACR_EL1 .Lskip_pmuv3p9_\@: + mrs x1, id_aa64dfr0_el1 + ubfx x1, x1, #ID_AA64DFR0_EL1_PMSVer_SHIFT, #4 + /* If SPE is implemented, we can read PMSIDR and */ + cmp x1, #ID_AA64DFR0_EL1_PMSVer_IMP + b.lt .Lskip_spefds_\@ + + mrs_s x1, SYS_PMSIDR_EL1 + and x1, x1, PMSIDR_EL1_FDS_SHIFT + /* if FEAT_SPE_FDS is implemented, */ + cbz x1, .Lskip_spefds_\@ + /* disable traps to PMSDSFR. */ + orr x0, x0, #HDFGRTR2_EL2_nPMSDSFR_EL1 + +.Lskip_spefds_\@: msr_s SYS_HDFGRTR2_EL2, x0 msr_s SYS_HDFGWTR2_EL2, x0 msr_s SYS_HFGRTR2_EL2, xzr --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 B09FD27C171 for ; Tue, 6 May 2025 11:42:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531763; cv=none; b=eXFjhISaiXDJuM2KCtbhj6IrnSnm/dxCW7Ww4QHvIq5qbnDZJqw8Cu9BwWORtKGSOiqbCputnmhPC4Eysr48a6H23Exk90xJzYQ+YmfSW9lGy2ZFVcR5YyIlDNnWy4YiX3bPP0l+QlxRZfrVVVKxS9V3w0dFq6EbocT1zw4t0vE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531763; c=relaxed/simple; bh=f5noS+6MFnNZ5/918HPeH3J2Z+Rlodkc5p0XHS41WVw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CieR1D/WSKsoRZhC3FypQXZf5uGNR8OUSgAQ4MMip2kTL1HuUasYMXtyiXtv3JVF0fpPv0WGIHDKqHefe7dz87NWmyCZK3fpA2FxoSgsU6hSZpzHvfj3DQQwbg0lr3yd2z3qZCFX01ZjMcUDjnrdiK3J4AT9VzktK5uNotdT7J4= 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=Eprj4Yt/; arc=none smtp.client-ip=209.85.221.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="Eprj4Yt/" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-39ac8e7688aso3980760f8f.2 for ; Tue, 06 May 2025 04:42:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531759; x=1747136559; 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=gMCZkyRZidUrNwX5Cx9PhWIRQc02z6irI9+xxc34niE=; b=Eprj4Yt/Cfv4Ot7IzxplxAPFDJahdZrUbGk4djJOK9s8tWj/hMD5LeZ3hhQJ8JJEeT 3lKyx83sjEd45LT/kbQRCUt9wjzph3lpfoyqBZS70Y/eti4lbVYaha3jJQFSjyOWbi2y LtNYyDu9tZ9UrLNxm8b1aowiMFDeFNRl6XFndRAqN2rh14h3pHQQ9p+A7DoDzAtqYnd+ Ak+FJuNr2kqSo6VHsrKdDAIRz3W+/vimLJZHy7+avKaa94+EoIJDKEB8k85F6E4SQT0S nflqNwjAgn+G9yy+2WMzoeNTSFGWQOi87oD0iKE1nrfmDnaZY8L3oH20QptjhT8xH9J3 K5sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531759; x=1747136559; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gMCZkyRZidUrNwX5Cx9PhWIRQc02z6irI9+xxc34niE=; b=euZQcLxkw2ia/rJIFBiYSgky1GodHcC++tlkEA+3kxMJ8vpOw7/ylK1ObptbwnmZbz R0cWbWHKpy1Wc1cQatiOlchpfqE2k7+IYIAxfhM7jMaLmOnqaA8bW4jGbrljM84a383H bW98Zy9HwFziMNe2TNk7IW5eLr5AE6g0IHUC3xp47bsLe13WbEyUCAnFm5UKcbFclIYM FN7uu44YZU+Hx2DD0enCpEqzKW3Dhibeh5hQFkIAGWrOio3RJ5m2jF0qvEQlER+eK7Dz JYvDzRuqVRyXn5mo6A7gmlmBpOlCsQ6gp5Vs9zxUfu4lCx3XFmNYm4BtjcQgSGmMgwjC OK7Q== X-Forwarded-Encrypted: i=1; AJvYcCUJg7sppp49DSjEOd0Wqh3CM5mgqk/1UnIHG+dLtt2ljniJYa/jOhwEyjlp8ZliE+fPLuYHtfD/1+s0zWw=@vger.kernel.org X-Gm-Message-State: AOJu0YzKMCoAz17lIJNK5Dg30YQjSfL95jHs23v/rWqltD8z/zXOpWgH prqpiekyJgTqZwy2qVu0BeqCqMN9oqPQEDniqgUpEdIe1UzPTPA5fof4c3zHGSY= X-Gm-Gg: ASbGncuQzz7/VQEKbDXbBDLcfVgZyez7CrxOwE7ClOyhH3MuVvY342OeKK/QTBCMwpm fcNQAvzWD95kIlTv66N0V/WyEp/liWUuoyXpaxikcEwVVoarSX6qlRqsskBNQQbuVxPAkp1VE6w T/s/ax9b2MHypSbTDtchhwsCzNG1Y+7Q0xXDwhRTVzO/pSA8jddxKi3EPvwDpuj2bnw2mNp++M4 cItUe32yZn0L5LzL4Y3C5QID2I4wxN7AmOdhMW/hjurwwe00Hw+o4gnsYbkacz8YC1eQhxRvWK9 z2XVlb1X9SKJEhFzNHAQkvjCO0HejP9XXvSHUbgN0JUsSLU= X-Google-Smtp-Source: AGHT+IEqsmZ/YIUi8UcU8BFnJER1OGJ/WDZQZct9hbwqvalINWwYx3zLaSDOzEHLPrVfQzLWtlkByQ== X-Received: by 2002:a05:6000:1787:b0:39e:cbe3:881 with SMTP id ffacd0b85a97d-3a0ac0cb3afmr1864442f8f.12.1746531759068; Tue, 06 May 2025 04:42:39 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:38 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:37 +0100 Subject: [PATCH 05/10] KVM: arm64: Add trap configs for PMSDSFR_EL1 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: <20250506-james-perf-feat_spe_eft-v1-5-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 SPE data source filtering (SPE_FEAT_FDS) adds a new register PMSDSFR_EL1, add the trap configs for it. Signed-off-by: James Clark --- arch/arm64/kvm/emulate-nested.c | 1 + arch/arm64/kvm/sys_regs.c | 1 + 2 files changed, 2 insertions(+) diff --git a/arch/arm64/kvm/emulate-nested.c b/arch/arm64/kvm/emulate-neste= d.c index 0fcfcc0478f9..05d3e6b93ae9 100644 --- a/arch/arm64/kvm/emulate-nested.c +++ b/arch/arm64/kvm/emulate-nested.c @@ -1169,6 +1169,7 @@ static const struct encoding_to_trap_config encoding_= to_cgt[] __initconst =3D { SR_TRAP(SYS_PMSIRR_EL1, CGT_MDCR_TPMS), SR_TRAP(SYS_PMSLATFR_EL1, CGT_MDCR_TPMS), SR_TRAP(SYS_PMSNEVFR_EL1, CGT_MDCR_TPMS), + SR_TRAP(SYS_PMSDSFR_EL1, CGT_MDCR_TPMS), SR_TRAP(SYS_TRFCR_EL1, CGT_MDCR_TTRF), SR_TRAP(SYS_TRBBASER_EL1, CGT_MDCR_E2TB), SR_TRAP(SYS_TRBLIMITR_EL1, CGT_MDCR_E2TB), diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index 005ad28f7306..bda6195d7586 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -2950,6 +2950,7 @@ static const struct sys_reg_desc sys_reg_descs[] =3D { { SYS_DESC(SYS_PMBLIMITR_EL1), undef_access }, { SYS_DESC(SYS_PMBPTR_EL1), undef_access }, { SYS_DESC(SYS_PMBSR_EL1), undef_access }, + { SYS_DESC(SYS_PMSDSFR_EL1), undef_access }, /* PMBIDR_EL1 is not trapped */ =20 { PMU_SYS_REG(PMINTENSET_EL1), --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.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 7571527CB0F for ; Tue, 6 May 2025 11:42:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531764; cv=none; b=UXGmzrOUcX3oUcUPeUfGxUqQ+7GpPI1G1rIR96MJWopO7A3E7ECHT18exNDA9JYpLRradYsYrYD2gW0gi2qLWiG5hbUFxz2OW7/BGdyVWw9wZosgh+THN3EvsqK059RDuEoiIBuescsITfkXbtlGfiFpAzRpU1LtRRbynz0CO+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531764; c=relaxed/simple; bh=1Orlrzff9rVR0JZWyMg++jiq5IsyuYfqKzNJU/EyCi0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R5izSzMfAiXyYM4Dns59Sj2XggCKy3UjnPgsiirq7U8VUXJhyE919puamFchDbbTLBrR0qquYCvnu1p6O6hvX0YYQMBGEvVKphj+3L9ng87LNNb7YteY78C8ebKr2zVzoRJxapODOmicHTd2o+egk8kkzFB1FvjcTb+srWeVPUQ= 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=naVGkR5w; arc=none smtp.client-ip=209.85.221.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="naVGkR5w" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-39ee651e419so2906156f8f.3 for ; Tue, 06 May 2025 04:42:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531760; x=1747136560; 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=NIZcQ6bjIvx3LOuJqJtvWPXqPFlWznoYfJ+QWY9umw8=; b=naVGkR5wXITAX+DRXH0/HMatroPp4sFAvgLKQDW+YyMzQgomcYaXm134m/E45LwtUK 4g1+g7CyG8dGp5hKm5spYNAhLDlagNf8X3ghRt2IxWKaHt4NvX/7k2ihTdu9L9crfoiF lcYCWwFGfZ8oMmHMRR0XneEMGWORapIk/nhvYylxBM0E/gmKmC3zUtq+rfsnO49nja5X rvrpbZq9iVRzcVgZtts+hAyvR6UOODQPZqiMwY4/15qmjvvtD88kvPNTY2EQo352vL0V 2KATzbUInukqyBz1OXwMZapXIenpZ8fiiczwJ6kxgG0jSy5uyarvJEHJyhZInR26R9y4 D85A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531760; x=1747136560; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NIZcQ6bjIvx3LOuJqJtvWPXqPFlWznoYfJ+QWY9umw8=; b=wJzFL7ToF39GacY70lBLLUJnUxIRAPeN5yR294rrbnnR91mL52zliCS9fHptbejDBz cPdopT8a7QQn1tOEtOuh803nqQEXcPnUTlFaAk8bpIwN9sSgPz3BcnIvJWDdu8fQNobn 2mlPdODe13zsGhZhN5rwtD9bgXXOiXn/LqQKJn9IsQDrV0tYCW16TCKKYC1+2vFsisLJ XduKSzT6PqbUqmY34ya72Dtm2R4rsg3yj02bRX91kz7jJtDu3jPUaaqQ/T0YUWywhMEo N/A84k0Nv+hygP/chf3dzXIrHyfxDGbpwF063Fch5IZC4xEa1i1Gw8z+jLCYSSgG+Qe0 0d5w== X-Forwarded-Encrypted: i=1; AJvYcCVNsjaYiZOYn9kDudhF6CWe1v6OW3wgQ1AZnK/JdXzxq63MNB1O6OyV/tMCDLW7hCjSN/gs1KsM5yvvoNE=@vger.kernel.org X-Gm-Message-State: AOJu0YyEiOcu4E9BKwSG6gn4ukhG5Q1fhoLkuBDUpo/igLpt8NhN95T1 CfZ8bmbPo4VQPui6NzUGlnj1l0nc+2l4nrXi+uDh0DlmVa5w/xpJT3MG8jutjbc= X-Gm-Gg: ASbGncurifBvYwX3J9+gZwA4O015x6mbT80gTIEPLRi7uJ/rn1+zgk+6sW8lhUMDttq ulEtgAa1r1JE8xfAhj0BkyE28HsJLK+4cx7OkD/fmGL4Cgf/XpccZZEmRLIUanpzf9N0jDA010f Wrq4+FvL1LiWvNyIJzkMFBzeYh/kQK5rIRMOzb4hssN28rGrH5o+UASnB0j89SlTrXlSlBvcon1 90H4gca3N0YV/iQwoKCjBH3vb8sF6cgO6ce4KZTnaIw1GuBbBkLn4zUoQC45ltb6sWdB/8Qs1Nr P3yAPYO+uFHnjwJEq7JixrWyyLv4SQvq5DyiUxs48irYgDk= X-Google-Smtp-Source: AGHT+IFOd1IsGOuUERaKBF17xqjJD9v+resYFgda6lTrrEteCoMMOKMSD17uDHezFeocGMqRKvBkWQ== X-Received: by 2002:adf:e6c8:0:b0:3a0:b1de:1be0 with SMTP id ffacd0b85a97d-3a0b1de1dacmr1217177f8f.31.1746531760579; Tue, 06 May 2025 04:42:40 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:40 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:38 +0100 Subject: [PATCH 06/10] perf: Add perf_event_attr::config4 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: <20250506-james-perf-feat_spe_eft-v1-6-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 Arm FEAT_SPE_FDS adds the ability to filter on the data source of a packet using another 64-bits of event filtering control. As the existing perf_event_attr::configN fields are all used up for SPE PMU, an additional field is needed. Add a new 'config4' field. Signed-off-by: James Clark Reviewed-by: Leo Yan --- include/uapi/linux/perf_event.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_even= t.h index 5fc753c23734..c7c2b1d4ad28 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -379,6 +379,7 @@ enum perf_event_read_format { #define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */ #define PERF_ATTR_SIZE_VER7 128 /* add: sig_data */ #define PERF_ATTR_SIZE_VER8 136 /* add: config3 */ +#define PERF_ATTR_SIZE_VER9 144 /* add: config4 */ =20 /* * Hardware event_id to monitor via a performance monitoring event: @@ -533,6 +534,7 @@ struct perf_event_attr { __u64 sig_data; =20 __u64 config3; /* extension of config2 */ + __u64 config4; /* extension of config3 */ }; =20 /* --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 9DA4527CB30 for ; Tue, 6 May 2025 11:42:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531765; cv=none; b=Z+ZJ3AlWz7YMy5N98nsi+KJknJLrb2GnPRm3cC4ZgkwjoGBg9Jh3zmlJyLgIcoUXs/4rLqApk+xal63mg+ZKXRXREau1p3mcsZ0dpiVGR/EbEpPX5+FF+4TgaywlLTDgD1KQNDvhrtj+XHVeU9o65loeWUGI+RSIJSPyYZX5ZbE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531765; c=relaxed/simple; bh=65WNjh5z2WnExcihMO64dr2NcDoeIVLE/pLpYlBMNhQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ttI4y+M8ILsAkRJH8wcy3hZUeYDsxn/MewvXm8Dq3JjJ889fJs7kjfjwSZi/NL+At2rcUqDmU4ydLwp/zKTDVecqSAGLmjE3neVOpiDNxgkrVAohaWjLTUlO5Ms0vSYc7YQTw2Pls9J4j8GMCDcqlrPJNTG9T36VF7XRx9QIarw= 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=GM1lZc31; arc=none smtp.client-ip=209.85.221.49 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="GM1lZc31" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-3995ff6b066so2627287f8f.3 for ; Tue, 06 May 2025 04:42:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531762; x=1747136562; 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=EjL0Hshoir2IbDDqSPKjm3LlUhn+PZo2xvFHRbzRL1w=; b=GM1lZc31ZldLKnf8QrBtn4EPGJBtvDX8LkWFhR5/aaj8jZ1fsSEaKn55r09liZk+Yu RHVJjSVgYwtYeYD1DQiqc7xv5huqIv6CjFjcVAhbQmKhVMJ6If59cex7LXcdLFUj3A6e GflzNS9aiUofraGIV9hMByPF/JHUHEcM7AWi1GprnU6VVd4nt0s7Ej3y9OXdpT/qf7gY Dia6yIwm1ES6lfzNuc+QNQ6XyjUwvzaOk1NNyliGI7eyt0F6AlvxgmzLXE1utMemoTB9 84701KPT3AEsZeQrrVr6ajtSPg5+CG+7/7wy1/KqH1cVTucSIDqaQM6/7Td+uXgjhTjH qLmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531762; x=1747136562; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EjL0Hshoir2IbDDqSPKjm3LlUhn+PZo2xvFHRbzRL1w=; b=Eva2p4/NqNqZh6LazAokgCE0YHtsDwVU4VAhUYA1Y0fb/9vsjQmikwuQfRImvd/iJl OwpPxwHEoD1rXuJd0FLsldOJl67DpdvRC/WQOVxaCUcgaFh2jjAwnu31ZyeL2CiX3D3B JqXpvCjhE4uWeEMzRi5DmzKcIXXYZ1EoyavUdHHPboab/la8fliUgWpWzFlBXEIZxdS4 qCI7KFW5GO2TQP5dgeI9OuNxkTX9ZP5DTKP3UoMgfyRHnpLu87CzlssHDBtgtlWfX8Jm 4GKmUBPnahdDzAOBvF9Fg/bqahvQfYO1O3o9DJ72KkhI7uwVTpBo6gsIUWbJCORT9OFM uRtQ== X-Forwarded-Encrypted: i=1; AJvYcCWyrcJXrLwyblHkmgh/GvAR373FztculFXA70yw2dGoyN1LSJGzJCy2j/ypIfRHYdYtJqgflAqAPJMnV38=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9xcw6XlRZK8oQRUT3MZ/9nDQQP4mgHeAzBpjfOgJrjN49EZPZ l6WTpskwfQsT3XMOfjUZ/Ee9InFO3sfY+/AZigTMptgtwkDDl1GoDv/UWWJlYzI= X-Gm-Gg: ASbGnctxQ6z8nWKqHEeIDzAXcyfKas5GZt6nchRYZfhl/GOfljOCZyoTp86upaKLpIn /kiw1K/oCGnMEAhi0PoMJ7jZ+dZYn+nIH+PutX/EYqef5OXODMChBBcq5nls3wIwdEcc3xGyoqW SkwpfRD9TJ3EKJjOKyJ8zYWoBFUJ+bBcCoZ9Hh6iYbxOThaOXFil7YX2GcFo+pOFAFpmb8NOlM2 pO1MWOCUbNfno43M/1eRSrijkoSha8C473lA4p40wRY+xzjxrQK7eBCD91dvX2r9RDwTiA1x6Bv loTZiHXMQYIKEXD+/wAH9uXoZMmYir1ScwQWVl8RFdwIsug= X-Google-Smtp-Source: AGHT+IHpWiyRrtD8sJFVaNpdcW4rw8HMIdjnVXkaf7syZm/CG55NgxTsXPzAr1wt+ksksXMoEAx3GA== X-Received: by 2002:a05:6000:1869:b0:3a0:9f24:7748 with SMTP id ffacd0b85a97d-3a09fd7a70fmr7363837f8f.23.1746531761933; Tue, 06 May 2025 04:42:41 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:41 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:39 +0100 Subject: [PATCH 07/10] perf: arm_spe: Add support for filtering on data source 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: <20250506-james-perf-feat_spe_eft-v1-7-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 SPE_FEAT_FDS adds the ability to filter on the data source of packets. Like the other existing filters, enable filtering with PMSFCR_EL1.FDS when any of the filter bits are set. Each bit maps to data sources 0-63 described by bits[0:5] in the data source packet (although the full range of data source is 16 bits so higher value data sources can't be filtered on). The filter is an OR of all the bits, so for example setting bits 0 and 3 filters packets from data sources 0 OR 3. Signed-off-by: James Clark Reviewed-by: Leo Yan --- drivers/perf/arm_spe_pmu.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/perf/arm_spe_pmu.c b/drivers/perf/arm_spe_pmu.c index 9309b846f642..d04318411f77 100644 --- a/drivers/perf/arm_spe_pmu.c +++ b/drivers/perf/arm_spe_pmu.c @@ -87,6 +87,7 @@ struct arm_spe_pmu { #define SPE_PMU_FEAT_INV_FILT_EVT (1UL << 6) #define SPE_PMU_FEAT_DISCARD (1UL << 7) #define SPE_PMU_FEAT_EFT (1UL << 8) +#define SPE_PMU_FEAT_FDS (1UL << 9) #define SPE_PMU_FEAT_DEV_PROBED (1UL << 63) u64 features; =20 @@ -232,6 +233,10 @@ static const struct attribute_group arm_spe_pmu_cap_gr= oup =3D { #define ATTR_CFG_FLD_inv_event_filter_LO 0 #define ATTR_CFG_FLD_inv_event_filter_HI 63 =20 +#define ATTR_CFG_FLD_data_src_filter_CFG config4 /* PMSDSFR_EL1 */ +#define ATTR_CFG_FLD_data_src_filter_LO 0 +#define ATTR_CFG_FLD_data_src_filter_HI 63 + GEN_PMU_FORMAT_ATTR(ts_enable); GEN_PMU_FORMAT_ATTR(pa_enable); GEN_PMU_FORMAT_ATTR(pct_enable); @@ -248,6 +253,7 @@ GEN_PMU_FORMAT_ATTR(float_filter); GEN_PMU_FORMAT_ATTR(float_filter_mask); GEN_PMU_FORMAT_ATTR(event_filter); GEN_PMU_FORMAT_ATTR(inv_event_filter); +GEN_PMU_FORMAT_ATTR(data_src_filter); GEN_PMU_FORMAT_ATTR(min_latency); GEN_PMU_FORMAT_ATTR(discard); =20 @@ -268,6 +274,7 @@ static struct attribute *arm_spe_pmu_formats_attr[] =3D= { &format_attr_float_filter_mask.attr, &format_attr_event_filter.attr, &format_attr_inv_event_filter.attr, + &format_attr_data_src_filter.attr, &format_attr_min_latency.attr, &format_attr_discard.attr, NULL, @@ -286,6 +293,9 @@ static umode_t arm_spe_pmu_format_attr_is_visible(struc= t kobject *kobj, if (attr =3D=3D &format_attr_inv_event_filter.attr && !(spe_pmu->features= & SPE_PMU_FEAT_INV_FILT_EVT)) return 0; =20 + if (attr =3D=3D &format_attr_data_src_filter.attr && !(spe_pmu->features = & SPE_PMU_FEAT_FDS)) + return 0; + if ((attr =3D=3D &format_attr_branch_filter_mask.attr || attr =3D=3D &format_attr_load_filter_mask.attr || attr =3D=3D &format_attr_store_filter_mask.attr || @@ -406,6 +416,9 @@ static u64 arm_spe_event_to_pmsfcr(struct perf_event *e= vent) if (ATTR_CFG_GET_FLD(attr, inv_event_filter)) reg |=3D PMSFCR_EL1_FnE; =20 + if (ATTR_CFG_GET_FLD(attr, data_src_filter)) + reg |=3D PMSFCR_EL1_FDS; + if (ATTR_CFG_GET_FLD(attr, min_latency)) reg |=3D PMSFCR_EL1_FL; =20 @@ -430,6 +443,12 @@ static u64 arm_spe_event_to_pmslatfr(struct perf_event= *event) return FIELD_PREP(PMSLATFR_EL1_MINLAT, ATTR_CFG_GET_FLD(attr, min_latency= )); } =20 +static u64 arm_spe_event_to_pmsdsfr(struct perf_event *event) +{ + struct perf_event_attr *attr =3D &event->attr; + return ATTR_CFG_GET_FLD(attr, data_src_filter); +} + static void arm_spe_pmu_pad_buf(struct perf_output_handle *handle, int len) { struct arm_spe_pmu_buf *buf =3D perf_get_aux(handle); @@ -788,6 +807,10 @@ static int arm_spe_pmu_event_init(struct perf_event *e= vent) if (arm_spe_event_to_pmsnevfr(event) & arm_spe_pmsevfr_res0(spe_pmu->pmsv= er)) return -EOPNOTSUPP; =20 + if (arm_spe_event_to_pmsdsfr(event) && + !(spe_pmu->features & SPE_PMU_FEAT_FDS)) + return -EOPNOTSUPP; + if (attr->exclude_idle) return -EOPNOTSUPP; =20 @@ -857,6 +880,11 @@ static void arm_spe_pmu_start(struct perf_event *event= , int flags) write_sysreg_s(reg, SYS_PMSNEVFR_EL1); } =20 + if (spe_pmu->features & SPE_PMU_FEAT_FDS) { + reg =3D arm_spe_event_to_pmsdsfr(event); + write_sysreg_s(reg, SYS_PMSDSFR_EL1); + } + reg =3D arm_spe_event_to_pmslatfr(event); write_sysreg_s(reg, SYS_PMSLATFR_EL1); =20 @@ -1116,6 +1144,9 @@ static void __arm_spe_pmu_dev_probe(void *info) if (FIELD_GET(PMSIDR_EL1_EFT, reg)) spe_pmu->features |=3D SPE_PMU_FEAT_EFT; =20 + if (FIELD_GET(PMSIDR_EL1_FDS, reg)) + spe_pmu->features |=3D SPE_PMU_FEAT_FDS; + /* This field has a spaced out encoding, so just use a look-up */ fld =3D FIELD_GET(PMSIDR_EL1_INTERVAL, reg); switch (fld) { --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.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 15BB827CCF9 for ; Tue, 6 May 2025 11:42:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531767; cv=none; b=RiKueWKCPICAnqQNPRP/+p16ld45FBr2Nax+Wb6H1cTwk4q+D7GCph29nOaFGHHT8OoO844xXTR5/QFAIypXxv1wxPXaPFcMKHKPZ4cqThhN5xkSd/gAikouDF0+jiZ5hu8wx2OrNsiAtuN2KkB4P9btDwdbuPkp6sqObHHqFkY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531767; c=relaxed/simple; bh=8OmkHkCGDObescNOkagm9A47Swwu3NytmSXnqZHoHGA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Hq+Lw9Icy1vNY1KJdlK56VVQFOXBSPDiYgvurXzfMlfQ5YkopdnMNHFm95KlJWGhpwsCRdmi0MJvZQ9vgtCKSpu0mQsyPCZCF9jXwP/r5J43T1k8Ru7J/KrWbk3ziMld8dVR1pvinhPerwg/Bq7fXuvdjJ9VoRT0wIxySSyeHY4= 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=TBuZ8Uyx; arc=none smtp.client-ip=209.85.221.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="TBuZ8Uyx" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-39141ffa9fcso5935441f8f.0 for ; Tue, 06 May 2025 04:42:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531763; x=1747136563; 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=gfK4D8WXXHfk2zwldWwUzY+IJqnsgpS7YeB5hPDSAiU=; b=TBuZ8Uyx7arDpv7h3pSq+sMHhJoH3aHoOUQBmrp5wr3IuvoGb41tap7KUYcTALTu0e s4V4FC2vY2xDFHpRulSYfIlB+Xc26fq1soeNjaIzofgGCipD+1xwIatkDJJ/aA+FdxsX GpLZmbTheiYMtZy+WiY5CYqlYJFEM+Y1yJtygAgV7vgTBBZ6ny+Vk7h00hlmbFlI6sQU ETZDe/cXBdDEQ4XlsFqlIdiYVSRlh6fXsNDqoeNRLcfIXKkY1PLMH3HKWYXd+/a7JIkm nCuCTLfHFNHPXrKa93wM9hsCkMVd2vL8OTgFOlGuliGxkIvJUkJw1bk2XcXsuNTIF5qB +Wfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531763; x=1747136563; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gfK4D8WXXHfk2zwldWwUzY+IJqnsgpS7YeB5hPDSAiU=; b=hAVSNXrZWv/6EIkDungRZyFn77s8Z3vXgmuHAZw7hG3FBQydR8CvGId5m6aeoeZqUn 5LIN30gWwQOMvWcdaqEqNAammLto5WBz1VLsYi2EkXbOFaMdomd3bzMIRWJVETsPeBeU VzvpZIFcO28ZB+qvzyL1Dc/8jKTMCg0Ew7kpFXNsm5xJ4GP6UW1aQS3OEU6VliVaXDy5 rM2XMdXn2PtV2/14+OoGBqAQZ/yRkgCH7yeG8act3ZCxWVV7a2m73E89e+Cc7IEo24C/ 1j1fiIJGAQdB27DlE4SjrcV8AIqGWtueH0W8la5HZ0TeyNNEDTW4kVMUGnkfeqXzmFIi zO3A== X-Forwarded-Encrypted: i=1; AJvYcCXtpYp0PPTtpVcwk+vALKV6B/6hRjAwICMbgMuKn/87Vgck0G7TxPW7FwUs7apH+GRSp1/KHegX7ciGgAc=@vger.kernel.org X-Gm-Message-State: AOJu0YwAMgnrsXWdXgGzrLUC+ZfXz0GLD4gNfS3eF3hilJNAC1tuzh9F xiER48neu8Y2SGNHgc2edgDl6xxxk7KCmcS9fnara4qMMC9SqtfeBLLob2sB1G0= X-Gm-Gg: ASbGncua8LV9gZpRG7kGmzh82oJnYCvTItmZIU6LOhX6k+1G/2NvOWmFiCXbebD8IRu p2i3n1mib/r9RI3qo14nfrOJUeRHDL1z7oC9Hv87efiFozdNSZWN/2FSQg+or89YLAljr+hBDXK OCm7mMUUQNKZFwsW2LHAPIOt9RWcoxeQQnYuj060b+MuV866EsYY3Md7uZL8jbdxIXZy/grb660 wAvzs3RJfLPZPpR2eSDjzqLS+KOR6fN0GnL4eyq4MgjdEcFLW57rNZD/mBXWoMJxqB2Zr56LlRj deiM7vq8j91cn41PW6lF5NXYTjfsnpkpOPEZIsFnqYIR6iKXaDlH3s/cIA== X-Google-Smtp-Source: AGHT+IFxzoHVTs85nB/2QCYX1+sgmEItPPt1ggabHpBdb5kgred/4/pK2CDSumpwJgEYOUOvr/4oog== X-Received: by 2002:a05:6000:2407:b0:3a0:82d1:f3c2 with SMTP id ffacd0b85a97d-3a0ac0cb13fmr2410966f8f.10.1746531763203; Tue, 06 May 2025 04:42:43 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:42 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:40 +0100 Subject: [PATCH 08/10] tools headers UAPI: Sync linux/perf_event.h with the kernel sources 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: <20250506-james-perf-feat_spe_eft-v1-8-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 To pickup config4 changes. Signed-off-by: James Clark --- tools/include/uapi/linux/perf_event.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/include/uapi/linux/perf_event.h b/tools/include/uapi/lin= ux/perf_event.h index 5fc753c23734..c7c2b1d4ad28 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -379,6 +379,7 @@ enum perf_event_read_format { #define PERF_ATTR_SIZE_VER6 120 /* add: aux_sample_size */ #define PERF_ATTR_SIZE_VER7 128 /* add: sig_data */ #define PERF_ATTR_SIZE_VER8 136 /* add: config3 */ +#define PERF_ATTR_SIZE_VER9 144 /* add: config4 */ =20 /* * Hardware event_id to monitor via a performance monitoring event: @@ -533,6 +534,7 @@ struct perf_event_attr { __u64 sig_data; =20 __u64 config3; /* extension of config2 */ + __u64 config4; /* extension of config3 */ }; =20 /* --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.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 20A2127D78D for ; Tue, 6 May 2025 11:42:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531769; cv=none; b=H321+BOv2Hx/frgnwVqPduWg0wrgImF7qiOtAs9XMp92YRXUX1fZijEfEMbugvAsYtm8xanQJTjGMoFU142t9aaZFVrhvAWe/3hYgeMiBXN1P2qCHf9hEPOpWTCba/k6FhvIxkwQunntJKKYk/gniOJKdLitVlFWt9wdwVQxBcY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531769; c=relaxed/simple; bh=3jckaXXl4+Ky+GDtbuM6CpXXPW/56+PP5UQ6JOG1jhk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NNlp7IvAKH78L5ZfpzcVvkdXyYDnGTeoNCzJg2+vJl4YGHHK4kJELDW3lHqBqkbZid7dhBB2eZwU9A+IGM0zvy5rRlG60V2ecv36loyucec6cyUBNgB8nsJapuL8YNrjSwo4f4LuJJiBH3WZ3N+bUS86xNkLddHZ76f3B7+LRss= 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=crSUsknM; arc=none smtp.client-ip=209.85.221.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="crSUsknM" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-39c13fa05ebso3423374f8f.0 for ; Tue, 06 May 2025 04:42:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531764; x=1747136564; 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=PYAEfE/9FBteAebOm2v05JfB5Qfap1wkkuURbt+yBIg=; b=crSUsknMRgXEV6SO6Sn2O+iV/KQl4A5RaFJ8OFGtRvgpSEfir5dFTe9IxPw+49T1BG E5LMSnjd6lCGO085aEHWwLRHzwai8fBwsCzr4sXvvfR6UX9pNZb0GTniFK0nuKGZXSAc yIfds1dasl49Lmud086utBJwetD44UylmH12wOzvBp43Hvh6Ga7bodG/FJew0NcOyw1G gPzbrlfwUNqmFtaiB6bq8kBKBRcIAWJUck9khUMN/FpCUiy5oiF2Ivgse2Ujzs3Ls/Cj 9Hq2LyMMu6wzVXTKoIcFwIAPwoPgPq5mM80G7hJ0CHZZH4DSA9lpAY7fozJJun84eXNS AQQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531764; x=1747136564; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PYAEfE/9FBteAebOm2v05JfB5Qfap1wkkuURbt+yBIg=; b=cFbXDixcfXHeCn81xD469KU322p31r1GxolkAuzRf8GD/DGYIIqgizn41+t6Ow3taj mYyW8BbdTYt4mgremaTfLScz1LnKAngn51ecCMqTKyrJ9OEl0Hn2xmP8jjhmjPi2arvj QfFCSFooW4J0XWCAUEkyGYeE/Dsu/zN30yJKDLRFlzhnUstOL6kMiRZHtT3qixXSZb9C gF7C654Aexm8oPIC8UeL8VqdTatN96/Ep8uqD+y7qfvxteB2FCQ1vZ3DzC9ljgiBr0xg LRA59cGeTIGFNGxPAc1MUC6k1SzyU0lhcsdV484QlAqqND/AfmqlTlNfUV0WPgZqtQrb l1cg== X-Forwarded-Encrypted: i=1; AJvYcCV01k+L28WeLV34bQvxqkOOAoRt93OfNp3NgL6KB1RUaLUy/C1ERSFZqVlGfKcpqOv9fwfK1zxikUYP4xg=@vger.kernel.org X-Gm-Message-State: AOJu0YyOc8n8KNv0FJVIglacRXExOJWiTtQeAYb1uLhZ9P9w6dMyTdqp CpG9DFAiHes24xXVx96IH/Bm3o3eSVPizFtyrD4PnFaia4fGeTnpIBp3t7Vwaaw= X-Gm-Gg: ASbGncuBcO0Wq2M1WFtq7kZQwQLR0y3dagedTGcoMIncALbZwm/CEZ3J5WvMuYcGpcZ X4rfesdDJ/pLO/pCkQ24Rag/mxAJixDD+KouhM0LpkzwfKG6WwL/s7oLHY40oBoefBqBLKnQdnp TECGFJgNj92qAcGujq13fsRrv9a2ut580lHnDxVfhinK5UIffeMhLMCbrpSYQg8x+CMTzl3SYcS ft/oKgpRoSKtomrD8k7vcd22lJQzPoKRGPpqZ9/yblSpbqLLGtoqOSsYxjnoCfRverak9UHKJvo i0ybDZ2NeUAV0re2wD0nWmJPJC4DCjG5qq8Pv1XNbqJ6MOQ= X-Google-Smtp-Source: AGHT+IFQ2JTWwoxwIXrjoruUdsPwI8vW3JX1LtZAIkilV7YOBYnZOgxCGJbWEt0SH3QdtOoeDv42Tw== X-Received: by 2002:a05:6000:2483:b0:39c:1257:c96c with SMTP id ffacd0b85a97d-3a0ac3ea5ebmr2296006f8f.56.1746531764463; Tue, 06 May 2025 04:42:44 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:44 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:41 +0100 Subject: [PATCH 09/10] perf tools: Add support for perf_event_attr::config4 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: <20250506-james-perf-feat_spe_eft-v1-9-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 perf_event_attr has gained a new field, config4, so add support for it extending the existing configN support. Signed-off-by: James Clark Reviewed-by: Leo Yan --- tools/perf/tests/parse-events.c | 14 +++++++++++++- tools/perf/util/parse-events.c | 11 +++++++++++ tools/perf/util/parse-events.h | 1 + tools/perf/util/parse-events.l | 1 + tools/perf/util/pmu.c | 8 ++++++++ tools/perf/util/pmu.h | 1 + 6 files changed, 35 insertions(+), 1 deletion(-) diff --git a/tools/perf/tests/parse-events.c b/tools/perf/tests/parse-event= s.c index 5ec2e5607987..5f624a63d550 100644 --- a/tools/perf/tests/parse-events.c +++ b/tools/perf/tests/parse-events.c @@ -615,6 +615,8 @@ static int test__checkevent_pmu(struct evlist *evlist) TEST_ASSERT_VAL("wrong config1", 1 =3D=3D evsel->core.attr.config1); TEST_ASSERT_VAL("wrong config2", 3 =3D=3D evsel->core.attr.config2); TEST_ASSERT_VAL("wrong config3", 0 =3D=3D evsel->core.attr.config3); + TEST_ASSERT_VAL("wrong config4", 0 =3D=3D evsel->core.attr.config4); + /* * The period value gets configured within evlist__config, * while this test executes only parse events method. @@ -637,6 +639,7 @@ static int test__checkevent_list(struct evlist *evlist) TEST_ASSERT_VAL("wrong config1", 0 =3D=3D evsel->core.attr.config1); TEST_ASSERT_VAL("wrong config2", 0 =3D=3D evsel->core.attr.config2); TEST_ASSERT_VAL("wrong config3", 0 =3D=3D evsel->core.attr.config3); + TEST_ASSERT_VAL("wrong config4", 0 =3D=3D evsel->core.attr.config4); TEST_ASSERT_VAL("wrong exclude_user", !evsel->core.attr.exclude_user); TEST_ASSERT_VAL("wrong exclude_kernel", !evsel->core.attr.exclude_kernel= ); TEST_ASSERT_VAL("wrong exclude_hv", !evsel->core.attr.exclude_hv); @@ -813,6 +816,15 @@ static int test__checkterms_simple(struct parse_events= _terms *terms) TEST_ASSERT_VAL("wrong val", term->val.num =3D=3D 4); TEST_ASSERT_VAL("wrong config", !strcmp(term->config, "config3")); =20 + /* config4=3D5 */ + term =3D list_entry(term->list.next, struct parse_events_term, list); + TEST_ASSERT_VAL("wrong type term", + term->type_term =3D=3D PARSE_EVENTS__TERM_TYPE_CONFIG4); + TEST_ASSERT_VAL("wrong type val", + term->type_val =3D=3D PARSE_EVENTS__TERM_TYPE_NUM); + TEST_ASSERT_VAL("wrong val", term->val.num =3D=3D 5); + TEST_ASSERT_VAL("wrong config", !strcmp(term->config, "config4")); + /* umask=3D1*/ term =3D list_entry(term->list.next, struct parse_events_term, list); TEST_ASSERT_VAL("wrong type term", @@ -2451,7 +2463,7 @@ struct terms_test { =20 static const struct terms_test test__terms[] =3D { [0] =3D { - .str =3D "config=3D10,config1,config2=3D3,config3=3D4,umask=3D1,read,r= 0xead", + .str =3D "config=3D10,config1,config2=3D3,config3=3D4,config4=3D5,umas= k=3D1,read,r0xead", .check =3D test__checkterms_simple, }, }; diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 5152fd5a6ead..7e37f91e7b49 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -247,6 +247,8 @@ __add_event(struct list_head *list, int *idx, PERF_PMU_FORMAT_VALUE_CONFIG2, "config2"); perf_pmu__warn_invalid_config(pmu, attr->config3, name, PERF_PMU_FORMAT_VALUE_CONFIG3, "config3"); + perf_pmu__warn_invalid_config(pmu, attr->config4, name, + PERF_PMU_FORMAT_VALUE_CONFIG4, "config4"); } if (init_attr) event_attr_init(attr); @@ -783,6 +785,7 @@ const char *parse_events__term_type_str(enum parse_even= ts__term_type term_type) [PARSE_EVENTS__TERM_TYPE_CONFIG1] =3D "config1", [PARSE_EVENTS__TERM_TYPE_CONFIG2] =3D "config2", [PARSE_EVENTS__TERM_TYPE_CONFIG3] =3D "config3", + [PARSE_EVENTS__TERM_TYPE_CONFIG4] =3D "config4", [PARSE_EVENTS__TERM_TYPE_NAME] =3D "name", [PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD] =3D "period", [PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ] =3D "freq", @@ -830,6 +833,7 @@ config_term_avail(enum parse_events__term_type term_typ= e, struct parse_events_er case PARSE_EVENTS__TERM_TYPE_CONFIG1: case PARSE_EVENTS__TERM_TYPE_CONFIG2: case PARSE_EVENTS__TERM_TYPE_CONFIG3: + case PARSE_EVENTS__TERM_TYPE_CONFIG4: case PARSE_EVENTS__TERM_TYPE_NAME: case PARSE_EVENTS__TERM_TYPE_METRIC_ID: case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: @@ -898,6 +902,10 @@ do { \ CHECK_TYPE_VAL(NUM); attr->config3 =3D term->val.num; break; + case PARSE_EVENTS__TERM_TYPE_CONFIG4: + CHECK_TYPE_VAL(NUM); + attr->config4 =3D term->val.num; + break; case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: CHECK_TYPE_VAL(NUM); break; @@ -1097,6 +1105,7 @@ static int config_term_tracepoint(struct perf_event_a= ttr *attr, case PARSE_EVENTS__TERM_TYPE_CONFIG1: case PARSE_EVENTS__TERM_TYPE_CONFIG2: case PARSE_EVENTS__TERM_TYPE_CONFIG3: + case PARSE_EVENTS__TERM_TYPE_CONFIG4: case PARSE_EVENTS__TERM_TYPE_NAME: case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ: @@ -1237,6 +1246,7 @@ do { \ case PARSE_EVENTS__TERM_TYPE_CONFIG1: case PARSE_EVENTS__TERM_TYPE_CONFIG2: case PARSE_EVENTS__TERM_TYPE_CONFIG3: + case PARSE_EVENTS__TERM_TYPE_CONFIG4: case PARSE_EVENTS__TERM_TYPE_NAME: case PARSE_EVENTS__TERM_TYPE_METRIC_ID: case PARSE_EVENTS__TERM_TYPE_RAW: @@ -1274,6 +1284,7 @@ static int get_config_chgs(struct perf_pmu *pmu, stru= ct parse_events_terms *head case PARSE_EVENTS__TERM_TYPE_CONFIG1: case PARSE_EVENTS__TERM_TYPE_CONFIG2: case PARSE_EVENTS__TERM_TYPE_CONFIG3: + case PARSE_EVENTS__TERM_TYPE_CONFIG4: case PARSE_EVENTS__TERM_TYPE_NAME: case PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD: case PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ: diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index e176a34ab088..6e90c26066d4 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h @@ -58,6 +58,7 @@ enum parse_events__term_type { PARSE_EVENTS__TERM_TYPE_CONFIG1, PARSE_EVENTS__TERM_TYPE_CONFIG2, PARSE_EVENTS__TERM_TYPE_CONFIG3, + PARSE_EVENTS__TERM_TYPE_CONFIG4, PARSE_EVENTS__TERM_TYPE_NAME, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD, PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ, diff --git a/tools/perf/util/parse-events.l b/tools/perf/util/parse-events.l index 7ed86e3e34e3..8e2986d55bc4 100644 --- a/tools/perf/util/parse-events.l +++ b/tools/perf/util/parse-events.l @@ -317,6 +317,7 @@ config { return term(yyscanner, PARSE_EVENTS__TERM_TY= PE_CONFIG); } config1 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG1); } config2 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG2); } config3 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG3); } +config4 { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_CONFIG4); } name { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_NAME); } period { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_PERIOD); } freq { return term(yyscanner, PARSE_EVENTS__TERM_TYPE_SAMPLE_FREQ); } diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index b7ebac5ab1d1..fc50df65d540 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1427,6 +1427,10 @@ static int pmu_config_term(const struct perf_pmu *pm= u, assert(term->type_val =3D=3D PARSE_EVENTS__TERM_TYPE_NUM); pmu_format_value(bits, term->val.num, &attr->config3, zero); break; + case PARSE_EVENTS__TERM_TYPE_CONFIG4: + assert(term->type_val =3D=3D PARSE_EVENTS__TERM_TYPE_NUM); + pmu_format_value(bits, term->val.num, &attr->config4, zero); + break; case PARSE_EVENTS__TERM_TYPE_USER: /* Not hardcoded. */ return -EINVAL; case PARSE_EVENTS__TERM_TYPE_NAME ... PARSE_EVENTS__TERM_TYPE_HARDWARE: @@ -1474,6 +1478,9 @@ static int pmu_config_term(const struct perf_pmu *pmu, case PERF_PMU_FORMAT_VALUE_CONFIG3: vp =3D &attr->config3; break; + case PERF_PMU_FORMAT_VALUE_CONFIG4: + vp =3D &attr->config4; + break; default: return -EINVAL; } @@ -1787,6 +1794,7 @@ int perf_pmu__for_each_format(struct perf_pmu *pmu, v= oid *state, pmu_format_call "config1=3D0..0xffffffffffffffff", "config2=3D0..0xffffffffffffffff", "config3=3D0..0xffffffffffffffff", + "config4=3D0..0xffffffffffffffff", "name=3Dstring", "period=3Dnumber", "freq=3Dnumber", diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index b93014cc3670..1ce5377935db 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -22,6 +22,7 @@ enum { PERF_PMU_FORMAT_VALUE_CONFIG1, PERF_PMU_FORMAT_VALUE_CONFIG2, PERF_PMU_FORMAT_VALUE_CONFIG3, + PERF_PMU_FORMAT_VALUE_CONFIG4, PERF_PMU_FORMAT_VALUE_CONFIG_END, }; =20 --=20 2.34.1 From nobody Tue Dec 16 15:45:38 2025 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 A9FCE27E1D7 for ; Tue, 6 May 2025 11:42:47 +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=1746531770; cv=none; b=VL/FcNv2XK+8pz6Zla+4/rKlDsdQiG9uANjcCKOKtbEY75N403O/SRX83d12tSl0EP9IftDWY0ypMSLJ/xGutHQBNDAfkzzZREtIWvNh7c0fYqIlIUO+zTMbIwePb4ZywMRRD2hYyxkYM/JFbjT0vs7RV1lL4+mE7fxUjqTv0BU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746531770; c=relaxed/simple; bh=3sMCtIotqVivKM8/Ownc6QdZfz5Z6QLgO4uRyf0+zJ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X1cExTa55JuHqurS36ct6AxF4W5ZaPjBT8s+zsvJHiZovOTmoaSFgXRgDyC9I95jeaWAszgJ5EWdEoCyZMtB1oUR23SN3ZMSpfOH1oS81w6vn25/HW380JkQ8apzQ86VV+o2D+gQ0RNiVoAGHJ8z/i7Zj1Q+Wjex1mHQ9xL5EvI= 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=NF/UOpOR; 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="NF/UOpOR" Received: by mail-wr1-f46.google.com with SMTP id ffacd0b85a97d-3a0b135d18eso226130f8f.2 for ; Tue, 06 May 2025 04:42:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1746531766; x=1747136566; 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=BkqHrlk5rXmqQcmnUyYZSiZOvHTWZlNV/KJqAn/HjmE=; b=NF/UOpOR9/Y1yHivouHxWA1bycM4PJz1GMQW4ZMbBMjkQptY+WJUuyPp6DrscHkgjK lus9ZUr2ptqsPJ5IOh1cJCxZ4NLQCLonGHLtPjHeBxATzD1BpO29sRrCWIzaDJi17mAq U8tURzjpS5cYL0vD4HMYoDKAMBJDF3gv/nK9YMexY4T6luEhtPiSlsanKv4dWy36iPeC Jq5XgalsE021B/B6c77gDMolKuroDOunGAWVNmsK6H2s23PiXRrRiG4Bb894bJl8vxL4 Z3i4xSAF+EunxHg8YoVyf+sAkmCjl4TusSlRE0ISqiqZtOr8IwtvBv/qeBrhHv9e+r8C kuEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746531766; x=1747136566; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BkqHrlk5rXmqQcmnUyYZSiZOvHTWZlNV/KJqAn/HjmE=; b=XWs7Oid8toyvddOV1g5n6Ei0Clm1BQE3zaiyMmDs3ouRn0utF9QNq/w75kUXBrT4c3 KB8GCzthYttRbUl4Cb0PQ0jFEJy4vJ3vzozVzS/17jOQIOaxv5oTQcLT15beOiZGFhm1 Le9+ROYMG9MJJvdcvjr9c9t5wUJGGtKO2j0DDTy900BYJTy2gAIApYTYBTae8PWcFQnD b25a1A8rCLM0fZ1z4JbnJeG320D8Ydmjck/nf6FYtljGLfJmREsR4Ire8kYHGJ03+m/T ylbfiayv3w1duQKi87bL3KPTpA/Yw5fXScrWnBKm3p83bLzY2xyboupnpwvFDRBFLORU BlcA== X-Forwarded-Encrypted: i=1; AJvYcCXUMVpgKy7uwPUT1dhnpzdKtEnmDKFLzjThAGuhEa17whF58Ov3ySXvL1UbLd/rFfFs6obdOXPz5WPpeYA=@vger.kernel.org X-Gm-Message-State: AOJu0YxONQR4zRHTPu3xliOT4BLKtRwIieaErkS3YDrgSFnzvvhgzreG PebYCywc4bEJRDlUrzpYli2EbapyEcurLr3b/59UqDGnL8Bzlc4DLDoqJ5LjV1Q= X-Gm-Gg: ASbGnct6Nht08wrtXjgQjefV2eGvZkxDjH/yS0DhLaFKQaFsj2RDSHKEMmQ3ZIg7cZ6 VDhsHhzUc1gxES5FqGaXgVjXXVmda/csJ24wTZuZ6V9rAIhHUvO1PDiSReOI0fLjpJoGyNuZfV1 0TPR45K9/hK/EU1WOYXYrin232P1EXNKzKijbfW8LZfOjj2l26f24S7HNpdbfxOZu6u41IWvM2v kreXdhVBZeMeoOc+KDQ9oHMvUgUfPY7rknOonOfk6FtypFkUXfh1lKgfJrgyMKllR0A60dbMXfZ 0J770crWo+1YFZWq4STcOhNEhXXqHoMoKN/BqW7tLu57ZQ0= X-Google-Smtp-Source: AGHT+IGUvZmO1ysjfj2110bUiJ8J7jVXWaXvMQnsa2Hz+uClfkGhq0fClzub1N37FV3ldFVqBc7yhA== X-Received: by 2002:a05:6000:2287:b0:391:3f4f:a169 with SMTP id ffacd0b85a97d-3a0ac0ec06fmr2094137f8f.32.1746531765765; Tue, 06 May 2025 04:42:45 -0700 (PDT) Received: from ho-tower-lan.lan ([77.81.75.81]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a099ae344esm13198473f8f.25.2025.05.06.04.42.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 May 2025 04:42:45 -0700 (PDT) From: James Clark Date: Tue, 06 May 2025 12:41:42 +0100 Subject: [PATCH 10/10] perf docs: arm-spe: Document new SPE filtering features 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: <20250506-james-perf-feat_spe_eft-v1-10-dd480e8e4851@linaro.org> References: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> In-Reply-To: <20250506-james-perf-feat_spe_eft-v1-0-dd480e8e4851@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, James Clark , linux-doc@vger.kernel.org, kvmarm@lists.linux.dev X-Mailer: b4 0.14.0 FEAT_SPE_EFT and FEAT_SPE_FDS etc have new user facing format attributes so document them. Also document existing 'event_filter' bits that were missing from the doc and the fact that latency values are stored in the weight field. Signed-off-by: James Clark --- tools/perf/Documentation/perf-arm-spe.txt | 86 +++++++++++++++++++++++++++= +--- 1 file changed, 78 insertions(+), 8 deletions(-) diff --git a/tools/perf/Documentation/perf-arm-spe.txt b/tools/perf/Documen= tation/perf-arm-spe.txt index 37afade4f1b2..a90da9f36d93 100644 --- a/tools/perf/Documentation/perf-arm-spe.txt +++ b/tools/perf/Documentation/perf-arm-spe.txt @@ -141,27 +141,60 @@ Config parameters These are placed between the // in the event and comma separated. For exam= ple '-e arm_spe/load_filter=3D1,min_latency=3D10/' =20 - branch_filter=3D1 - collect branches only (PMSFCR.B) - event_filter=3D - filter on specific events (PMSEVFR) - see bitfie= ld description below + event_filter=3D - logical AND filter on specific events (PMSEVFR) = - see bitfield description below + inv_event_filter=3D - logical AND to filter out specific events (P= MSNEVFR, FEAT_SPEv1p2) - see bitfield description below jitter=3D1 - use jitter to avoid resonance when sampling (PMS= IRR.RND) - load_filter=3D1 - collect loads only (PMSFCR.LD) min_latency=3D - collect only samples with this latency or higher= * (PMSLATFR) pa_enable=3D1 - collect physical address (as well as VA) of load= s/stores (PMSCR.PA) - requires privilege pct_enable=3D1 - collect physical timestamp instead of virtual ti= mestamp (PMSCR.PCT) - requires privilege - store_filter=3D1 - collect stores only (PMSFCR.ST) ts_enable=3D1 - enable timestamping with value of generic timer = (PMSCR.TS) discard=3D1 - enable SPE PMU events but don't collect sample d= ata - see 'Discard mode' (PMBLIMITR.FM =3D DISCARD) + data_src_filter=3D - mask to filter from 0-63 possible data source= s (PMSDSFR, FEAT_SPE_FDS) - See 'Data source filtering' =20 +++*+++ Latency is the total latency from the point at which sampling star= ted on that instruction, rather than only the execution latency. =20 -Only some events can be filtered on; these include: +Only some events can be filtered on using 'event_filter' bits. The overall +filter is the logical AND of these bits, for example if bits 3 and 5 are s= et +only samples that have both L1D cache refill and TLB walk are recorded. Wh= en +FEAT_SPEv1p2 is implemented 'inv_event_filter' can also be used to filter = on +events that do _not_ have the target bit set. Filter bits for both event_f= ilter +and inv_event_filter are: =20 - bit 1 - instruction retired (i.e. omit speculative instructions) + bit 1 - Instruction retired (i.e. omit speculative instructions) + bit 2 - L1D access (FEAT_SPEv1p4) bit 3 - L1D refill + bit 4 - TLB access (FEAT_SPEv1p4) bit 5 - TLB refill - bit 7 - mispredict - bit 11 - misaligned access + bit 6 - Not taken event (FEAT_SPEv1p2) + bit 7 - Mispredict + bit 8 - Last level cache access (FEAT_SPEv1p4) + bit 9 - Last level cache miss (FEAT_SPEv1p4) + bit 10 - Remote access (FEAT_SPEv1p4) + bit 11 - Misaligned access (FEAT_SPEv1p1) + bit 12-15 - IMPLEMENTATION DEFINED events (when implemented) + bit 16 - FEAT_TME transactions + bit 17 - Partial or empty SME or SVE predicate (FEAT_SPEv1p1) + bit 18 - Empty SME or SVE predicate (FEAT_SPEv1p1) + bit 19 - L2D access (FEAT_SPEv1p4) + bit 20 - L2D miss (FEAT_SPEv1p4) + bit 21 - Cache data modified (FEAT_SPEv1p4) + bit 22 - Recently fetched (FEAT_SPEv1p4) + bit 23 - Data snooped (FEAT_SPEv1p4) + bit 24 - Streaming SVE mode event when FEAT_SPE_SME is implemented, or + IMPLEMENTATION DEFINED event 24 (when implemented) + bit 25 - SMCU or external coprocessor operation event when FEAT_SPE_S= ME is implemented, or + IMPLEMENTATION DEFINED event 25 (when implemented) + bit 26-31 - IMPLEMENTATION DEFINED events (only versions less than FEAT_= SPEv1p4) + bit 48-63 - IMPLEMENTATION DEFINED events (when implemented) + +For IMPLEMENTATION DEFINED bits, refer to the CPU TRM if these bits are +implemented. + +The driver will reject events if requested filter bits require unimplement= ed SPE +versions, but will not reject filter bits for unimplemented IMPDEF bits or= when +their related feature is not present (e.g. SME). For example, if FEAT_SPEv= 1p2 is +not implemented, filtering on "Not taken event" (bit 6) will be rejected. =20 So to sample just retired instructions: =20 @@ -171,6 +204,29 @@ or just mispredicted branches: =20 perf record -e arm_spe/event_filter=3D0x80/ -- ./mybench =20 +When set, the following filters can be used to select samples that match a= ny of +the operation types (OR filtering). If only one is set then only samples o= f that +type are collected: + + branch_filter=3D1 - Collect branches (PMSFCR.B) + load_filter=3D1 - Collect loads (PMSFCR.LD) + store_filter=3D1 - Collect stores (PMSFCR.ST) + +When extended filtering is supported (FEAT_SPE_EFT), operation type filter= s can +be changed to AND and also new filters are added. For example samples coul= d be +selected if they are store AND SIMD by setting +'store_filter=3D1,simd_filter=3D1,store_filter_mask=3D1,simd_filter_mask= =3D1'. The new +filters are as follows: + + branch_filter_mask=3D1 - Change branch filter behavior from OR to AND (= PMSFCR.Bm) + load_filter_mask=3D1 - Change load filter behavior from OR to AND (PM= SFCR.LDm) + store_filter_mask=3D1 - Change store filter behavior from OR to AND (P= MSFCR.STm) + simd_filter_mask=3D1 - Change SIMD filter behavior from OR to AND (PM= SFCR.SIMDm) + float_filter_mask=3D1 - Change floating point filter behavior from OR = to AND (PMSFCR.FPm) + + simd_filter=3D1 - Collect SIMD loads, stores and operations (PMS= FCR.SIMD) + float_filter=3D1 - Collect floating point loads, stores and opera= tions (PMSFCR.FP) + Viewing the data ~~~~~~~~~~~~~~~~~ =20 @@ -204,6 +260,10 @@ Memory access details are also stored on the samples a= nd this can be viewed with =20 perf report --mem-mode =20 +The latency value from the SPE sample is stored in the 'weight' field of t= he +Perf samples and can be displayed in Perf script and report outputs by ena= bling +its display from the command line. + Common errors ~~~~~~~~~~~~~ =20 @@ -247,6 +307,16 @@ to minimize output. Then run perf stat: perf record -e arm_spe/discard/ -a -N -B --no-bpf-event -o - > /dev/null= & perf stat -e SAMPLE_FEED_LD =20 +Data source filtering +~~~~~~~~~~~~~~~~~~~~~ + +When FEAT_SPE_FDS is present, 'data_src_filter' can be used as a mask to f= ilter +a subset (0 - 63) of possible data source IDs. The full range of data sour= ces is +0 - 65 535 although these are unlikely to be used in practice. Data source= s are +IMPDEF so refer to the TRM for the mappings. Each bit N of the filter maps= to +data source N. The filter is an OR of all the bits, so for example setting= bits +0 and 3 filters on packets from data sources 0 OR 3. + SEE ALSO -------- =20 --=20 2.34.1