[PATCH v2 0/4] arm64: mm: optimize VA space organization for 52-bit

Ard Biesheuvel ardb at kernel.org
Thu Oct 8 11:35:58 EDT 2020


This series reorganizes the kernel VA space slightly so that 52-bit VA
configurations can use more virtual address space, i.e., the usable
linear address space almost doubles, from 2^51 to 2^52-2^47.

Patch #1 merges the physvirt_offset and memstart_addr variables, both of
which represent translations between the physical address space and the
linear region, and there is no need for having both. This fixes a bug too,
as the two values were not properly kept in sync when booting with KASLR
enabled.

Patch #2 updates the definitions for the boundaries of the linear space,
so that 52-bit VA builds use all available space for the linear region.

Patches #3 and #4 simplify the way the vmemmap region is configured, and
unify the 48-bit/4k and 52-bit/64k layouts.

Changes since v1:
- drop incorrect use of untagged_addr() from #2
- add patches #3 and #4

Not boot tested yet on a 52-bit VA capable system.

Cc: Steve Capper <steve.capper at arm.com>
Cc: Anshuman Khandual <anshuman.khandual at arm.com>

Ard Biesheuvel (4):
  arm64: mm: use single quantity to represent the PA to VA translation
  arm64: mm: extend linear region for 52-bit VA configurations
  arm64: mm: make vmemmap region a projection of the linear region
  arm64: mm: tidy up top of kernel VA space

 Documentation/arm64/kasan-offsets.sh |  3 +-
 Documentation/arm64/memory.rst       | 45 +++++++++-----------
 arch/arm64/Kconfig                   | 20 ++++-----
 arch/arm64/include/asm/memory.h      | 35 +++++++--------
 arch/arm64/include/asm/pgtable.h     |  6 +--
 arch/arm64/mm/init.c                 | 34 ++++++---------
 6 files changed, 63 insertions(+), 80 deletions(-)

-- 
2.17.1




More information about the linux-arm-kernel mailing list