@@ -398,6 +398,12 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr2[] = {
398
398
ARM64_FTR_END ,
399
399
};
400
400
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
+
401
407
static const struct arm64_ftr_bits ftr_ctr [] = {
402
408
ARM64_FTR_BITS (FTR_VISIBLE , FTR_STRICT , FTR_EXACT , 31 , 1 , 1 ), /* RES1 */
403
409
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 {
724
730
ARM64_FTR_REG_OVERRIDE (SYS_ID_AA64MMFR1_EL1 , ftr_id_aa64mmfr1 ,
725
731
& id_aa64mmfr1_override ),
726
732
ARM64_FTR_REG (SYS_ID_AA64MMFR2_EL1 , ftr_id_aa64mmfr2 ),
733
+ ARM64_FTR_REG (SYS_ID_AA64MMFR3_EL1 , ftr_id_aa64mmfr3 ),
727
734
728
735
/* Op1 = 0, CRn = 1, CRm = 2 */
729
736
ARM64_FTR_REG (SYS_ZCR_EL1 , ftr_zcr ),
@@ -1019,6 +1026,7 @@ void __init init_cpu_features(struct cpuinfo_arm64 *info)
1019
1026
init_cpu_ftr_reg (SYS_ID_AA64MMFR0_EL1 , info -> reg_id_aa64mmfr0 );
1020
1027
init_cpu_ftr_reg (SYS_ID_AA64MMFR1_EL1 , info -> reg_id_aa64mmfr1 );
1021
1028
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 );
1022
1030
init_cpu_ftr_reg (SYS_ID_AA64PFR0_EL1 , info -> reg_id_aa64pfr0 );
1023
1031
init_cpu_ftr_reg (SYS_ID_AA64PFR1_EL1 , info -> reg_id_aa64pfr1 );
1024
1032
init_cpu_ftr_reg (SYS_ID_AA64ZFR0_EL1 , info -> reg_id_aa64zfr0 );
@@ -1264,6 +1272,8 @@ void update_cpu_features(int cpu,
1264
1272
info -> reg_id_aa64mmfr1 , boot -> reg_id_aa64mmfr1 );
1265
1273
taint |= check_update_ftr_reg (SYS_ID_AA64MMFR2_EL1 , cpu ,
1266
1274
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 );
1267
1277
1268
1278
taint |= check_update_ftr_reg (SYS_ID_AA64PFR0_EL1 , cpu ,
1269
1279
info -> reg_id_aa64pfr0 , boot -> reg_id_aa64pfr0 );
@@ -1393,6 +1403,7 @@ u64 __read_sysreg_by_encoding(u32 sys_id)
1393
1403
read_sysreg_case (SYS_ID_AA64MMFR0_EL1 );
1394
1404
read_sysreg_case (SYS_ID_AA64MMFR1_EL1 );
1395
1405
read_sysreg_case (SYS_ID_AA64MMFR2_EL1 );
1406
+ read_sysreg_case (SYS_ID_AA64MMFR3_EL1 );
1396
1407
read_sysreg_case (SYS_ID_AA64ISAR0_EL1 );
1397
1408
read_sysreg_case (SYS_ID_AA64ISAR1_EL1 );
1398
1409
read_sysreg_case (SYS_ID_AA64ISAR2_EL1 );
0 commit comments