mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-20 09:34:44 +08:00
7b09f5af01
Add sparse memory vmemmap support for LoongArch. SPARSEMEM_VMEMMAP uses a virtually mapped memmap to optimise pfn_to_page and page_to_pfn operations. This is the most efficient option when sufficient kernel resources are available. Link: https://lkml.kernel.org/r/20221027125253.3458989-3-chenhuacai@loongson.cn Signed-off-by: Min Zhou <zhoumin@loongson.cn> Signed-off-by: Feiyang Chen <chenfeiyang@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn> Reviewed-by: Arnd Bergmann <arnd@arndb.de> Cc: Andy Lutomirski <luto@kernel.org> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Dinh Nguyen <dinguyen@kernel.org> Cc: Guo Ren <guoren@kernel.org> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Philippe Mathieu-Daudé <philmd@linaro.org> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: Will Deacon <will@kernel.org> Cc: Xuefeng Li <lixuefeng@loongson.cn> Cc: Xuerui Wang <kernel@xen0n.name> Cc: Muchun Song <songmuchun@bytedance.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
32 lines
866 B
C
32 lines
866 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _LOONGARCH_SPARSEMEM_H
|
|
#define _LOONGARCH_SPARSEMEM_H
|
|
|
|
#ifdef CONFIG_SPARSEMEM
|
|
|
|
/*
|
|
* SECTION_SIZE_BITS 2^N: how big each section will be
|
|
* MAX_PHYSMEM_BITS 2^N: how much memory we can have in that space
|
|
*/
|
|
#define SECTION_SIZE_BITS 29 /* 2^29 = Largest Huge Page Size */
|
|
#define MAX_PHYSMEM_BITS 48
|
|
|
|
#ifdef CONFIG_SPARSEMEM_VMEMMAP
|
|
#define VMEMMAP_SIZE (sizeof(struct page) * (1UL << (cpu_pabits + 1 - PAGE_SHIFT)))
|
|
#endif
|
|
|
|
#endif /* CONFIG_SPARSEMEM */
|
|
|
|
#ifndef VMEMMAP_SIZE
|
|
#define VMEMMAP_SIZE 0 /* 1, For FLATMEM; 2, For SPARSEMEM without VMEMMAP. */
|
|
#endif
|
|
|
|
#ifdef CONFIG_MEMORY_HOTPLUG
|
|
int memory_add_physaddr_to_nid(u64 addr);
|
|
#define memory_add_physaddr_to_nid memory_add_physaddr_to_nid
|
|
#endif
|
|
|
|
#define INIT_MEMBLOCK_RESERVED_REGIONS (INIT_MEMBLOCK_REGIONS + NR_CPUS)
|
|
|
|
#endif /* _LOONGARCH_SPARSEMEM_H */
|