Skip to content

Commit e477c8c

Browse files
Anshuman KhandualMarc Zyngier
authored andcommitted
arm64/mm: Add FEAT_LPA2 specific ID_AA64MMFR0.TGRAN[2]
PAGE_SIZE support is tested against possible minimum and maximum values for its respective ID_AA64MMFR0.TGRAN field, depending on whether it is signed or unsigned. But then FEAT_LPA2 implementation needs to be validated for 4K and 16K page sizes via feature specific ID_AA64MMFR0.TGRAN values. Hence it adds FEAT_LPA2 specific ID_AA64MMFR0.TGRAN[2] values per ARM ARM (0487G.A). Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> Reviewed-by: Oliver Upton <oliver.upton@linux.dev> Signed-off-by: Ryan Roberts <ryan.roberts@arm.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20231127111737.1897081-5-ryan.roberts@arm.com
1 parent c910f2b commit e477c8c

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

arch/arm64/include/asm/sysreg.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -871,17 +871,20 @@
871871

872872
/* id_aa64mmfr0 */
873873
#define ID_AA64MMFR0_EL1_TGRAN4_SUPPORTED_MIN 0x0
874+
#define ID_AA64MMFR0_EL1_TGRAN4_LPA2 ID_AA64MMFR0_EL1_TGRAN4_52_BIT
874875
#define ID_AA64MMFR0_EL1_TGRAN4_SUPPORTED_MAX 0x7
875876
#define ID_AA64MMFR0_EL1_TGRAN64_SUPPORTED_MIN 0x0
876877
#define ID_AA64MMFR0_EL1_TGRAN64_SUPPORTED_MAX 0x7
877878
#define ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED_MIN 0x1
879+
#define ID_AA64MMFR0_EL1_TGRAN16_LPA2 ID_AA64MMFR0_EL1_TGRAN16_52_BIT
878880
#define ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED_MAX 0xf
879881

880882
#define ARM64_MIN_PARANGE_BITS 32
881883

882884
#define ID_AA64MMFR0_EL1_TGRAN_2_SUPPORTED_DEFAULT 0x0
883885
#define ID_AA64MMFR0_EL1_TGRAN_2_SUPPORTED_NONE 0x1
884886
#define ID_AA64MMFR0_EL1_TGRAN_2_SUPPORTED_MIN 0x2
887+
#define ID_AA64MMFR0_EL1_TGRAN_2_SUPPORTED_LPA2 0x3
885888
#define ID_AA64MMFR0_EL1_TGRAN_2_SUPPORTED_MAX 0x7
886889

887890
#ifdef CONFIG_ARM64_PA_BITS_52
@@ -892,11 +895,13 @@
892895

893896
#if defined(CONFIG_ARM64_4K_PAGES)
894897
#define ID_AA64MMFR0_EL1_TGRAN_SHIFT ID_AA64MMFR0_EL1_TGRAN4_SHIFT
898+
#define ID_AA64MMFR0_EL1_TGRAN_LPA2 ID_AA64MMFR0_EL1_TGRAN4_52_BIT
895899
#define ID_AA64MMFR0_EL1_TGRAN_SUPPORTED_MIN ID_AA64MMFR0_EL1_TGRAN4_SUPPORTED_MIN
896900
#define ID_AA64MMFR0_EL1_TGRAN_SUPPORTED_MAX ID_AA64MMFR0_EL1_TGRAN4_SUPPORTED_MAX
897901
#define ID_AA64MMFR0_EL1_TGRAN_2_SHIFT ID_AA64MMFR0_EL1_TGRAN4_2_SHIFT
898902
#elif defined(CONFIG_ARM64_16K_PAGES)
899903
#define ID_AA64MMFR0_EL1_TGRAN_SHIFT ID_AA64MMFR0_EL1_TGRAN16_SHIFT
904+
#define ID_AA64MMFR0_EL1_TGRAN_LPA2 ID_AA64MMFR0_EL1_TGRAN16_52_BIT
900905
#define ID_AA64MMFR0_EL1_TGRAN_SUPPORTED_MIN ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED_MIN
901906
#define ID_AA64MMFR0_EL1_TGRAN_SUPPORTED_MAX ID_AA64MMFR0_EL1_TGRAN16_SUPPORTED_MAX
902907
#define ID_AA64MMFR0_EL1_TGRAN_2_SHIFT ID_AA64MMFR0_EL1_TGRAN16_2_SHIFT

0 commit comments

Comments
 (0)