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[]?

Attachment: signature.asc
Description: PGP signature

Reply via email to