mirror of https://gitee.com/openkylin/linux.git
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: Steve Capper <steve.capper@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
c8b6d2ccf9
commit
ce3aaed873
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue