Skip to content

Commit 805bb61

Browse files
Marc Zyngieroupton
authored andcommitted
arm64: cpufeature: Add ID_AA64MMFR4_EL1 handling
Add ID_AA64MMFR4_EL1 to the list of idregs the kernel knows about, and describe the E2H0 field. Reviewed-by: Oliver Upton <[email protected]> Reviewed-by: Suzuki K Poulose <[email protected]> Signed-off-by: Marc Zyngier <[email protected]> Reviewed-by: Catalin Marinas <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Oliver Upton <[email protected]>
1 parent cfc680b commit 805bb61

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-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_aa64mmfr1;
5757
u64 reg_id_aa64mmfr2;
5858
u64 reg_id_aa64mmfr3;
59+
u64 reg_id_aa64mmfr4;
5960
u64 reg_id_aa64pfr0;
6061
u64 reg_id_aa64pfr1;
6162
u64 reg_id_aa64zfr0;

arch/arm64/kernel/cpufeature.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,11 @@ static const struct arm64_ftr_bits ftr_id_aa64mmfr3[] = {
437437
ARM64_FTR_END,
438438
};
439439

440+
static const struct arm64_ftr_bits ftr_id_aa64mmfr4[] = {
441+
S_ARM64_FTR_BITS(FTR_HIDDEN, FTR_STRICT, FTR_LOWER_SAFE, ID_AA64MMFR4_EL1_E2H0_SHIFT, 4, 0),
442+
ARM64_FTR_END,
443+
};
444+
440445
static const struct arm64_ftr_bits ftr_ctr[] = {
441446
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_EXACT, 31, 1, 1), /* RES1 */
442447
ARM64_FTR_BITS(FTR_VISIBLE, FTR_STRICT, FTR_LOWER_SAFE, CTR_EL0_DIC_SHIFT, 1, 1),
@@ -754,6 +759,7 @@ static const struct __ftr_reg_entry {
754759
&id_aa64mmfr1_override),
755760
ARM64_FTR_REG(SYS_ID_AA64MMFR2_EL1, ftr_id_aa64mmfr2),
756761
ARM64_FTR_REG(SYS_ID_AA64MMFR3_EL1, ftr_id_aa64mmfr3),
762+
ARM64_FTR_REG(SYS_ID_AA64MMFR4_EL1, ftr_id_aa64mmfr4),
757763

758764
/* Op1 = 1, CRn = 0, CRm = 0 */
759765
ARM64_FTR_REG(SYS_GMID_EL1, ftr_gmid),
@@ -1078,6 +1084,7 @@ void __init init_cpu_features(struct cpuinfo_arm64 *info)
10781084
init_cpu_ftr_reg(SYS_ID_AA64MMFR1_EL1, info->reg_id_aa64mmfr1);
10791085
init_cpu_ftr_reg(SYS_ID_AA64MMFR2_EL1, info->reg_id_aa64mmfr2);
10801086
init_cpu_ftr_reg(SYS_ID_AA64MMFR3_EL1, info->reg_id_aa64mmfr3);
1087+
init_cpu_ftr_reg(SYS_ID_AA64MMFR4_EL1, info->reg_id_aa64mmfr4);
10811088
init_cpu_ftr_reg(SYS_ID_AA64PFR0_EL1, info->reg_id_aa64pfr0);
10821089
init_cpu_ftr_reg(SYS_ID_AA64PFR1_EL1, info->reg_id_aa64pfr1);
10831090
init_cpu_ftr_reg(SYS_ID_AA64ZFR0_EL1, info->reg_id_aa64zfr0);

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_aa64mmfr1 = read_cpuid(ID_AA64MMFR1_EL1);
448448
info->reg_id_aa64mmfr2 = read_cpuid(ID_AA64MMFR2_EL1);
449449
info->reg_id_aa64mmfr3 = read_cpuid(ID_AA64MMFR3_EL1);
450+
info->reg_id_aa64mmfr4 = read_cpuid(ID_AA64MMFR4_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)