xref: /openbmc/linux/arch/loongarch/include/asm/sparsemem.h (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
109cfefb7SHuacai Chen /* SPDX-License-Identifier: GPL-2.0 */
209cfefb7SHuacai Chen #ifndef _LOONGARCH_SPARSEMEM_H
309cfefb7SHuacai Chen #define _LOONGARCH_SPARSEMEM_H
409cfefb7SHuacai Chen 
509cfefb7SHuacai Chen #ifdef CONFIG_SPARSEMEM
609cfefb7SHuacai Chen 
709cfefb7SHuacai Chen /*
809cfefb7SHuacai Chen  * SECTION_SIZE_BITS		2^N: how big each section will be
909cfefb7SHuacai Chen  * MAX_PHYSMEM_BITS		2^N: how much memory we can have in that space
1009cfefb7SHuacai Chen  */
1109cfefb7SHuacai Chen #define SECTION_SIZE_BITS	29 /* 2^29 = Largest Huge Page Size */
1209cfefb7SHuacai Chen #define MAX_PHYSMEM_BITS	48
1309cfefb7SHuacai Chen 
14*7b09f5afSFeiyang Chen #ifdef CONFIG_SPARSEMEM_VMEMMAP
15*7b09f5afSFeiyang Chen #define VMEMMAP_SIZE	(sizeof(struct page) * (1UL << (cpu_pabits + 1 - PAGE_SHIFT)))
16*7b09f5afSFeiyang Chen #endif
17*7b09f5afSFeiyang Chen 
1809cfefb7SHuacai Chen #endif /* CONFIG_SPARSEMEM */
1909cfefb7SHuacai Chen 
20*7b09f5afSFeiyang Chen #ifndef VMEMMAP_SIZE
21*7b09f5afSFeiyang Chen #define VMEMMAP_SIZE	0	/* 1, For FLATMEM; 2, For SPARSEMEM without VMEMMAP. */
22*7b09f5afSFeiyang Chen #endif
23*7b09f5afSFeiyang Chen 
2409cfefb7SHuacai Chen #ifdef CONFIG_MEMORY_HOTPLUG
2509cfefb7SHuacai Chen int memory_add_physaddr_to_nid(u64 addr);
2609cfefb7SHuacai Chen #define memory_add_physaddr_to_nid memory_add_physaddr_to_nid
2709cfefb7SHuacai Chen #endif
2809cfefb7SHuacai Chen 
2909cfefb7SHuacai Chen #define INIT_MEMBLOCK_RESERVED_REGIONS	(INIT_MEMBLOCK_REGIONS + NR_CPUS)
3009cfefb7SHuacai Chen 
3109cfefb7SHuacai Chen #endif /* _LOONGARCH_SPARSEMEM_H */
32