[PATCH 4/5] arm64: mm: get rid of idmap_ptrs_per_pgd handling
From: Ard Biesheuvel <ardb@kernel.org>
Date: 2021-03-10 17:17:14
Subsystem:
arm64 port (aarch64 architecture), the rest · Maintainers:
Catalin Marinas, Will Deacon, Linus Torvalds
idmap_ptrs_per_pgd is stored and re-loaded in the very early boot path, and never referenced again. So a variable is not needed here. Furthermore, given that on the code path in question, PTRS_PER_PGD and '1 << (PHYS_MASK_SHIFT - PGDIR_SHIFT)' are guaranteed to be equal unless - the kernel was built for 48-bit VAs and 52-bit PAs, and - the kernel was loaded outside of the 48-bit addressable physical memory space (which is not supported by EFI to begin with), it seems reasonable to simply drop this code path altogether. Signed-off-by: Ard Biesheuvel <ardb@kernel.org> --- arch/arm64/include/asm/mmu_context.h | 1 - arch/arm64/kernel/head.S | 9 +-------- arch/arm64/mm/mmu.c | 1 - 3 files changed, 1 insertion(+), 10 deletions(-)
diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index bd02e99b1a4c..1307f5e27a5a 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h@@ -61,7 +61,6 @@ static inline void cpu_switch_mm(pgd_t *pgd, struct mm_struct *mm) * physical memory, in which case it will be smaller. */ extern u64 idmap_t0sz; -extern u64 idmap_ptrs_per_pgd; /* * Ensure TCR.T0SZ is set to the provided value.
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index f65d17a90204..da6e99fa4e08 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S@@ -344,16 +344,9 @@ SYM_FUNC_START_LOCAL(__create_page_tables) mov x4, EXTRA_PTRS create_table_entry x0, x3, EXTRA_SHIFT, x4, x5, x6 -#else - /* - * If VA_BITS == 48, we don't have to configure an additional - * translation level, but the top-level table has more entries. - */ - mov x4, #1 << (PHYS_MASK_SHIFT - PGDIR_SHIFT) - str_l x4, idmap_ptrs_per_pgd, x5 #endif 1: - ldr_l x4, idmap_ptrs_per_pgd + mov x4, PTRS_PER_PGD mov x5, x3 // __pa(__idmap_text_start) adr_l x6, __idmap_text_end // __pa(__idmap_text_end)
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 338658cd1bea..569cf07ddb91 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c@@ -41,7 +41,6 @@ #define NO_CONT_MAPPINGS BIT(1) u64 idmap_t0sz = TCR_T0SZ(VA_BITS_MIN); -u64 idmap_ptrs_per_pgd = PTRS_PER_PGD; #ifdef CONFIG_ARM64_VA_BITS_52 u64 __section(".mmuoff.data.write") vabits_actual;
--
2.30.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel