From nobody Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5FE2D219A80 for ; Thu, 5 Jun 2025 10:50:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120608; cv=none; b=ZXLnna2Qn6cQMslLRn6ySeoj332yqqzPps+GXcHZM4B2M/FHHU7ctyzogFf29s4/FiaD2juT8nh4+lDA0c1lIDGp6AceMIVkvGu90I+EB1gQkPkClpEYhn0OH2m3yFG2Ul7QnL1Tj2NvL9BoSnkdnQUrwF3bBlZ1E9H7sqML2qk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120608; c=relaxed/simple; bh=isf38v+uTebHr/0KouGZLHu/zXcyClycP3zhjgiVfZI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=usAOe5nJuKsoRHGukB9tRMLcYbDRREVodPaZhQd6KzZGGRDJlQUcjHOSemtKjtNIYuYfqedroQ/wBmx6AvjzeYsQXIb2CjhMTUlBV5gUQqTPB5S71LIrx2Z0y7E6VeocmUobgF6dJ+q2+JWGL8vHRAwPeO4m+AxGdeAl7dV55EI= 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=eGsgTUNY; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="eGsgTUNY" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-450d37d4699so4838315e9.0 for ; Thu, 05 Jun 2025 03:50:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120604; x=1749725404; 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=BpkxTGRvQkor5ThWfPSfZfarMFvM1/zI/E944bIEcHE=; b=eGsgTUNY4P4xYxKNfpqtsNEVRXV4e6/ADyhy8XZhuxMDIJSI44yV7RmFgGbZS+LFxW m2m22yYJAjP8T4VHP1sjbThJ2XlQRGVkEU8xOHbbCUgnEz8jVipBh1sjTj9rvSoyu5xd K95GCe2GXMkvG+esfoxDgwoMsgRIhOM7UU63a3EkgusFQaj72f4VgcfIZOMu3VpGsDMx Rb72e8/VK9UFib2Hc9qwj1a9S8CNU4CH+gXDQzH2Fxmwi7Qf3r+t5eg6dH3ZDuj+zz1D FDDTmpQnJiFwm0j86SEssabhl+hDhIxczNwpikSeYSLFNjAj9hWHzhlryQUypaI+PXSH bjhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120604; x=1749725404; 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=BpkxTGRvQkor5ThWfPSfZfarMFvM1/zI/E944bIEcHE=; b=t4xziD0Y4mi16Op90D+w2TvbDs8f4Hsup/kf27shZEf0jEDYTN6HFP4hh8Gm51dE9H 8y1+pEM8IwjqX8+pq3zC817+O/KDKACXuvlpcRcvig56WUsiLc20r8bpIWifr4IPGoqg 3jE/dwfAIDf9pYzn+xDpXmmiVRiEgFvmVbIHYCk5bgVSh17SGhw+Z61auJaTC+7jnB31 Y2v4r4e6g/MQR1FU2AjYtANUO+6FQ7eDnJFV67mRLavNoWbylN1MFw+jLFChNYN3bcOC eXQKviQMF/NSORzWRJ7fXsFs57qSb/G5QCGrXXF8PhQSYQ0oIc900smk2NF4/XZFOA62 A8gw== X-Forwarded-Encrypted: i=1; AJvYcCUNgwZzgumca41uYxBpJnW7chf+xXprQRn6BHoNl9d5YKmM3/8m+5zrjE3lv/mi76Nc6JOMDC1zx31PhXk=@vger.kernel.org X-Gm-Message-State: AOJu0Yzej4y6CmeddMp9BE0dJzJqMLnasQ+bJqtDMHuHdqEPop7p+8G5 Jw1o/CxkJD+xrfDSNVbmi60oyVHdVd7kApXm4ZlZWaXP4LQ3qV0WfpB9OWGe7ZYfNBs= X-Gm-Gg: ASbGncs97Hr1Lem/glHlEvs3QCmkPNaT3n2G4uwx3dp86eyZXmeU2+EVZ6PWUMMcjbM GFO+gfh9w5+HY6k84LWMQwQIXKRzDLP2b0ZJQEViCAE0dSZrc43jiPQL+k5/SkSMBzbIqEkcN93 7oEQkieCMN+ddNf4Up2yZeaNo3aTG5gRy10EAO3SWhSAJAHS9G41x9exEHa3r310++Mb21Zh/7k 6qtOAkI5fNCyssMt+JVxFvtGcxwKf7raEi2zPBf+cys/mN/oZKHFm9Lxg+2bbwu1SgkGk51EHLk 2A19B90ArY9oGVDfXI3oQZT5P/XeSr/TNL36FjuzLasnmoh0P+U2i8iuEm7L X-Google-Smtp-Source: AGHT+IGzwrshaRz6RzNc0J7tOxVdD9PJSTMnVH2Zjax7vPL/2HgFnaNJ3JtdmLcA1rgDpG5sbM8aDQ== X-Received: by 2002:a05:600c:8b27:b0:450:d37d:3584 with SMTP id 5b1f17b1804b1-451f0f31013mr62452085e9.13.1749120603619; Thu, 05 Jun 2025 03:50:03 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:03 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:48:59 +0100 Subject: [PATCH v3 01/10] arm64: sysreg: Add new PMSFCR_EL1 fields and PMSDSFR_EL1 register 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: <20250605-james-perf-feat_spe_eft-v3-1-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark X-Mailer: b4 0.14.0 Add new fields and register that are introduced for the features FEAT_SPE_EFT (extended filtering) and FEAT_SPE_FDS (data source filtering). Tested-by: Leo Yan Signed-off-by: James Clark Acked-by: Will Deacon Reviewed-by: Anshuman Khandual --- arch/arm64/tools/sysreg | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/arch/arm64/tools/sysreg b/arch/arm64/tools/sysreg index 8a8cf6874298..2e897d8a4040 100644 --- a/arch/arm64/tools/sysreg +++ b/arch/arm64/tools/sysreg @@ -2859,11 +2859,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 --=20 2.34.1 From nobody Fri Dec 19 19:17:56 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 DCE23223710 for ; Thu, 5 Jun 2025 10:50:06 +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=1749120608; cv=none; b=TKwwUxc14awI7B4XECCwDpQ7kzDgWAkIRy+ine4betNLBuntdPV5Yduz70PbHuc/mT7ZvDASubFQLP+yon2nAr/wlOxHxeF1cFH6vbJOcmTC5hfSFgOB7lRJtfrv2GNH7rn+iS8+E8FOIk/yjaxfz/G5vyhOheE8STypyWiGXoM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120608; c=relaxed/simple; bh=J8OmP1gsaCmehSiWudGGqnPNvN5TiSXtYIKG2wZEIRY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rkbr2qR598Z3Gu0gvGwyjboF70H0Hhm60O9G0yfiEenooFVaeo2BnbUp5wN2GOov1plW1Cv258eXChiN+a37ajAx9dZDptwz8jCOrD/ES3E8MhwWTD14xHq66Wdka2Lf5eEzAh2Fgx+/eb/3qKnNC4jGBRESPNFo5yqaftxSsUo= 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=oylu+lcu; 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="oylu+lcu" Received: by mail-wr1-f44.google.com with SMTP id ffacd0b85a97d-3a375888297so549509f8f.1 for ; Thu, 05 Jun 2025 03:50:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120605; x=1749725405; 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=WHbW2UQ+G7ko5zDPsKOZEBPKiZAxVSAKWEGcyVL84GY=; b=oylu+lcujNh9LN8lb6a3fZhcLN/3mDWF+mDXigoXH7kii0tvUBTV9o9EjbdnPUdfxW 3e35u0z4lgqonLPK1O3ixfHIOUjbgczJ10RLuhA2BRqpkUH4+6HYrsVJoJfD1ry3wr9t 2QsBzbTcU6ZNgS2SgMAqZSop1zDP/O9mQ3BsDQcOcqwd5AroSD65o4lnBqSZtn3d5ESX QAzliOI7P0mJ+D2Qmr4XbvX68+deojYJzxIr0zzrZ/YbwTxiKWSkWn9BBlCsHODd748R 8A1X4WyLZmAHv3aJ7eOhiy1AAg+TD+OHY8rXQeg+A54tgLHbKLxQJwIyE8v/9k4YB8Y5 KSUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120605; x=1749725405; 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=WHbW2UQ+G7ko5zDPsKOZEBPKiZAxVSAKWEGcyVL84GY=; b=VUItiovJvFYmanOajbut2+Qs9z+cY3tlOFv7uhrjumITSTrZG4ID+Cx2md37lpWP32 O3pZcLXTlcE/bF/TyYSHftBtUfRN67F2nyyclNSjQ8mMwU4iQYgUtGFxE8CQZX2fE4v3 Ie02IFgZKoDCQVtiwt2pGohyQcQQLSiWHfkR73bM8uWjDI3toUH8LIQdXzzeL/yDeU+o Y8q64zskom64y97qsp0D4lrmcXEik6OCgkbO0aQY0ay7JHSdJ/ywrdGnShP/0tgFajLe zOemN32w5U+GHsFFwmtMSV1ICezCw/DIdZAQCP4F8qQ20Ym6laJsHdsIOC5HphmeqJEa Ufrw== X-Forwarded-Encrypted: i=1; AJvYcCV88s1iYDn6aj4Zc8/yxCIITbLJHdBm9zvZVCVP7ZvJduii/5ZaV2SiQFs9IL38xdqO6nQ30gRLAZ5J87M=@vger.kernel.org X-Gm-Message-State: AOJu0Yy8cuZ+ZAr+gT3IKcsmczKs7PkKpq+fwjUNeT6v8IDYhjeCGq9s YgDOCJBSqBkVtDjlX0l2b0dAa5TXN8T9MZMk7EnnNhrsyK3XKPFov/yVhlu+7f3V4g0= X-Gm-Gg: ASbGncsKBKDGSejcL6iHFB5aw6NELbfYBxBAR+aXg15Rss4R70pVobqeUbTVV6uPM32 Eti+S7j9S96vEAGwfHZCA3TekJ5u72HRKSay1exuU3FG3GA2X1hQ0BHQGwxSKbSK7t6UGYKYWlc dHH/DZ0OAo6MoiPtEatGA8Hb2t0NJgmLEhtnZKYXXVntVGOt77+O37nxeGe+RVp4b84tVDtYgM1 xWL/sagWZrYuoW7k+uzwlPmrD3te8LMqBOevpbZlE80HbY/MrXwpX9uDYmJkl8ErkKMFHCVMZ4B LJ+0JNqdd46XdaVBSiQXX9gDwUXPmVWSFPwi6ou4p9SPd/dO3M7trAPMLf3E X-Google-Smtp-Source: AGHT+IFRWzZEtfMJIm7ANoPCr8nsDJf/OxJ3jlNOmnbV1HMLW3JnGbA0M2qGF1W+QvYQi0862CiYjA== X-Received: by 2002:a05:6000:2485:b0:3a4:f70d:aff0 with SMTP id ffacd0b85a97d-3a526ddadedmr2646825f8f.14.1749120605010; Thu, 05 Jun 2025 03:50:05 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:04 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:00 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-2-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. Reviewed-by: Leo Yan Tested-by: Leo Yan Signed-off-by: James Clark --- 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 f1bb0d10c39a..880090df3efc 100644 --- a/arch/arm64/include/asm/sysreg.h +++ b/arch/arm64/include/asm/sysreg.h @@ -358,6 +358,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 Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) (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 676D8225408 for ; Thu, 5 Jun 2025 10:50:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120611; cv=none; b=hLNH7blWvez9s/UsPrMmTFO8XZrSgZgqH48VCh/HIKgsBe59/j63CDVtlrBcdYrZ1C0vCAQd7oQKdrqVhLWTkS16QV8IST+V9fLcU+IiNWrEWiuLPxIsHXhEwBdxxPNIp7hiu8Sub7ggpK3cdsZ1fGb0HSqbcscfk/te/Pylzms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120611; c=relaxed/simple; bh=CKBEUr6SC13uP2S5QCdv0ukBF1r0tcgRjgd1QCcKUYw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IHM6I6syxKRa98KCN/xUypDulwCRhVGppgZ4zdQYEUXHULPH5+DDvxZkRVi/vy5YGQM5o2gs9CRPL+2mSGOTeWuBQFbufx2FzpY/5Oo+zRhCzKz3HZFSvAb7X7hC4jZDB2eRxUY23TrFXrq9aJOQ7CJqZxS7CNoFHnEetUwpg6A= 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=xZR7/X/b; arc=none smtp.client-ip=209.85.128.66 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="xZR7/X/b" Received: by mail-wm1-f66.google.com with SMTP id 5b1f17b1804b1-450cea01b9cso2461935e9.0 for ; Thu, 05 Jun 2025 03:50:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120607; x=1749725407; 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=vYJpx3LicQfrZuxpetLws2KYn5BR4OxivH6XdK5rDwQ=; b=xZR7/X/b0VQShPyATbxoJMD6A2n4n9yPCOijtxOgsMg8hh1GoexwJFRnX4AgkRRpL7 M4F2tfu0L4MUEAVpHAlrEOQcfEA6J2pYzcnTnH3rerEjnrXr79cA+KZb1P+l+rZ6YVFQ x3n/WS6kvhHezYrUMrTQQXSwFMn5iwhIPYjoL0hqtQiDgDTKiGHGLmv/gPznX6grp6wP 6lTDuRDkm9hQI55vl8r+aWVzNzRimMkYgXo6t3rqU7ymOlJUS5s5+BdGG8jg2OBCSVuq lzSYLOfQDElrbgsu5Oz9pNKP7WJ/hAG8prgW95p1TYXboBZa8oBIUmm6C+F+jdWyE1Xc Cp2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120607; x=1749725407; 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=vYJpx3LicQfrZuxpetLws2KYn5BR4OxivH6XdK5rDwQ=; b=fDaMU7iLmnERxwrQ0P3Rh4MLTPs6kR+fPoB2H4Qn+RzMRh07Cv4SC7LcpXJEEWDdWc GFWxwJvLrdd79HixTI0MerMOAd4K679p8kYBU4Y2LW9rlhjw3aOfjlYh0i1A7ov0PUcw 4yTk8JVPuetyCCBhY68bnFwUyHqeD7QmfjU5DTGMQwdEFZ8xLcU/oCjJtsxI1HDVxHz4 GchCKygbxPWveRzX70hYskIPJGg3hMSDEc4o6F9AtYmcVctyAWMEKDteAAZqVidc0WVz MlpiRrWLGJhS5IbIjY8xpme4ub28gOPMA1JTsnwF3UA7l5vGqDSc3UO+txOhkkCFZOZN eclw== X-Forwarded-Encrypted: i=1; AJvYcCUDIXVscGrygAVGHEtsBUOhPoHc+QsG3wMRW7zmfu0OWF2rU/zNzAKNCEyEp3PzlvN1GUdIbGHvEQdU454=@vger.kernel.org X-Gm-Message-State: AOJu0YyzUSR8FKS9JYMraonwv81LwzqXiFB/a/Bbi3Y3NkEQDoJbmc3f pINEXobRtKpXgDXK3rWQiaxKJ8UGSCNeHbAQr/+/UToCKfCAvmP9k/s/+T0B3upGsog= X-Gm-Gg: ASbGncvgZpFcM864Ri50U+m0km+Qhgm3sIbbq3KUSS9y0gpJWTpYU01Uuuid9KabThF ZiJiDB8LSTFRSiybC0VFrfIzOdV88FHvcw8SlwPTYStoRw4wKqhUnRiuMzMfuv6EQOveUkNpP/r hTwNKdDPQ8QETNQyp6IW9KDAhPevNUhTVeiKRtzzLyQrbF0gAzzowXc5Q3xEkrrbpZdGzgFdtT1 di0sgGY9Wi4omib9B73gqB+n1L0LTuHzrkze7nA+tvUVIHzq3lc2BGrRvjVJw+0BtgjU1ki8imY bK5eEnHguvyXCIWZKwFPdAGtjGtJPTcWJeFIBCuGcactV5uX4J3KzPCF/uxo6pC37vq9nLM= X-Google-Smtp-Source: AGHT+IFX7yK6w08sV90HFESCN1t5m1rJIwCRGYCvSe2SuD4M9EhAswqLVLd52j//hVFUDskJ/RtCrg== X-Received: by 2002:a05:600c:8b25:b0:442:ffb1:b58 with SMTP id 5b1f17b1804b1-451f0a77006mr68239325e9.12.1749120606588; Thu, 05 Jun 2025 03:50:06 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:06 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:01 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-3-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. Reviewed-by: Leo Yan Tested-by: Leo Yan Signed-off-by: James Clark --- 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 Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F411A229B28 for ; Thu, 5 Jun 2025 10:50:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120612; cv=none; b=NBCOIhcXckNP9hvlBictO3oZ3lXc0W3YPh3GAAg6af5Nel2aCIFkaZZKDVF0okX+5yILhq5hpWbZ+42zgYXXmC/NYnEemvlfLuklgAePUZDAQ2f2yvXqBQiiGa75MdVQI5Ai8GvkyPU3PFOj8eh1ia3pGsjtuj45FHDSrKmsWf4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120612; c=relaxed/simple; bh=A8p4QmQp9wR2AXfusr2+sCtSzzwzACEYf3Bfr59fy6c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=slcd+L+ZjnhVB95gs3Z6cjKO/I9F7DAkVmt6evt8LeyCR6mCYg26pYlGD3SBqZ34199j2X/JNs7utefBHd6uBeBlfLzKs4rqLNOScYa7Us92ajtzL528LwJbVDDnip8Yv8nOJmEDLPndAm8LMod0Mkzfw0L30PZzSdM66Myq4FE= 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=lBnqFB8W; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="lBnqFB8W" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-450cf2291bbso2800515e9.0 for ; Thu, 05 Jun 2025 03:50:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120608; x=1749725408; 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=qJT+aMqYEQmL5PQmYJEFo4Ezn3ppsHm7b3c7sVHPycc=; b=lBnqFB8W62cIHGxi/l2e/u4uNFLYFju/asuB2jhozPO8EdFHsexiFcGv1ihfTy8961 ljnk1+Tk8yQOzH75dKIkD9zd9nL0/+DONIKScxvDgeL0e0AYKGv1c4AEC3gbqjNzQ59H W+e8/HjWWdEbAPOW/TeqI6botBbH2jQAm2LfFvibq6fx8sULEO0mwPr198ybCehbW5o7 Y6k9qyLPFfSlkpNKgR+nZTdAbrE7G5RPoEBjqOMBqgkSSPKXzb3QCKQh6YlPRH2HhKln EmjDfiA05/TjOOr1eTRJG2hK6Ut3+E5HLu5KjU4kLfibJ4wFii4zoG29EBra1la1LAbq V/LQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120608; x=1749725408; 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=qJT+aMqYEQmL5PQmYJEFo4Ezn3ppsHm7b3c7sVHPycc=; b=udrb4HewSyym+pElMGCOIWASAGjP19HQTmJ3vpkaubiIj2WPUiBELmRLJfnwaFCwgR NsmX8pUd+Puba4tlvqRQyzN3+usx8ta4/YPBQSsYFXlXMVAIguXd23KIkQn2Z/bKEKJH BoiRJXizQAzSPKwz5nSzsgKMz2eOh0JGO4o45Blt4aDfba36uTU2PUjcmah/1Zwfp2rb xBRwY3FRfP2+HtZxMEQrTSidyYbKsYWIJxlqlMB6G6M3WY9NCV9rYidT1/MRAEOzo9M2 l+UZGlKFy1ZrnOc2VoDetPxIHatqgINvGf9f7OYjyjRZr36FgsXxnEj2GIkDDcYXFMu5 A4qg== X-Forwarded-Encrypted: i=1; AJvYcCW8zF5bJXf+X0tQ6hGa5iALJ7F05R9WjPlIenp4gXHEcqwbkaQR52RIoambsn08lRclEr6GAfDXT41LXBM=@vger.kernel.org X-Gm-Message-State: AOJu0YwuXjqwT9VeHwaze28SWShi3Lwumr6HIriWAFTdlHRGg+ccbt3a JTe+8EbL/hmeeEL0UzhoKVXgfU7Lt9SYSqXDAKOkf4mr1FaDw1eeTaf1wBzNmn5WZz0= X-Gm-Gg: ASbGncskaSyb5g1ZWMfoc0uZcAaDAW407p2MBsE9fDS8jj/qDbrEpokiNtqDAkdYK24 G241r0XF5GjKfKqsl0PUgq9S9t7YYiOUqHkWrU+P1X72Xz8f9UKbQhl3h2pomL5X1lB+/9KxMmN F0ysZTy1aKmHqlZhWr0o6ivGgy1kO3gd1CxEyxEZf35QDb/JyTnw8PQfuNO4JGpddD9xLKvAp5E BTJWI88dFxF4XtRnMlIBixISFFGbDJpVzCa2Vd4/boizUWk+T5dP3iCTvSJzALA2PfV2Xt75NDG 8fseUT53PEvkaOjez4NvWFtDnXlSLi3wuLTbJH/HiIxGVTJaAPn0qkAeW9VXt4sRGGw/84A= X-Google-Smtp-Source: AGHT+IEIHZpq8QHSEooXwNXyVEvqtUmnqaRzbft3GX1X+wZQal8zl6fwpJ0RAE4/3G1qpRtDL/8FwA== X-Received: by 2002:a05:600c:310e:b0:44a:ac77:26d5 with SMTP id 5b1f17b1804b1-451f0a7c518mr63230645e9.14.1749120607969; Thu, 05 Jun 2025 03:50:07 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:07 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:02 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-4-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. Tested-by: Leo Yan 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..abd75085a239 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 (FEAT_SPE_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 1e7c7475e43f..02b4a7fc016e 100644 --- a/arch/arm64/include/asm/el2_setup.h +++ b/arch/arm64/include/asm/el2_setup.h @@ -279,6 +279,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, */ + cmp x1, #ID_AA64DFR0_EL1_PMSVer_IMP + b.lt .Lskip_spefds_\@ + /* we can read PMSIDR and */ + mrs_s x1, SYS_PMSIDR_EL1 + and x1, x1, #PMSIDR_EL1_FDS + /* 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 Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3984E23E35E for ; Thu, 5 Jun 2025 10:50:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120613; cv=none; b=BhhEqPb82B5I7RmdX9D+JuHnEgXrykQGo6R94O+5gTQngNam+twmxnvSaGQs3TTLiVv+aVwQvAd+ItzRhvkstC8LT2hx5LL7Yvj63Qgr17w684D715WZ+Mc0b9Y7JCxNGn1pbZpsQU1jZOA+nbmyaWoaG5ctBhjMwsVbRo/o0uA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120613; c=relaxed/simple; bh=D3a8CHQrVLegzkacJWeUjX0eoOkZvAqwfNoehax7vUs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=h7Xp1uXlSCSFL03HyH83pT//4sR5m2L331zNn18bv8H/0Ru86r28vvkFU7N6mm7Gkcr15aGtr8xiLyVwOeQYdD7xeCSR53rUTVtj22mHwin2ROSzpsSZQPIHyfy+7OCduDcijEMgiloNaInspZhOEl9BuiXO36Hvp4L5mbNMMtY= 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=fYaIrY9v; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="fYaIrY9v" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-442eb5d143eso7661895e9.0 for ; Thu, 05 Jun 2025 03:50:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120609; x=1749725409; 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=0DK6uM4OCMEufJaM16uRm6cXGr0jOYtB1myNeR7Sl5w=; b=fYaIrY9v2avoYb68C3U7hI+EA5ULP/3xdsyx1da8X4VZGU9w8aVjvuB2nWtRLY9nIy pkzPIhIFia46/wRXL3nALzno6G6RroMF2btpMPL59GZt7YmudmZu8+1+H6TEFccLqKY8 iBZ7n+fmbXqxBlFEmnYg63vagUy/U8U8O5YtpUc+/tDEe22bGUJy2Ahe0u8g6xrBAsMZ UdTVFdsjDKlHmgMM3fncDJw+yuj9fXmaEx7R6U1e69YvlvYHG+V3DQwM8O872sm3mwjj RbejpsWXbS1u7EFvm8rN/bwEuYIOCSkFiHwi6LpYaQGfjFtzzXP2iGF0j0ag3nESApMP hb0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120609; x=1749725409; 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=0DK6uM4OCMEufJaM16uRm6cXGr0jOYtB1myNeR7Sl5w=; b=aTYt42vKCdJWdVTxTZgCHxHsqOVx9ZrqC/9GnV7QBvWOfFxHLKxEzkPvdPYeh44Pgn MwHPPE78CjFhRc0qzmnnKTzK1wVl5rV/wzYPQrmL0RFvToJJGpErRromxXO7z/8Z/JM+ IgI07CQt9sOV9Qf0HqnCmbi732KV6g8zzb33yiIbznIcu78JbldYodB2C7TE374FCb5q dNStlxXISlVaWHNvsQIzdWNUUvVHDAD4DgM8N/N7oPAQfh9t3zAD+KKooN8emX3Yod8k 1E2UduwfX1aqnFGld1RN03wOWT2pM5RUroShOR/xhPNCVt/+k/15gCyPxt8NHLKNGnoF iqGw== X-Forwarded-Encrypted: i=1; AJvYcCUPvcUSwBSabmEYosEY3SfkubmD+hYaCIoBhd+zLbQ/TAVvsB7bQJZFGQ3LXRs9P19iDED7eVhSBPxTgCU=@vger.kernel.org X-Gm-Message-State: AOJu0Yyu0PbSbAvab/8nlLOKKUIG+1e6q4v5zzcyqdj2aSvbuEpA2ppX Ik0HFLW3J0f2p0vkmtH+rDxUg4PAmEiwJ+N/5i6X82dKvpQNGu58UjIn08XR7/EnN2I= X-Gm-Gg: ASbGncum5Cc2ESXFGBIaBvmtIwuqSAoX9xSkhg+DSY7GNZfnIDGKbe/ppNqZjfroVqC hXUrpCOjcUr9sDPwT7qvB9KP9ys6v2BQbFGoiiWMpD9G15nksZISeUHTAW8DCkauvnJs+KMkWhr ksZAr2gJ2Lc6dGxFlxOvPG67LTNWF06KbOJgK5I0E/BX0/gcWyQFrVOcOyzx7ENHmzXTXfwsmga eBCIdnvcDsa2BjDUh+sgGtQpN9ui0mGr4CvkjZsFt3fHIApV02pI1iKW8K1PMMFNwQhG/ONSdkY DNCT6k9VvIsVe9Wo/m89p3EGDdKVzPR4EAjuK88TwfaTBEafwfXeOD1MlZto8Ik5cedCSlw= X-Google-Smtp-Source: AGHT+IHW1X+WENRurUa43xQ9bej2IvG2qfN9i4ZVKvWxfljVS3ufqAHPvcXy1cLSRDDK8lgBUz9YNg== X-Received: by 2002:a05:600c:a089:b0:43d:45a:8fbb with SMTP id 5b1f17b1804b1-451f0b0c598mr53918705e9.22.1749120609367; Thu, 05 Jun 2025 03:50:09 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:08 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:03 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-5-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. PMSNEVFR_EL1 was also missing its VNCR offset so add it along with PMSDSFR_EL1. Tested-by: Leo Yan Signed-off-by: James Clark Reviewed-by: Joey Gouly --- arch/arm64/include/asm/vncr_mapping.h | 2 ++ arch/arm64/kvm/emulate-nested.c | 1 + arch/arm64/kvm/sys_regs.c | 1 + 3 files changed, 4 insertions(+) diff --git a/arch/arm64/include/asm/vncr_mapping.h b/arch/arm64/include/asm= /vncr_mapping.h index 6f556e993644..dba0e58a5fac 100644 --- a/arch/arm64/include/asm/vncr_mapping.h +++ b/arch/arm64/include/asm/vncr_mapping.h @@ -92,6 +92,8 @@ #define VNCR_PMSICR_EL1 0x838 #define VNCR_PMSIRR_EL1 0x840 #define VNCR_PMSLATFR_EL1 0x848 +#define VNCR_PMSNEVFR_EL1 0x850 +#define VNCR_PMSDSFR_EL1 0x858 #define VNCR_TRFCR_EL1 0x880 #define VNCR_MPAM1_EL1 0x900 #define VNCR_MPAMHCR_EL2 0x930 diff --git a/arch/arm64/kvm/emulate-nested.c b/arch/arm64/kvm/emulate-neste= d.c index 3a384e9660b8..60bd8b7f0e5b 100644 --- a/arch/arm64/kvm/emulate-nested.c +++ b/arch/arm64/kvm/emulate-nested.c @@ -1174,6 +1174,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 a6cf2888d150..4a88ba15c7df 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -3008,6 +3008,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 Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6746A2475E3 for ; Thu, 5 Jun 2025 10:50:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120616; cv=none; b=YB5ggo11b6en9DBfU+TnN7JKCQ7HdRpWoO+PE9wmueuI5BASi+ydIZ3+w7Mv+suDAqYfukVUCA5SarBap/FC2BcEs1odoxrMUrPhQMd9tnwQ6305/DBUcgC6JHj+F7I9jzG5Tinf8lBeVdfsWRUSeOAOgWRvlvobon7cyktKll4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120616; c=relaxed/simple; bh=luIKfiwgtXeAFEj50ve3W9I2lyEw3hMNW0iXhyMCu40=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Mxy0PyC6c1G1eFhhzeFdnepPTFsKyGPHKl0reBYCqsC5BHBwtIki27UT5/lMbctu3nMphxtPDMrrr1blXnCTCDBVKmj1eByruKy2do18SuhzuWQHpPv1mjf4Q93qHsVY0+s+QRlQSDEGpvUsqUMGpYVKr37Ko5pBrnlDlI0peb4= 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=bm1uz5sT; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="bm1uz5sT" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-45024721cbdso6936745e9.2 for ; Thu, 05 Jun 2025 03:50:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120611; x=1749725411; 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=j9Rue6bPIg/trhgv/sEGIp6PJe+iLR+ZUbz2D5vC1ck=; b=bm1uz5sTq5EtoddzpljyGMCVBbC8YHEXXfgxedMh6EoEUnpmCJY52Tvch0iBi7H2kD Th5876eqIO8iv6P+uYzhV4wZXF2f3wUDBqXXE8ExzkA4U2PUo1nUfukEsOTS4whH3khD wCx9XSoMrV074tRvOwjNgREfbDYPehTCRnD8Nu65gSOmHq3kyLjlmI+zcC+6KPq03ZZG 4UZj+DmtO7y7YjWKxdhetq4IwTVUBtfdWk1ZMHNyedeoPR1MhiVFdfYPmESBNJQJmfFl BEGleil1/7EaXr867vVzgKO1xOPdf+qZr1+lmE/BHBLl4CPyNSvOGtUUx+YOdhJZoPVU DVlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120611; x=1749725411; 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=j9Rue6bPIg/trhgv/sEGIp6PJe+iLR+ZUbz2D5vC1ck=; b=F2eU17nkkamnW9nMNUPpch9/LpOfkUm/FmwzJqRLAf+3zuwssMzMpisORgenRPw8Gf Qei8unEgInFsI6OwB8DH04JuIJvKjeSlmaGyYywKNbZk5ChFtP2pQAgbrAwKsG62Ozxx 0x1jkR+lvox4YQ5oYsMCZDovSvPg3h7JRA07gV7UDp63Uk4X3HcmEdaUXLdyDM99kly2 sdP3Fa/e4g4FL1Je+3+qAPNlSJOKdR3kWpqS7ypBE2FFJlQd4EQn/fs3GzhoWJ6VAfpm hnmjDnK3Slz+NjejETKCZRRlovzatdNnjdfUVWS+U6g8YYk1Cn+KQK0kN62+gajEupUo cb+g== X-Forwarded-Encrypted: i=1; AJvYcCWIK3k3SQ6iBuiMYRwljgY5311Tes7fCq8z8XdkLCN2WRslwS3RwwgYxTyOSOlW3uHZO+7N7Ot0W+szs/g=@vger.kernel.org X-Gm-Message-State: AOJu0YwxUwlMnWTRgcWGaeF5mZZqfCqtoAsNJw6fdS4bihPLuxog0jy8 sIci9hEqJy/gfkOOlc74EGlzoNi36TDQpgqoW5f725C9/DZjF+oOFxzUu8h6viQvXe8= X-Gm-Gg: ASbGncu+shGRRPLPCd0TW7svdfb/SjCV3dNQiqsv3okKxzdpfnI1SUZ+0OZPcsV05bO sqWiWWasgSmGoqKN1Hy5iazn4bbF9rDasWyPg12OmcEUKbMdbYA2cu4CltT7CGl8LWw7Z8aoTRP aWdz1MxzGKO6kKlrZ7/+O2DpNuw+OWSDeaLfuPO9ZFRNWQxJLD6QrfBO2Ix/6lFefXKCfwgpy35 oCTuTcS6WrLa1QfX/kPaGwarFUTdLO8YEu6cbbehy7oJExdw+JcGiufpN/Ib2Skd6PLVHQYVs8H LvFHx6rmqRQYsJeDpskTZZNJin4KDbxmSzxQeQMZX5hl9143iUy51nWKgkAn X-Google-Smtp-Source: AGHT+IGgu16RRFx+Y09hUhjKjxwfPfRayhA9cKQUsDuzGVsP3y8rnAFwlUH2ULqYWuFyxL3gPk8m4w== X-Received: by 2002:a05:6000:2389:b0:3a4:deb9:8964 with SMTP id ffacd0b85a97d-3a51d91f899mr5503049f8f.17.1749120610702; Thu, 05 Jun 2025 03:50:10 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:10 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:04 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-6-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. Reviewed-by: Leo Yan Tested-by: Leo Yan Signed-off-by: James Clark Reviewed-by: Ian Rogers --- 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 78a362b80027..0d0ed85ad8cb 100644 --- a/include/uapi/linux/perf_event.h +++ b/include/uapi/linux/perf_event.h @@ -382,6 +382,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 /* * 'struct perf_event_attr' contains various attributes that define @@ -543,6 +544,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 Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7A3F248F5D for ; Thu, 5 Jun 2025 10:50:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120616; cv=none; b=JDYEufyS+oAqyqRW+PxIeEUd/UClc9JsiBd2fu+feXhX/BV2ZRSjHG3xECbGeuHfHFHdDkJcFaOKHWMmtIz31tIoplBWXN24JZQGZh5M6z6H7x8/Lfuzu+wtj2MChnGMXYNp16ONT5Ry6B+PQih8Evu4DF97haxB+OrFNtsdcdU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120616; c=relaxed/simple; bh=KCuaBrpctJvVyuO7lqsXVmFOYYJR2IE7xgkIFt7pAtM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pFoNd0UvUm/m7/8hLExDDKKyYnJSZLKCCegd9Y0KdckEMreA46sksfwdTmKrptUtxQtEBUEfK6pu4E2nTG2FQGnzIWNGvKQEvf05Q1njE367gc1NUI6PHa4hekt6feX/Og74vheYHVCUZobUET8U6P5nJE7SC3WVyizci9GNAPI= 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=TfMBGpCZ; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="TfMBGpCZ" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-450d37d4699so4839375e9.0 for ; Thu, 05 Jun 2025 03:50:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120612; x=1749725412; 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=C0KLZ2ZCTkHcHktyLYkkFUXE6vwjX72niSxA55rUHHU=; b=TfMBGpCZjSfsqhH4NWqt9438+/9a5RdKB/w5oOdr/r9tbgP18PJpdBeAAiT3pDIReM xnL25El/UfQkIEwlX3XtYcahGeVnrVu5y5FaMkP8hTGnSwo+15Xqr2c1BSpceOijCefG bujQxKGu0I4MJXPQZ1vIjVpElnaQTJBXpkcCpE85jrqBo06uaEvHklNfGesK6LJVsNUV DrrHdP/KpjiPzBgRl3c/Cpvbw26/SqMaOqnH1DfJoKtg/HZZ9N6/Fw0a/qS4/k4vHwdb NvIXmc+m5zWJ8Hz7qqghw+iX7Ua5lPhopXBgAXV8f7Mz4lVaV/ZQsu08P1AP/1LqPwMX WmKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120612; x=1749725412; 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=C0KLZ2ZCTkHcHktyLYkkFUXE6vwjX72niSxA55rUHHU=; b=WU0g60D5FZLC+uwpi6iTy7TrzjMeOrERW3KeyNLLX59fMxAk48XPTSoX4c9JmfDJtq gJNZqme9/lx/sCVVrSep+oTaivFwYwel23F+Wa7tNukaNe+sF5BPvjkafaTNnazZUQh7 hTnRX4aIzR+fMJ6vKZrkXBmQtxoVwFNYg/d6cAOlBuFypk/9KAUtkitm1Gm8j3iJQA5p ntFPl0KbE7YG3RSbKuEU6oU3DAQD9C85to3F59QPYhr7JA63SeRY56a5ywo5FIFv0xk/ 1xlpf48YLpQIuXagkZxDivlGAeWpJ1YnFTOw9HukpbldfPCfcOrEHYtIpPyJHAB1B1O/ 9QsA== X-Forwarded-Encrypted: i=1; AJvYcCViXcPMnW+LXswzOKwz4uJPia4MiEV/13nil1DnQdv1vgf1JrCECC6vBHhwq/S4U4JfdENUNzu6ujCz3zo=@vger.kernel.org X-Gm-Message-State: AOJu0Yzv6iF/6mCj0PVWEFsVTQCcEiMXjblPCBkPWbT7rNRVqZLhTf7c eWJVHGk+ohxh9ZyGwBjhH21804IfHP57Ojml7CcRvBTBh6j1WQLNLfUlYsjuNWFtTDo= X-Gm-Gg: ASbGncvAkMhdXAf7/My6AVcYOauB/PxOJ6S/bGeYJypkz8w6AHI89JdCZ0ZQYFAsjh/ 3VeF+UJh7gLLKpeTURhTTsII1ZpUG9CyIth7TyszGb6VSQ30ZizdbZgHK71uZFOlh90xEo1i8cG rLu57VEdd3dlV4dpZqwbXQn5K99X5KEJe8fyPNDwiB2gIhUdwy9EIFza2SJNDOihia1Q1mLad/+ S6VBXVTLR9h9Z0YQOlLpJp5eKWgSDSPfHUo0eK/ZMOg0nKA5m+wwX0HQbcVGj0sEhfzwjjaP4wP KvpFcMUN1tQYG2HXzd29ARB+H7XnnoLWttSaxK8g5rfeWkhkt8HALb1y1cxk X-Google-Smtp-Source: AGHT+IGbcO/a1eXK3R6X6dBhodfAwBOpm98OebpBQCErhJ5FZL5kwhqpZKRhnlTn8gwmnZUGlYp8jg== X-Received: by 2002:a05:600c:b96:b0:441:d43d:4f68 with SMTP id 5b1f17b1804b1-451f0f4f1c5mr58624695e9.15.1749120611973; Thu, 05 Jun 2025 03:50:11 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:11 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:05 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-7-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. Reviewed-by: Leo Yan Tested-by: Leo Yan Signed-off-by: James Clark --- 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 Fri Dec 19 19:17:56 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 552FB28E17 for ; Thu, 5 Jun 2025 10:50:15 +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=1749120618; cv=none; b=IgLMBLO/KQjpN6aecuEYPF3LkoClkEsX/NNnqx1rixsqxVDG/7BLErRUf0FbC+Qwz65hSWMJ4jNGSSuBhQlTVtPLco5Icmmry5UVjURW/+Veq0vaZKT0ZFDd0IQEAW6oidYua8Sv/pTIJ0bnF084I2R56plsw/0zq3lfreJekOs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120618; c=relaxed/simple; bh=XeTbgg1YCZhnU/IzLKbCe1re6NeCWvfz3HX4Zc0ZwHU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=B+5ql0uAm9McWzbsNB8pbxADfRnIiWSt6q5ncnTI1xoblGYqWf1nRmNvQBVx1NZrzkjtzgODbkkwF6u3s1iKZ4WQYbr/a3ef2GBE39hsAdG3qr26b3J39viNY8sTCN1YfjHSmLa/gJtdNheoKWmp9VmbIHYj5ImGsHF9X44vi6c= 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=mt+YqD2W; 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="mt+YqD2W" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-3a3798794d3so617456f8f.1 for ; Thu, 05 Jun 2025 03:50:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120613; x=1749725413; 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=l6klp9EUNzNQb89anQF9S8nNJOTrH6bgf7Ht0lN5b5Y=; b=mt+YqD2W7wG3zPxuBuxmlZBTOSl4xgWdqw5Kx/7rWDH+AnU9+HyyMPNUGpUl5ei7Gc cHKEGuHJAAapWEdI38+s4wcA/84ZaneXxsepP11WYgHv1VSv0BofutwSAlQfZdYvPI35 0GSLa9FJcbOrB1y01OaPruMYSlgul5SrQSmjdcwfC5wVPrpJLm3Nu/JIbq/pzIUQa9Y/ 712djwtbUi7OcYS/+NWM9vOWTCk+pFZP3BBhP0hZrHGxurpHBLFX+JZZEXzfWw6ZfeqR BYWi8UT1c5aeatFPgfwtLkfTVVJQw0f/JStBeRK9xa19RavK/H0MZWsp14e03g1n5tCY gPnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120613; x=1749725413; 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=l6klp9EUNzNQb89anQF9S8nNJOTrH6bgf7Ht0lN5b5Y=; b=sQVGu8855TNCfmQ8D7U9dCQslHIze4qbi4qIixNCyCNQaS8IinrXJGCXa8pvvJyqEL NWQV8B9+tbdU4C9We7qlLm+iVgRZb4TKx0e6wZyXEu34TmQxoDl2mZN6y+++8+fyeQzP Vmo/eGY2lZmKtBW5k6E5cmoAIao6bTtQ5NDy6HEywBLaM5ZrU+6oz0GneqO4lJSNEjNo mc35qRsOVQMiFtc5To6ecwGWZXKO/ZPJRoH0T/aPiHjr+Om79BK9sxiorHH3uSd3g29f bf2r9sCZlhqN+12A9zK3E8snVe6f1WPnyl3OWVSVehkGLHPJUupCwTF+fdjREwnSS9mG PFpg== X-Forwarded-Encrypted: i=1; AJvYcCW7Vs6Zp+u5fzhLb11i4vIU2YVpHON9OQLoUOu7iac9Z7jWX2Xij5gm7FsWaQXxb9LDLOpoKra+2db0qlM=@vger.kernel.org X-Gm-Message-State: AOJu0Yyfk91XEunj/5FMmmYzTh7H7/RfFK5OMRth6NMQWzUOv5jeTnE6 HJQW0AFq1S+gmKWVktvIjcjV9sRhTi+BKQkNkhfuLS32UKJ2TOJhTLrRmWIjzwn99kQ= X-Gm-Gg: ASbGncsGm5Z8VPQiRuGSSmeggm0V9j10tigLAMdfJFrB4MulkbYw4nw3pTPr391uvqa NIo3VBsmURYjQIGHcD8Mfna9TkQdPfWBDtjQUTJHWTcjLC4IEBQaq1V339iYIO+XqFZCfyboaEM wBSu0HjQx6lldF/OwEQCd/Flz5TCBEqurhyUQ5hlKuz4aXmqjxHt+XV4TGNjYTJbwbCAgBEZIiL L/Vb5yc34vuNwfsRQJqlK55KiPREgv575RRBTHHRwbBc3uNgWsrs4LehtBLjVS/P/98ptqm+sM3 DffdadeyMT/Yxrmx5O9QT87Dl/Yn0XJ7tVzFA+slle7Ccl+4Bnqb2dFp4j95DsRxmKSIH4E= X-Google-Smtp-Source: AGHT+IH02Sm8uYqylsDIHsGX3ZEWWx30EqeNhSMG+4n8yfcZZZ5mpZsxJSCawBIvfoWGFHbxRM6qAw== X-Received: by 2002:adf:e38c:0:b0:3a5:2670:e220 with SMTP id ffacd0b85a97d-3a52670e28dmr2309297f8f.32.1749120613386; Thu, 05 Jun 2025 03:50:13 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:13 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:06 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-8-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark X-Mailer: b4 0.14.0 To pickup config4 changes. Tested-by: Leo Yan Signed-off-by: James Clark Reviewed-by: Ian Rogers --- 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 78a362b80027..0d0ed85ad8cb 100644 --- a/tools/include/uapi/linux/perf_event.h +++ b/tools/include/uapi/linux/perf_event.h @@ -382,6 +382,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 /* * 'struct perf_event_attr' contains various attributes that define @@ -543,6 +544,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 Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D3A2250BEC for ; Thu, 5 Jun 2025 10:50:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120619; cv=none; b=fAMVtODeFLLwl7SEXpUPkbY4OnHQx9KtTdJXNGd7+WegU2Lh1kDXU5yb2grQZukUWtlJgxep2Wrzet1plIH3kwOexpb71uMa1gNADwbZXRV41A1fuwy02hSjTrtIxkGTd6yF/KCJcHqWW4AY5wqciQ9UsqiEGGtZE7Fu65i2IfI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120619; c=relaxed/simple; bh=zEhlu09ovEaZOKs03esXMkQBz9lJahTpuBkvyALKn4E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=BthUesOsvgTnHET9aC5Gu/zFr+m8o+HC0Vh9TQ/kYasZbGjuEWPLnyqvyX2vtJk2dJD13kIL2BaTjEvp6OcZs0ggcG6fHsAyyZde5EMekJfnEjvVgi3MEujnXmG5TwAwJ2PdDSWzwWxc3Ql+LeDp5u6ytLuxQb3LBNGOGUtW0sQ= 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=ploSAE7C; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ploSAE7C" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-450ce671a08so4984635e9.3 for ; Thu, 05 Jun 2025 03:50:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120616; x=1749725416; 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=dAXIxI7OfKIjbF0vv8PgxXhY9PyJCfDAmY7uglgU/88=; b=ploSAE7CLrAyCXhAhoZ/kxqDiLRm0KubNoCPCaYFTWR4FGtAEDx7XErzMlTjfrrK8u LwPz4e5eXd2o77J/hJxVc9IE6LPlST3U56HTB3J2lZYkpfuEjt+yrLZ1KDnNv1uWAasf cI5/UE0jOBv9HqWWpjMHogGVgntlsZ/GYze6kyN1uqYzcBTCtCT0n7BmsdwvDL11KYtR 6qeJvyEQ2yNYP1X/1/W20I5O0o1dUHWCaHTQ3JpXd+PRca35YpkTqs+bZrBIXoat3Tk2 1ZPrZNPlefp/lMa+fCJ6U4vBtX6UaKcK/Ug3Y8AkhlV8OLrelxGiC+ZSBeSSYtdmC+oA RmBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120616; x=1749725416; 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=dAXIxI7OfKIjbF0vv8PgxXhY9PyJCfDAmY7uglgU/88=; b=HAojMVxONFJfHHodI0p8F8rLT7amybZm27SzqxvnVOsiLWKAzlTQAhdCqIUIex8W9X uZuuI1JEJVkacc9zR9XNOh9VZo9OemSPV5D5uICBOWhpG181EPirMbv/LhB7X3zj0J2o WUvH4cR9b7me6LdToXlpnjyRT7vBZvcVx2Ja+91SlCBdCpKaAibnX3w+ok5pXDH8rNBe o4dDoxW0VlscFxYO43tLNQRZgHSY6/bYeF7YTR4OFate1ZSPzRBOiUtEuRJmjvrsEuZ7 letHNF8nqUwR07+cwNLwr44ZcLj5f5oT2VEPm+EAptEeCL3NIRI+63mYFGB8JPx34pWs gWHQ== X-Forwarded-Encrypted: i=1; AJvYcCX43NP5qUQwuI52FsfcE1tInBOlhNlx2sCVsfQdLZTEanuB2vLZet6DtXIEchb3uqGL163OOeVc4R08omc=@vger.kernel.org X-Gm-Message-State: AOJu0YxrNmaO54sEfIroVvVuTFeCUE5ZJ5GulVVSaF+Tyr3fxp33i5s7 UQ6eJKtzxlXHID1lRF5kcNfKHYHm+n3gjejTGuD1L9NQB47gRGLWAIZ232xrHAqLA6Y= X-Gm-Gg: ASbGncv0KrF6w2qcGjxpqBxFjQSQ6VajieVvo3uGS3JJacfYG47bIOeTeZkTYMTHj1d hdUzhjaWvwNfxOQ/WZDAxopUe10cRthHQq5NDA1GJrwVPoPwoCH9sdw+4zoHGju/8cO4B25dWAi W6KW6vhL5eXOHYL77LU6XhmcZpYE2WiYrRfTuVktalKYES9aBB6ng5jEXE8UtASK4w6m8dLzvpU ASZcrrPj+ym0dTVVHrU7ms8Ev2nhhPq5YjOawRz/ZwhoHrDjTcrPqP3ZUEVcnJJYxT/8hyX1d7q 1/lc9Tjxt722FM2M6oZSUoexS8yX46EPLVNmcBIWOGEOA+xMBXYdJ4e3ujj0 X-Google-Smtp-Source: AGHT+IHZo0Ck4E84VJd3GKyW2ekyFu6T9vScbNw/zT6Odp7RH4tpxZ39fqaufj9ZQhUcfJ+GFqsoNA== X-Received: by 2002:a05:600c:8116:b0:43d:db5:7af8 with SMTP id 5b1f17b1804b1-451f0b08973mr48133625e9.21.1749120615627; Thu, 05 Jun 2025 03:50:15 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:15 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:07 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-9-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. Reviewed-by: Leo Yan Reviewed-by: Ian Rogers Tested-by: Leo Yan Signed-off-by: James Clark --- 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 2380de56a207..2fccdf5879c8 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -291,6 +291,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"); } } else { is_pmu_core =3D (attr->type =3D=3D PERF_TYPE_HARDWARE || @@ -848,6 +850,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", @@ -896,6 +899,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: @@ -965,6 +969,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; @@ -1173,6 +1181,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: @@ -1314,6 +1323,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: @@ -1352,6 +1362,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 ab242f671031..81af219cafb3 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 4af7b9c1f44d..3f83aaf33a34 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 609828513f6c..c7782916f932 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -1508,6 +1508,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_CPU: @@ -1555,6 +1559,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; } @@ -1875,6 +1882,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 71b8636fd07d..49ac47e2b44f 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -23,6 +23,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 Fri Dec 19 19:17:56 2025 Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) (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 8CA49255F2B for ; Thu, 5 Jun 2025 10:50:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.66 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120622; cv=none; b=l7kYvYjxnyEcFEQMW1U2x9IxrzEit52gsvGjyo2JzJNrIewyNHa8k4FSQFfVEZhfFh27KCKse+PDsJsHTMIO5za6Fxxb5M0pgwyE67jkL6H5v+ayAdnrdkf6TdhUTNEPS5A2ysZTtJvfF0jmWnTePS54s1prr9CXjKlHXjSfC7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749120622; c=relaxed/simple; bh=MMFbkI7zMPzBdRBdPQfb7pTJMjgrsMrJkf8SuH2PcGg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mkMo8EBNKEh9Kh5xPX9x0xfwtA6gXN71jLU8COXf4HGOQ5mWvTDMbL7KV8sYH1G0i1zYaJn9GqqoWCNUsPje6woc5bhJtofAP5+Az44xDgsvqs0Vv6yhG9oiQTED1Amxj/RdhG2mj+gHDYY94zFVbZpOKKEC/MHOBFgZFTjQ6cw= 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=s5Yneaw9; arc=none smtp.client-ip=209.85.128.66 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="s5Yneaw9" Received: by mail-wm1-f66.google.com with SMTP id 5b1f17b1804b1-451d6ade159so6450635e9.1 for ; Thu, 05 Jun 2025 03:50:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1749120618; x=1749725418; 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=TYtpnIAkK3WcCc9sKEGdtsuC5KifjqgSXfNa01d683g=; b=s5Yneaw9KHvOhvd1NjYXiRndEXnRicPmtfIvSUpJbU4CCeD8zAHMw05ghUhtLD+CN9 04gMz20XVIlaXkPYZ6p6u/AFHBvE83BFdOmbcqUrZGCsksipl/+FssurC3dVPFIH2n/7 5AwcwzvmEQwUH9MjBGot+IjCqn+ovnNFszmQ5f17cijwjM2N+cEuIDD6TshMxKVX4JYl gqsAkETajdXLmeBDTn/ahpqkei0SopherOOmOj37Gg8H2XO53TW69UoalfV4asZbQ1p/ bZyDiXQC2cTwyMrj402S5bLSVBYAhHj29o2DKqQToy1j/YsxvvQTiMavQytnkwUv7mbx pvPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749120618; x=1749725418; 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=TYtpnIAkK3WcCc9sKEGdtsuC5KifjqgSXfNa01d683g=; b=xCZ2iQ8ozqPNo9j0mH+aMXNxwUTvQZTnp04byStKyYQvJs1t/PuVL+/RmmcT+P/zLR bM50WHHMxeuUu/wLQJ4Cgwmkw+q9W+ezpidmW4HgNNC39fAgnWgvyBp2DdLKd33qUiPd /5k3uLKcvLg9vXDjF/6d703MqexDJOx7BK5IplyW5BpBksfjcdcU2sYVwL+x4ZJVxaTS B1SKfcMCvm8C8lG1dwoErpNqstVtLu/0x09WV4AcRbgju2D7pWbOiWXbDIsTB0jT0jIE S+8we4ktdT361r7SaIhaubCoRPjCWA3yazTV72EpUYl02C2Cf+Kod7SHrpAIbgKg2NW8 pYjA== X-Forwarded-Encrypted: i=1; AJvYcCXnyc3dcTJhG8TwC/rR5hLBtwFJ2wNrxdD55PQ0YRISOgeBpnhHIOJMXQBuLXpqmnxYP/5RtCgcZmj/UDs=@vger.kernel.org X-Gm-Message-State: AOJu0YwyZM9x2MMoLHMaTdTLbR9bGgXs+swUMPsew7NjFRgrNSc1A+uc jzSFVerrzQE+qFAZsuQXzu7xi8Fk4pTq7fH4fGlV0DWcF3vV8pzKL5NXr8wEZOdNYUE= X-Gm-Gg: ASbGnctG4AiHbP4IB+8HhMGBdb9a5WXurFA1IL0UjetH+tb9JTGjDlghm7dsBxqMn9Y o5nIkz3NdUYb7ygmEwMYeJaiE3dKcAslwk6O3nxxNz9xuClZbszP6cZpcgb91nxWddJT316WNun g5qmZmSnjhGARfiXW3inWDS+b5lo9OkQE51s8Zxhi+S9Mm4/ALRCKkS3AMRadckA2A3gvWxBwI7 OS3BEQdwZ035UBqd2WUyxwE7lFRzVwf37pP9UJvMPxP55sOXhyGuyIvn25RE8ObwkQv/IG64peA yea82w1zJ4yXf37pH2LlFI349uWlkm/t1vyOPTOewZJlw2JoWfsELISSVYxZ X-Google-Smtp-Source: AGHT+IF209QtdWKQIFSgWNU834ITMWh9f6gxkjT2rjm5O4GQe4Nyl3IJTR6vikF94ywt0/mEA5L8wg== X-Received: by 2002:a05:600c:548d:b0:43c:f597:d589 with SMTP id 5b1f17b1804b1-451f0b20d15mr54093555e9.27.1749120617749; Thu, 05 Jun 2025 03:50:17 -0700 (PDT) Received: from ho-tower-lan.lan ([37.18.136.128]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-451f990cfe3sm20629965e9.23.2025.06.05.03.50.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Jun 2025 03:50:16 -0700 (PDT) From: James Clark Date: Thu, 05 Jun 2025 11:49:08 +0100 Subject: [PATCH v3 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: <20250605-james-perf-feat_spe_eft-v3-10-71b0c9f98093@linaro.org> References: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> In-Reply-To: <20250605-james-perf-feat_spe_eft-v3-0-71b0c9f98093@linaro.org> To: Catalin Marinas , Will Deacon , Mark Rutland , Jonathan Corbet , Marc Zyngier , Oliver Upton , Joey Gouly , Suzuki K Poulose , Zenghui Yu , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , leo.yan@arm.com Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, linux-doc@vger.kernel.org, kvmarm@lists.linux.dev, James Clark 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. Reviewed-by: Leo Yan Tested-by: Leo Yan Signed-off-by: James Clark Reviewed-by: Ian Rogers --- tools/perf/Documentation/perf-arm-spe.txt | 97 +++++++++++++++++++++++++++= +--- 1 file changed, 88 insertions(+), 9 deletions(-) diff --git a/tools/perf/Documentation/perf-arm-spe.txt b/tools/perf/Documen= tation/perf-arm-spe.txt index 37afade4f1b2..4092b53b58d2 100644 --- a/tools/perf/Documentation/perf-arm-spe.txt +++ b/tools/perf/Documentation/perf-arm-spe.txt @@ -141,27 +141,65 @@ 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 OR to filter out specific events (PM= SNEVFR, 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: - - bit 1 - instruction retired (i.e. omit speculative instructions) +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= . When +FEAT_SPEv1p2 is implemented 'inv_event_filter' can also be used to exclude +events that have any (OR) of the filter's bits set. For example setting bi= ts 3 +and 5 in 'inv_event_filter' will exclude any events that are either L1D ca= che +refill OR TLB walk. If the same bit is set in both filters it's UNPREDICTA= BLE +whether the sample is included or excluded. Filter bits for both event_fil= ter +and inv_event_filter are: + + 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 - Transaction (FEAT_TME) + 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, only vers= ions + less than FEAT_SPEv1p4) + bit 25 - SMCU or external coprocessor operation event when FEAT_SPE_S= ME is + implemented, or IMPLEMENTATION DEFINED event 25 (when implem= ented, + only versions less than FEAT_SPEv1p4) + 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 +209,31 @@ 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), SIMD and float +pointer operations can also be selected: + + 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) + +When extended filtering is supported (FEAT_SPE_EFT), operation type filter= s can +be changed to AND using _mask fields. For example samples could be selecte= d if +they are store AND SIMD by setting 'store_filter=3D1,simd_filter=3D1, +store_filter_mask=3D1,simd_filter_mask=3D1'. The new masks 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) + Viewing the data ~~~~~~~~~~~~~~~~~ =20 @@ -204,6 +267,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 +314,18 @@ 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 +on a subset (0 - 63) of possible data source IDs. The full range of data s= ources +is 0 - 65535 although these are unlikely to be used in practice. Data sour= ces +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 sett= ing +bits 0 and 3 includes only packets from data sources 0 OR 3. When +'data_src_filter' is set to 0 data source filtering is disabled and all da= ta +sources are included. + SEE ALSO -------- =20 --=20 2.34.1