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.cI'd also expect to see an update to arm64_elf_hwcaps[]?
signature.asc
Description: PGP signature
