x86, mm: limit MAXMEM on 64-bit
on 64-bit x86 the physical memory limit is controlled by the sparsemem bits - which are 44 bits right now. But MAXMEM (the max pfn number e820 parsing will allow to enter our sizing routines) is set to 0x00003fffffffffff, i.e. 46 bits - that's too large because it overlaps into the vmalloc range. So couple MAXMEM to MAX_PHYSMEM_BITS, and add a comment that the maximum of MAX_PHYSMEM_BITS is 45 bits. Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
cfc319833b
commit
b6fd6f2673
2 changed files with 2 additions and 2 deletions
|
@ -146,7 +146,7 @@ static inline void native_pgd_clear(pgd_t *pgd)
|
||||||
#define PGDIR_MASK (~(PGDIR_SIZE - 1))
|
#define PGDIR_MASK (~(PGDIR_SIZE - 1))
|
||||||
|
|
||||||
|
|
||||||
#define MAXMEM _AC(0x00003fffffffffff, UL)
|
#define MAXMEM _AC(__AC(1, UL) << MAX_PHYSMEM_BITS, UL)
|
||||||
#define VMALLOC_START _AC(0xffffc20000000000, UL)
|
#define VMALLOC_START _AC(0xffffc20000000000, UL)
|
||||||
#define VMALLOC_END _AC(0xffffe1ffffffffff, UL)
|
#define VMALLOC_END _AC(0xffffe1ffffffffff, UL)
|
||||||
#define VMEMMAP_START _AC(0xffffe20000000000, UL)
|
#define VMEMMAP_START _AC(0xffffe20000000000, UL)
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
#else /* CONFIG_X86_32 */
|
#else /* CONFIG_X86_32 */
|
||||||
# define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */
|
# define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */
|
||||||
# define MAX_PHYSADDR_BITS 44
|
# define MAX_PHYSADDR_BITS 44
|
||||||
# define MAX_PHYSMEM_BITS 44
|
# define MAX_PHYSMEM_BITS 44 /* Can be max 45 bits */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* CONFIG_SPARSEMEM */
|
#endif /* CONFIG_SPARSEMEM */
|
||||||
|
|
Reference in a new issue