Skip to content

Commit edc2589

Browse files
jgoulyctmarinas
authored andcommitted
arm64: cpufeature: add system register ID_AA64MMFR3
Add new system register ID_AA64MMFR3 to the cpufeature infrastructure. Signed-off-by: Joey Gouly <[email protected]> Cc: Will Deacon <[email protected]> Reviewed-by: Catalin Marinas <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Catalin Marinas <[email protected]>
1 parent c36ad19 commit edc2589

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

arch/arm64/include/asm/cpu.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ struct cpuinfo_arm64 {
5656
u64 reg_id_aa64mmfr0;
5757
u64 reg_id_aa64mmfr1;
5858
u64 reg_id_aa64mmfr2;
59+
u64 reg_id_aa64mmfr3;
5960
u64 reg_id_aa64pfr0;
6061
u64 reg_id_aa64pfr1;
6162
u64 reg_id_aa64zfr0;

arch/arm64/kernel/cpufeature.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
401407
static 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);

arch/arm64/kernel/cpuinfo.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,7 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info)
447447
info->reg_id_aa64mmfr0 = read_cpuid(ID_AA64MMFR0_EL1);
448448
info->reg_id_aa64mmfr1 = read_cpuid(ID_AA64MMFR1_EL1);
449449
info->reg_id_aa64mmfr2 = read_cpuid(ID_AA64MMFR2_EL1);
450+
info->reg_id_aa64mmfr3 = read_cpuid(ID_AA64MMFR3_EL1);
450451
info->reg_id_aa64pfr0 = read_cpuid(ID_AA64PFR0_EL1);
451452
info->reg_id_aa64pfr1 = read_cpuid(ID_AA64PFR1_EL1);
452453
info->reg_id_aa64zfr0 = read_cpuid(ID_AA64ZFR0_EL1);

0 commit comments

Comments
 (0)