From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id DD800C3DA59 for ; Mon, 15 Jul 2024 09:13:49 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6E4A06B0093; Mon, 15 Jul 2024 05:13:49 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 694F16B0095; Mon, 15 Jul 2024 05:13:49 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 55C786B0096; Mon, 15 Jul 2024 05:13:49 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 37DBF6B0093 for ; Mon, 15 Jul 2024 05:13:49 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 7B115C14DB for ; Mon, 15 Jul 2024 09:13:48 +0000 (UTC) X-FDA: 82341424536.29.0E87394 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf10.hostedemail.com (Postfix) with ESMTP id 528D3C0005 for ; Mon, 15 Jul 2024 09:13:46 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=none; spf=pass (imf10.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721034789; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=jhhQ+5XeSz66mCLOQZi5Wq3bvD8rxmb95Nxe5Zd6k0s=; b=oIlM4Exr0Xs36+DS9TG7Rs8Oj6tH192I45jNMSD7fXwipWQ2ioRV/Zw81AyYetJ4l7o1cy ogaRoZOojqnK559Mramnzp1vRnDAB4C+fYd5CCx2nAYdIyiiu3JTgM4OAJH9D+dRakgjGH R29mmcQoKQ75cReWD3JP+ZfXKy7CtHE= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721034789; a=rsa-sha256; cv=none; b=a6T6nkfyAgmcd+i7ALfhJUtGFBnjWf9iXi7noh1+B6qLzVKoaOO70xWcN3DgwYxJJaBeVS wL2+eL0FZiT830Yz+kSurYqPQUDQgC35kin5mFFI83Flph0JVvGE72rEm2uW4TiOzE79Mi 4CZqeCft460dX8zKrVxW18xgTJzeWTk= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=none; spf=pass (imf10.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com; dmarc=pass (policy=none) header.from=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id EE003DA7; Mon, 15 Jul 2024 02:14:09 -0700 (PDT) Received: from [10.162.40.16] (a077893.blr.arm.com [10.162.40.16]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 622603F73F; Mon, 15 Jul 2024 02:13:27 -0700 (PDT) Message-ID: <850c93dd-7cbe-4904-910e-a389884655d9@arm.com> Date: Mon, 15 Jul 2024 14:43:24 +0530 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v4 10/29] arm64: enable the Permission Overlay Extension for EL0 To: Joey Gouly , linux-arm-kernel@lists.infradead.org Cc: akpm@linux-foundation.org, aneesh.kumar@kernel.org, aneesh.kumar@linux.ibm.com, bp@alien8.de, broonie@kernel.org, catalin.marinas@arm.com, christophe.leroy@csgroup.eu, dave.hansen@linux.intel.com, hpa@zytor.com, linux-fsdevel@vger.kernel.org, linux-mm@kvack.org, linuxppc-dev@lists.ozlabs.org, maz@kernel.org, mingo@redhat.com, mpe@ellerman.id.au, naveen.n.rao@linux.ibm.com, npiggin@gmail.com, oliver.upton@linux.dev, shuah@kernel.org, szabolcs.nagy@arm.com, tglx@linutronix.de, will@kernel.org, x86@kernel.org, kvmarm@lists.linux.dev References: <20240503130147.1154804-1-joey.gouly@arm.com> <20240503130147.1154804-11-joey.gouly@arm.com> Content-Language: en-US From: Anshuman Khandual In-Reply-To: <20240503130147.1154804-11-joey.gouly@arm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 528D3C0005 X-Stat-Signature: 5fjdfd3drqnsgxrahgjqo9nia8fdei3j X-HE-Tag: 1721034826-29331 X-HE-Meta: U2FsdGVkX18g7CVn6JIH4hJ2DwtU9iuuYvAPXe9okaLDfs3PiBEutiOaQRIEEoNLDhKs9fxf5rrqV3f6PxWXPFMae5kVypIRC7yq0bd+hmfJwlq/8VI+yY2GJQI7ohJ9xBEN4mrqOWmLA1uIJimj/Tb5eEYCE8ZQMM3zubkwZwrRSSUyvmXyCB6qbnT10wrgHDM60Oess+/+1CTVm4vS7OihNBbAK46mj66glXF7QGeWt26Nd4al+s5DES8PTLbU9GUFIP9w/sFImFW8gDOR6z7CLGYcwQYi3GJEdpkEkgkn54v9fqy1hoAi0NzHI1IKY2cbObRGbtyttjV3ARPSgH9x6KqWHdYvdG9sBeUEW8RnQs/ckZeJnDUbB5iX/jxnN1PovbLXTmr242hD+n9PB1ZwiZLNQbX1TFMy0UjSai+Ox8ftfMqAWrncP8ktBO1XEMxX8jkRivA2EMkoAhCvxMQhZqJ2k/hLhK9tQk7hj9iwff+52nXIGBJFbRs+T/UOO7js8BKicvtDBVh+Xje31ysMy/ptWjFb2ecB7KMrKm+/B0RYgD4aA2mX+AUK/alEucdl5BYF7jtvLI5DEDZZlG+khe7iPq8YGFNr7WPB4jyfIByQDSb6qzcUEk/CHWD05dvrEtEwelmAiHsYgjcDlQ/Ybfn+uQITC4c6F3eoj41j252WiIel/7oaRkV6PNAvp9QQA54ptyXF/CrlHZiben+lv2xd9AltLAR9JrAAhhSRajAH19dXezMyhH8PZXHzCEjWoWC5OCCvkgBbJmy7xTz6dBI/L/5vd6VAERe5bAApuO0mHFYbNrN6ODmuc011cEmADvBgSWJvezFepO1qSVVw1a2Vm2GWJg0TNbJYgP4GF5jd+A8/9tsk3jLxXfNiXV+1TtTxCmXFg0wuia1mR51QC9L/oD7bU2n4swXCu+iy1tyi5KMPh//vQsqKCYLJWW5NWudffUrJU6YIzQr nHoj96fo KKR5cf384zZs8tvzYt41zR1VOPbQNZZ8s9Yg17xIIRFtOyY6OE/fTQ+tw4E1acqJv2HdQI9KfwzJQkk2tgsxkmYcmfhP6ZjGmQRRfBUyWeEMG76/1qCegukZNy5UtFr+pX9fZfZtE7RV/Ky/Pmr54cs9H4nXyR/1Qqkk+EOFK48Zry62xo51LnjNM5xVTWwkaBGQoKxvMlq1tlDyJQeJ97VT/VCm/6i3+RsfRAhCVNMR5qL2mp9K29gKRLuwdinxUPsuQM3sLRAO+qFjs8sQSTeGsT+opQWQXK0JB/MoeTuEJ4lHgo6FaFGB1BQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 5/3/24 18:31, Joey Gouly wrote: > Expose a HWCAP and ID_AA64MMFR3_EL1_S1POE to userspace, so they can be used to > check if the CPU supports the feature. > > Signed-off-by: Joey Gouly > Cc: Catalin Marinas > Cc: Will Deacon > --- > > This takes the last bit of HWCAP2, is this fine? What can we do about more features in the future? > > > Documentation/arch/arm64/elf_hwcaps.rst | 2 ++ > arch/arm64/include/asm/hwcap.h | 1 + > arch/arm64/include/uapi/asm/hwcap.h | 1 + > arch/arm64/kernel/cpufeature.c | 14 ++++++++++++++ > arch/arm64/kernel/cpuinfo.c | 1 + > 5 files changed, 19 insertions(+) > > diff --git a/Documentation/arch/arm64/elf_hwcaps.rst b/Documentation/arch/arm64/elf_hwcaps.rst > index 448c1664879b..694f67fa07d1 100644 > --- a/Documentation/arch/arm64/elf_hwcaps.rst > +++ b/Documentation/arch/arm64/elf_hwcaps.rst > @@ -365,6 +365,8 @@ HWCAP2_SME_SF8DP2 > HWCAP2_SME_SF8DP4 > Functionality implied by ID_AA64SMFR0_EL1.SF8DP4 == 0b1. > > +HWCAP2_POE > + Functionality implied by ID_AA64MMFR3_EL1.S1POE == 0b0001. > > 4. Unused AT_HWCAP bits > ----------------------- > diff --git a/arch/arm64/include/asm/hwcap.h b/arch/arm64/include/asm/hwcap.h > index 4edd3b61df11..a775adddecf2 100644 > --- a/arch/arm64/include/asm/hwcap.h > +++ b/arch/arm64/include/asm/hwcap.h > @@ -157,6 +157,7 @@ > #define KERNEL_HWCAP_SME_SF8FMA __khwcap2_feature(SME_SF8FMA) > #define KERNEL_HWCAP_SME_SF8DP4 __khwcap2_feature(SME_SF8DP4) > #define KERNEL_HWCAP_SME_SF8DP2 __khwcap2_feature(SME_SF8DP2) > +#define KERNEL_HWCAP_POE __khwcap2_feature(POE) > > /* > * This yields a mask that user programs can use to figure out what > diff --git a/arch/arm64/include/uapi/asm/hwcap.h b/arch/arm64/include/uapi/asm/hwcap.h > index 285610e626f5..055381b2c615 100644 > --- a/arch/arm64/include/uapi/asm/hwcap.h > +++ b/arch/arm64/include/uapi/asm/hwcap.h > @@ -122,5 +122,6 @@ > #define HWCAP2_SME_SF8FMA (1UL << 60) > #define HWCAP2_SME_SF8DP4 (1UL << 61) > #define HWCAP2_SME_SF8DP2 (1UL << 62) > +#define HWCAP2_POE (1UL << 63) > > #endif /* _UAPI__ASM_HWCAP_H */ > diff --git a/arch/arm64/kernel/cpufeature.c b/arch/arm64/kernel/cpufeature.c > index 2f3c2346e156..8c02aae9db11 100644 > --- a/arch/arm64/kernel/cpufeature.c > +++ b/arch/arm64/kernel/cpufeature.c > @@ -465,6 +465,8 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr2[] = { > }; > > static const struct arm64_ftr_bits ftr_id_aa64mmfr3[] = { > + ARM64_FTR_BITS(FTR_VISIBLE_IF_IS_ENABLED(CONFIG_ARM64_POE), > + FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64MMFR3_EL1_S1POE_SHIFT, 4, 0), > ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64MMFR3_EL1_S1PIE_SHIFT, 4, 0), > ARM64_FTR_BITS(FTR_HIDDEN, FTR_NONSTRICT, FTR_LOWER_SAFE, ID_AA64MMFR3_EL1_TCRX_SHIFT, 4, 0), > ARM64_FTR_END, > @@ -2339,6 +2341,14 @@ static void cpu_enable_mops(const struct arm64_cpu_capabilities *__unused) > sysreg_clear_set(sctlr_el1, 0, SCTLR_EL1_MSCEn); > } > > +#ifdef CONFIG_ARM64_POE > +static void cpu_enable_poe(const struct arm64_cpu_capabilities *__unused) > +{ > + sysreg_clear_set(REG_TCR2_EL1, 0, TCR2_EL1x_E0POE); > + sysreg_clear_set(CPACR_EL1, 0, CPACR_ELx_E0POE); > +} > +#endif > + > /* Internal helper functions to match cpu capability type */ > static bool > cpucap_late_cpu_optional(const struct arm64_cpu_capabilities *cap) > @@ -2867,6 +2877,7 @@ static const struct arm64_cpu_capabilities arm64_features[] = { > .capability = ARM64_HAS_S1POE, > .type = ARM64_CPUCAP_BOOT_CPU_FEATURE, > .matches = has_cpuid_feature, > + .cpu_enable = cpu_enable_poe, > ARM64_CPUID_FIELDS(ID_AA64MMFR3_EL1, S1POE, IMP) > }, > #endif > @@ -3034,6 +3045,9 @@ static const struct arm64_cpu_capabilities arm64_elf_hwcaps[] = { > HWCAP_CAP(ID_AA64FPFR0_EL1, F8DP2, IMP, CAP_HWCAP, KERNEL_HWCAP_F8DP2), > HWCAP_CAP(ID_AA64FPFR0_EL1, F8E4M3, IMP, CAP_HWCAP, KERNEL_HWCAP_F8E4M3), > HWCAP_CAP(ID_AA64FPFR0_EL1, F8E5M2, IMP, CAP_HWCAP, KERNEL_HWCAP_F8E5M2), > +#ifdef CONFIG_ARM64_POE > + HWCAP_CAP(ID_AA64MMFR3_EL1, S1POE, IMP, CAP_HWCAP, KERNEL_HWCAP_POE), > +#endif > {}, > }; > > diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c > index 09eeaa24d456..b9db812082b3 100644 > --- a/arch/arm64/kernel/cpuinfo.c > +++ b/arch/arm64/kernel/cpuinfo.c > @@ -143,6 +143,7 @@ static const char *const hwcap_str[] = { > [KERNEL_HWCAP_SME_SF8FMA] = "smesf8fma", > [KERNEL_HWCAP_SME_SF8DP4] = "smesf8dp4", > [KERNEL_HWCAP_SME_SF8DP2] = "smesf8dp2", > + [KERNEL_HWCAP_POE] = "poe", > }; > > #ifdef CONFIG_COMPAT This LGTM but as Joey mentioned earlier, what happens when another new feature gets added later which needs to be exposed to userspace, add HWCAP3 ? Reviewed-by: Anshuman Khandual