arm64: mm: make vmemmap region a projection of the linear region
authorArd Biesheuvel <ardb@kernel.org>
Thu, 8 Oct 2020 15:36:01 +0000 (17:36 +0200)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 9 Nov 2020 17:15:37 +0000 (17:15 +0000)
commit8c96400d6a39be763130a5c493647c57726f7013
tree0794db8f11e674731069015b34a5c593f8a77ac7
parentf4693c2716b35d0846fd45a4ad7db78bfb25efc8
arm64: mm: make vmemmap region a projection of the linear region

Now that we have reverted the introduction of the vmemmap struct page
pointer and the separate physvirt_offset, we can simplify things further,
and place the vmemmap region in the VA space in such a way that virtual
to page translations and vice versa can be implemented using a single
arithmetic shift.

One happy coincidence resulting from this is that the 48-bit/4k and
52-bit/64k configurations (which are assumed to be the two most
prevalent) end up with the same placement of the vmemmap region. In
a subsequent patch, we will take advantage of this, and unify the
memory maps even more.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Steve Capper <steve.capper@arm.com>
Link: https://lore.kernel.org/r/20201008153602.9467-4-ardb@kernel.org
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Documentation/arm64/memory.rst
arch/arm64/include/asm/memory.h
arch/arm64/mm/init.c