Commit ce3aaed8 authored by Steve Capper's avatar Steve Capper Committed by Will Deacon

arm64: mm: Modify calculation of VMEMMAP_SIZE

In a later patch we will need to have a slightly larger VMEMMAP region
to accommodate boot time selection between 48/52-bit kernel VAs.

This patch modifies the formula for computing VMEMMAP_SIZE to depend
explicitly on the PAGE_OFFSET and start of kernel addressable memory.
(This allows for a slightly larger direct linear map in future).
Signed-off-by: default avatarSteve Capper <steve.capper@arm.com>
Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent c8b6d2cc
...@@ -26,8 +26,15 @@ ...@@ -26,8 +26,15 @@
/* /*
* VMEMMAP_SIZE - allows the whole linear region to be covered by * VMEMMAP_SIZE - allows the whole linear region to be covered by
* a struct page array * a struct page array
*
* If we are configured with a 52-bit kernel VA then our VMEMMAP_SIZE
* neads to cover the memory region from the beginning of the 52-bit
* PAGE_OFFSET all the way to VA_START for 48-bit. This allows us to
* keep a constant PAGE_OFFSET and "fallback" to using the higher end
* of the VMEMMAP where 52-bit support is not available in hardware.
*/ */
#define VMEMMAP_SIZE (UL(1) << (VA_BITS - PAGE_SHIFT - 1 + STRUCT_PAGE_MAX_SHIFT)) #define VMEMMAP_SIZE ((_VA_START(VA_BITS_MIN) - PAGE_OFFSET) \
>> (PAGE_SHIFT - STRUCT_PAGE_MAX_SHIFT))
/* /*
* PAGE_OFFSET - the virtual address of the start of the linear map (top * PAGE_OFFSET - the virtual address of the start of the linear map (top
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment