@@ -398,6 +398,12 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr2[] = {
398398 ARM64_FTR_END ,
399399};
400400
401+ static const struct arm64_ftr_bits ftr_id_aa64mmfr3 [] = {
402+ ARM64_FTR_BITS (FTR_HIDDEN , FTR_NONSTRICT , FTR_LOWER_SAFE , ID_AA64MMFR3_EL1_S1PIE_SHIFT , 4 , 0 ),
403+ ARM64_FTR_BITS (FTR_HIDDEN , FTR_NONSTRICT , FTR_LOWER_SAFE , ID_AA64MMFR3_EL1_TCRX_SHIFT , 4 , 0 ),
404+ ARM64_FTR_END ,
405+ };
406+
401407static const struct arm64_ftr_bits ftr_ctr [] = {
402408 ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_EXACT , 31 , 1 , 1 ), /* RES1 */
403409 ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_LOWER_SAFE , CTR_EL0_DIC_SHIFT , 1 , 1 ),
@@ -724,6 +730,7 @@ static const struct __ftr_reg_entry {
724730 ARM64_FTR_REG_OVERRIDE (SYS_ID_AA64MMFR1_EL1 , ftr_id_aa64mmfr1 ,
725731 & id_aa64mmfr1_override ),
726732 ARM64_FTR_REG (SYS_ID_AA64MMFR2_EL1 , ftr_id_aa64mmfr2 ),
733+ ARM64_FTR_REG (SYS_ID_AA64MMFR3_EL1 , ftr_id_aa64mmfr3 ),
727734
728735 /* Op1 = 0, CRn = 1, CRm = 2 */
729736 ARM64_FTR_REG (SYS_ZCR_EL1 , ftr_zcr ),
@@ -1019,6 +1026,7 @@ void __init init_cpu_features(struct cpuinfo_arm64 *info)
10191026 init_cpu_ftr_reg (SYS_ID_AA64MMFR0_EL1 , info -> reg_id_aa64mmfr0 );
10201027 init_cpu_ftr_reg (SYS_ID_AA64MMFR1_EL1 , info -> reg_id_aa64mmfr1 );
10211028 init_cpu_ftr_reg (SYS_ID_AA64MMFR2_EL1 , info -> reg_id_aa64mmfr2 );
1029+ init_cpu_ftr_reg (SYS_ID_AA64MMFR3_EL1 , info -> reg_id_aa64mmfr3 );
10221030 init_cpu_ftr_reg (SYS_ID_AA64PFR0_EL1 , info -> reg_id_aa64pfr0 );
10231031 init_cpu_ftr_reg (SYS_ID_AA64PFR1_EL1 , info -> reg_id_aa64pfr1 );
10241032 init_cpu_ftr_reg (SYS_ID_AA64ZFR0_EL1 , info -> reg_id_aa64zfr0 );
@@ -1264,6 +1272,8 @@ void update_cpu_features(int cpu,
12641272 info -> reg_id_aa64mmfr1 , boot -> reg_id_aa64mmfr1 );
12651273 taint |= check_update_ftr_reg (SYS_ID_AA64MMFR2_EL1 , cpu ,
12661274 info -> reg_id_aa64mmfr2 , boot -> reg_id_aa64mmfr2 );
1275+ taint |= check_update_ftr_reg (SYS_ID_AA64MMFR3_EL1 , cpu ,
1276+ info -> reg_id_aa64mmfr3 , boot -> reg_id_aa64mmfr3 );
12671277
12681278 taint |= check_update_ftr_reg (SYS_ID_AA64PFR0_EL1 , cpu ,
12691279 info -> reg_id_aa64pfr0 , boot -> reg_id_aa64pfr0 );
@@ -1393,6 +1403,7 @@ u64 __read_sysreg_by_encoding(u32 sys_id)
13931403 read_sysreg_case (SYS_ID_AA64MMFR0_EL1 );
13941404 read_sysreg_case (SYS_ID_AA64MMFR1_EL1 );
13951405 read_sysreg_case (SYS_ID_AA64MMFR2_EL1 );
1406+ read_sysreg_case (SYS_ID_AA64MMFR3_EL1 );
13961407 read_sysreg_case (SYS_ID_AA64ISAR0_EL1 );
13971408 read_sysreg_case (SYS_ID_AA64ISAR1_EL1 );
13981409 read_sysreg_case (SYS_ID_AA64ISAR2_EL1 );
0 commit comments