1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _ASM_X86_SPARSEMEM_H 3 #define _ASM_X86_SPARSEMEM_H 4 5 #include <linux/types.h> 6 7 #ifdef CONFIG_SPARSEMEM 8 /* 9 * generic non-linear memory support: 10 * 11 * 1) we will not split memory into more chunks than will fit into the flags 12 * field of the struct page 13 * 14 * SECTION_SIZE_BITS 2^n: size of each section 15 * MAX_PHYSMEM_BITS 2^n: max size of physical address space 16 * 17 */ 18 19 #ifdef CONFIG_X86_32 20 # ifdef CONFIG_X86_PAE 21 # define SECTION_SIZE_BITS 29 22 # define MAX_PHYSMEM_BITS 36 23 # else 24 # define SECTION_SIZE_BITS 26 25 # define MAX_PHYSMEM_BITS 32 26 # endif 27 #else /* CONFIG_X86_32 */ 28 # define SECTION_SIZE_BITS 27 /* matt - 128 is convenient right now */ 29 # define MAX_PHYSMEM_BITS (pgtable_l5_enabled() ? 52 : 46) 30 #endif 31 32 #endif /* CONFIG_SPARSEMEM */ 33 34 #ifndef __ASSEMBLY__ 35 #ifdef CONFIG_NUMA_KEEP_MEMINFO 36 extern int phys_to_target_node(phys_addr_t start); 37 #define phys_to_target_node phys_to_target_node 38 extern int memory_add_physaddr_to_nid(u64 start); 39 #define memory_add_physaddr_to_nid memory_add_physaddr_to_nid 40 extern int numa_fill_memblks(u64 start, u64 end); 41 #define numa_fill_memblks numa_fill_memblks 42 #endif 43 #endif /* __ASSEMBLY__ */ 44 45 #endif /* _ASM_X86_SPARSEMEM_H */ 46