[PATCH 0/5] arm64: some 52-bit cleanups

Ard Biesheuvel ardb at kernel.org
Wed Mar 10 17:15:10 GMT 2021


This work was triggered by Mark Salter's report about a regression
regarding the programmed size of the ID map page tables.

The first patch switches the early ID map population code to default to
a 48-bit range on kernels built with 52-bit VA support, and only switch
to 52-bit if the placement of the kernel requires it. This should address
the regressions reported by Mark. This patch should be suitable for being
backported to -stable.

The remaining patches are cleanups that remove and/or simplify the 52-bit
VA support, and disable some parts in configurations that don't need it.

Patch #5 adds back the logic to use a 52-bit VA ID map on 52-bit VA capable
hardware, which we might consider if it is worthwhile for some reason to
elide the TCR_EL1 updates that result from having ID map and user space VA
ranges of different size.

Cc: Mark Salter <msalter at redhat.com>
Cc: Will Deacon <will at kernel.org>
Cc: James Morse <james.morse at arm.com>
Cc: Catalin Marinas <catalin.marinas at arm.com>
Cc: Mark Rutland <mark.rutland at arm.com>
Cc: Steve Capper <steve.capper at arm.com>
Cc: Anshuman Khandual <anshuman.khandual at arm.com>

Ard Biesheuvel (5):
  arm64: mm: use a 48-bit ID map when possible on 52-bit VA builds
  arm64: mm: remove unused __cpu_uses_extended_idmap[_level()]
  arm64: mm: use a compile time constant for vabits_actual when possible
  arm64: mm: get rid of idmap_ptrs_per_pgd handling
  arm64: mm: switch to 52-bit ID map on 52-bit VA capable systems

 arch/arm64/include/asm/memory.h      |  4 +++
 arch/arm64/include/asm/mmu_context.h | 18 --------------
 arch/arm64/kernel/head.S             | 26 +++++++++-----------
 arch/arm64/mm/mmu.c                  |  5 ++--
 4 files changed, 18 insertions(+), 35 deletions(-)

-- 
2.30.1




More information about the linux-arm-kernel mailing list