Skip to content

Commit 2aea7b7

Browse files
Marc Zyngierctmarinas
authored andcommitted
arm64: Use Signed/Unsigned enums for TGRAN{4,16,64} and VARange
Open-coding the feature matching parameters for LVA/LVA2 leads to issues with upcoming changes to the cpufeature code. By making TGRAN{4,16,64} and VARange signed/unsigned as per the architecture, we can use the existing macros, making the feature match robust against those changes. Signed-off-by: Marc Zyngier <[email protected]> Acked-by: Mark Rutland <[email protected]> Acked-by: Ard Biesheuvel <[email protected]> Tested-by: Ard Biesheuvel <[email protected]> Signed-off-by: Catalin Marinas <[email protected]>
1 parent 90e636f commit 2aea7b7

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

arch/arm64/kernel/cpufeature.c

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2706,24 +2706,15 @@ static const struct arm64_cpu_capabilities arm64_features[] = {
27062706
.capability = ARM64_HAS_VA52,
27072707
.type = ARM64_CPUCAP_BOOT_CPU_FEATURE,
27082708
.matches = has_cpuid_feature,
2709-
.field_width = 4,
27102709
#ifdef CONFIG_ARM64_64K_PAGES
27112710
.desc = "52-bit Virtual Addressing (LVA)",
2712-
.sign = FTR_SIGNED,
2713-
.sys_reg = SYS_ID_AA64MMFR2_EL1,
2714-
.field_pos = ID_AA64MMFR2_EL1_VARange_SHIFT,
2715-
.min_field_value = ID_AA64MMFR2_EL1_VARange_52,
2711+
ARM64_CPUID_FIELDS(ID_AA64MMFR2_EL1, VARange, 52)
27162712
#else
27172713
.desc = "52-bit Virtual Addressing (LPA2)",
2718-
.sys_reg = SYS_ID_AA64MMFR0_EL1,
27192714
#ifdef CONFIG_ARM64_4K_PAGES
2720-
.sign = FTR_SIGNED,
2721-
.field_pos = ID_AA64MMFR0_EL1_TGRAN4_SHIFT,
2722-
.min_field_value = ID_AA64MMFR0_EL1_TGRAN4_52_BIT,
2715+
ARM64_CPUID_FIELDS(ID_AA64MMFR0_EL1, TGRAN4, 52_BIT)
27232716
#else
2724-
.sign = FTR_UNSIGNED,
2725-
.field_pos = ID_AA64MMFR0_EL1_TGRAN16_SHIFT,
2726-
.min_field_value = ID_AA64MMFR0_EL1_TGRAN16_52_BIT,
2717+
ARM64_CPUID_FIELDS(ID_AA64MMFR0_EL1, TGRAN16, 52_BIT)
27272718
#endif
27282719
#endif
27292720
},

arch/arm64/tools/sysreg

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1540,16 +1540,16 @@ Enum 35:32 TGRAN16_2
15401540
0b0010 IMP
15411541
0b0011 52_BIT
15421542
EndEnum
1543-
Enum 31:28 TGRAN4
1543+
SignedEnum 31:28 TGRAN4
15441544
0b0000 IMP
15451545
0b0001 52_BIT
15461546
0b1111 NI
15471547
EndEnum
1548-
Enum 27:24 TGRAN64
1548+
SignedEnum 27:24 TGRAN64
15491549
0b0000 IMP
15501550
0b1111 NI
15511551
EndEnum
1552-
Enum 23:20 TGRAN16
1552+
UnsignedEnum 23:20 TGRAN16
15531553
0b0000 NI
15541554
0b0001 IMP
15551555
0b0010 52_BIT
@@ -1697,7 +1697,7 @@ Enum 23:20 CCIDX
16971697
0b0000 32
16981698
0b0001 64
16991699
EndEnum
1700-
Enum 19:16 VARange
1700+
UnsignedEnum 19:16 VARange
17011701
0b0000 48
17021702
0b0001 52
17031703
EndEnum

0 commit comments

Comments
 (0)