[PATCH v1 07/20] arm64: enable the Permission Overlay Extension for EL0
Mark Brown
broonie at kernel.org
Thu Oct 5 07:19:48 PDT 2023
On Wed, Sep 27, 2023 at 03:01:10PM +0100, Joey Gouly wrote:
> --- a/arch/arm64/kernel/cpufeature.c
> +++ b/arch/arm64/kernel/cpufeature.c
> @@ -400,6 +400,7 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr2[] = {
> };
>
> static const struct arm64_ftr_bits ftr_id_aa64mmfr3[] = {
> + ARM64_FTR_BITS(FTR_VISIBLE, 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,
> @@ -2220,6 +2221,12 @@ static void cpu_enable_mops(const struct arm64_cpu_capabilities *__unused)
> sysreg_clear_set(sctlr_el1, 0, SCTLR_EL1_MSCEn);
> }
>
> +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);
> +}
> +
> /* Internal helper functions to match cpu capability type */
> static bool
> cpucap_late_cpu_optional(const struct arm64_cpu_capabilities *cap)
> @@ -2724,6 +2731,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)
> },
> {},
> diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c
I'd also expect to see an update to arm64_elf_hwcaps[]?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20231005/2c543f2a/attachment.sig>
More information about the linux-arm-kernel
mailing list