Extend the maximum addressable memory on x86-64 from 2^44 to 2^46 bytes. This requires some shuffling around of the vmalloc and virtual memmap memory areas, to keep them away from the direct mapping of up to 64TB of physical memory. This patch also introduces a guard hole between the vmalloc area and the virtual memory map space. There's really no good reason why we wouldn't have a guard hole there. [ Impact: future hardware enablement ] Signed-off-by: Rik van Riel <riel@redhat.com> LKML-Reference: <20090505172856.6820db22@cuia.bos.redhat.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
		
			
				
	
	
		
			34 lines
		
	
	
	
		
			895 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			34 lines
		
	
	
	
		
			895 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _ASM_X86_SPARSEMEM_H
 | |
| #define _ASM_X86_SPARSEMEM_H
 | |
| 
 | |
| #ifdef CONFIG_SPARSEMEM
 | |
| /*
 | |
|  * generic non-linear memory support:
 | |
|  *
 | |
|  * 1) we will not split memory into more chunks than will fit into the flags
 | |
|  *    field of the struct page
 | |
|  *
 | |
|  * SECTION_SIZE_BITS		2^n: size of each section
 | |
|  * MAX_PHYSADDR_BITS		2^n: max size of physical address space
 | |
|  * MAX_PHYSMEM_BITS		2^n: how much memory we can have in that space
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifdef CONFIG_X86_32
 | |
| # ifdef CONFIG_X86_PAE
 | |
| #  define SECTION_SIZE_BITS	29
 | |
| #  define MAX_PHYSADDR_BITS	36
 | |
| #  define MAX_PHYSMEM_BITS	36
 | |
| # else
 | |
| #  define SECTION_SIZE_BITS	26
 | |
| #  define MAX_PHYSADDR_BITS	32
 | |
| #  define MAX_PHYSMEM_BITS	32
 | |
| # endif
 | |
| #else /* CONFIG_X86_32 */
 | |
| # define SECTION_SIZE_BITS	27 /* matt - 128 is convenient right now */
 | |
| # define MAX_PHYSADDR_BITS	44
 | |
| # define MAX_PHYSMEM_BITS	46
 | |
| #endif
 | |
| 
 | |
| #endif /* CONFIG_SPARSEMEM */
 | |
| #endif /* _ASM_X86_SPARSEMEM_H */
 |