powerpc/mm: Increase the max addressable memory to 2PB
Currently we limit the max addressable memory to 128TB. This patch increase the limit to 2PB. We can have devices like nvdimm which adds memory above 512TB limit. We still don't support regular system ram above 512TB. One of the challenge with that is the percpu allocator, that allocates per node memory and use the max distance between them as the percpu offsets. This means with large gap in address space ( system ram above 1PB) we will run out of vmalloc space to map the percpu allocation. In order to support addressable memory above 512TB, kernel should be able to linear map this range. To do that with hash translation we now add 4 context to kernel linear map region. Our per context addressable range is 512TB. We still keep VMALLOC and VMEMMAP region to old size. SLB miss handlers is updated to validate these limit. We also limit this update to SPARSEMEM_VMEMMAP and SPARSEMEM_EXTREME Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
committed by
Michael Ellerman
parent
c9f80734cd
commit
4ffe713b75
@@ -309,6 +309,21 @@ static inline u16 get_mm_addr_key(struct mm_struct *mm, unsigned long address)
|
||||
*/
|
||||
#define MMU_PAGE_COUNT 16
|
||||
|
||||
/*
|
||||
* If we store section details in page->flags we can't increase the MAX_PHYSMEM_BITS
|
||||
* if we increase SECTIONS_WIDTH we will not store node details in page->flags and
|
||||
* page_to_nid does a page->section->node lookup
|
||||
* Hence only increase for VMEMMAP. Further depending on SPARSEMEM_EXTREME reduce
|
||||
* memory requirements with large number of sections.
|
||||
* 51 bits is the max physical real address on POWER9
|
||||
*/
|
||||
#if defined(CONFIG_SPARSEMEM_VMEMMAP) && defined(CONFIG_SPARSEMEM_EXTREME) && \
|
||||
defined (CONFIG_PPC_64K_PAGES)
|
||||
#define MAX_PHYSMEM_BITS 51
|
||||
#else
|
||||
#define MAX_PHYSMEM_BITS 46
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PPC_BOOK3S_64
|
||||
#include <asm/book3s/64/mmu.h>
|
||||
#else /* CONFIG_PPC_BOOK3S_64 */
|
||||
|
||||
Reference in New Issue
Block a user