mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 12:14:10 +08:00
mm: introduce numa_emulation
Move numa_emulation code from arch/x86 to mm/numa_emulation.c This code will be later reused by arch_numa. No functional changes. Link: https://lkml.kernel.org/r/20240807064110.1003856-20-rppt@kernel.org Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org> Tested-by: Zi Yan <ziy@nvidia.com> # for x86_64 and arm64 Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> [arm64 + CXL via QEMU] Acked-by: Dan Williams <dan.j.williams@intel.com> Cc: Alexander Gordeev <agordeev@linux.ibm.com> Cc: Andreas Larsson <andreas@gaisler.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Borislav Petkov <bp@alien8.de> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Christophe Leroy <christophe.leroy@csgroup.eu> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: David Hildenbrand <david@redhat.com> Cc: Davidlohr Bueso <dave@stgolabs.net> Cc: David S. Miller <davem@davemloft.net> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Heiko Carstens <hca@linux.ibm.com> Cc: Huacai Chen <chenhuacai@kernel.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiaxun Yang <jiaxun.yang@flygoat.com> Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> Cc: Jonathan Corbet <corbet@lwn.net> Cc: Michael Ellerman <mpe@ellerman.id.au> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Rafael J. Wysocki <rafael@kernel.org> Cc: Rob Herring (Arm) <robh@kernel.org> Cc: Samuel Holland <samuel.holland@sifive.com> Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vasily Gorbik <gor@linux.ibm.com> Cc: Will Deacon <will@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
75f9d4cc4e
commit
b0c4e27c68
@ -1600,14 +1600,6 @@ config X86_64_ACPI_NUMA
|
|||||||
help
|
help
|
||||||
Enable ACPI SRAT based node topology detection.
|
Enable ACPI SRAT based node topology detection.
|
||||||
|
|
||||||
config NUMA_EMU
|
|
||||||
bool "NUMA emulation"
|
|
||||||
depends on NUMA
|
|
||||||
help
|
|
||||||
Enable NUMA emulation. A flat machine will be split
|
|
||||||
into virtual nodes when booted with "numa=fake=N", where N is the
|
|
||||||
number of nodes. This is only useful for debugging.
|
|
||||||
|
|
||||||
config NODES_SHIFT
|
config NODES_SHIFT
|
||||||
int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
|
int "Maximum NUMA Nodes (as a power of 2)" if !MAXSMP
|
||||||
range 1 10
|
range 1 10
|
||||||
|
@ -65,16 +65,4 @@ static inline void init_gi_nodes(void) { }
|
|||||||
void debug_cpumask_set_cpu(unsigned int cpu, int node, bool enable);
|
void debug_cpumask_set_cpu(unsigned int cpu, int node, bool enable);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_NUMA_EMU
|
|
||||||
int numa_emu_cmdline(char *str);
|
|
||||||
void __init numa_emu_update_cpu_to_node(int *emu_nid_to_phys,
|
|
||||||
unsigned int nr_emu_nids);
|
|
||||||
u64 __init numa_emu_dma_end(void);
|
|
||||||
#else /* CONFIG_NUMA_EMU */
|
|
||||||
static inline int numa_emu_cmdline(char *str)
|
|
||||||
{
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_NUMA_EMU */
|
|
||||||
|
|
||||||
#endif /* _ASM_X86_NUMA_H */
|
#endif /* _ASM_X86_NUMA_H */
|
||||||
|
@ -57,7 +57,6 @@ obj-$(CONFIG_MMIOTRACE_TEST) += testmmiotrace.o
|
|||||||
obj-$(CONFIG_NUMA) += numa.o numa_$(BITS).o
|
obj-$(CONFIG_NUMA) += numa.o numa_$(BITS).o
|
||||||
obj-$(CONFIG_AMD_NUMA) += amdtopology.o
|
obj-$(CONFIG_AMD_NUMA) += amdtopology.o
|
||||||
obj-$(CONFIG_ACPI_NUMA) += srat.o
|
obj-$(CONFIG_ACPI_NUMA) += srat.o
|
||||||
obj-$(CONFIG_NUMA_EMU) += numa_emulation.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS) += pkeys.o
|
obj-$(CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS) += pkeys.o
|
||||||
obj-$(CONFIG_RANDOMIZE_MEMORY) += kaslr.o
|
obj-$(CONFIG_RANDOMIZE_MEMORY) += kaslr.o
|
||||||
|
@ -7,15 +7,4 @@
|
|||||||
|
|
||||||
void __init x86_numa_init(void);
|
void __init x86_numa_init(void);
|
||||||
|
|
||||||
struct numa_meminfo;
|
|
||||||
|
|
||||||
#ifdef CONFIG_NUMA_EMU
|
|
||||||
void __init numa_emulation(struct numa_meminfo *numa_meminfo,
|
|
||||||
int numa_dist_cnt);
|
|
||||||
#else
|
|
||||||
static inline void numa_emulation(struct numa_meminfo *numa_meminfo,
|
|
||||||
int numa_dist_cnt)
|
|
||||||
{ }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* __X86_MM_NUMA_INTERNAL_H */
|
#endif /* __X86_MM_NUMA_INTERNAL_H */
|
||||||
|
@ -34,6 +34,23 @@ int __init numa_register_meminfo(struct numa_meminfo *mi);
|
|||||||
void __init numa_nodemask_from_meminfo(nodemask_t *nodemask,
|
void __init numa_nodemask_from_meminfo(nodemask_t *nodemask,
|
||||||
const struct numa_meminfo *mi);
|
const struct numa_meminfo *mi);
|
||||||
|
|
||||||
|
#ifdef CONFIG_NUMA_EMU
|
||||||
|
int numa_emu_cmdline(char *str);
|
||||||
|
void __init numa_emu_update_cpu_to_node(int *emu_nid_to_phys,
|
||||||
|
unsigned int nr_emu_nids);
|
||||||
|
u64 __init numa_emu_dma_end(void);
|
||||||
|
void __init numa_emulation(struct numa_meminfo *numa_meminfo,
|
||||||
|
int numa_dist_cnt);
|
||||||
|
#else
|
||||||
|
static inline void numa_emulation(struct numa_meminfo *numa_meminfo,
|
||||||
|
int numa_dist_cnt)
|
||||||
|
{ }
|
||||||
|
static inline int numa_emu_cmdline(char *str)
|
||||||
|
{
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
#endif /* CONFIG_NUMA_EMU */
|
||||||
|
|
||||||
#endif /* CONFIG_NUMA_MEMBLKS */
|
#endif /* CONFIG_NUMA_MEMBLKS */
|
||||||
|
|
||||||
#endif /* __NUMA_MEMBLKS_H */
|
#endif /* __NUMA_MEMBLKS_H */
|
||||||
|
@ -1270,6 +1270,14 @@ config EXECMEM
|
|||||||
config NUMA_MEMBLKS
|
config NUMA_MEMBLKS
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config NUMA_EMU
|
||||||
|
bool "NUMA emulation"
|
||||||
|
depends on NUMA_MEMBLKS
|
||||||
|
help
|
||||||
|
Enable NUMA emulation. A flat machine will be split
|
||||||
|
into virtual nodes when booted with "numa=fake=N", where N is the
|
||||||
|
number of nodes. This is only useful for debugging.
|
||||||
|
|
||||||
source "mm/damon/Kconfig"
|
source "mm/damon/Kconfig"
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
@ -119,6 +119,7 @@ obj-$(CONFIG_GENERIC_EARLY_IOREMAP) += early_ioremap.o
|
|||||||
obj-$(CONFIG_CMA) += cma.o
|
obj-$(CONFIG_CMA) += cma.o
|
||||||
obj-$(CONFIG_NUMA) += numa.o
|
obj-$(CONFIG_NUMA) += numa.o
|
||||||
obj-$(CONFIG_NUMA_MEMBLKS) += numa_memblks.o
|
obj-$(CONFIG_NUMA_MEMBLKS) += numa_memblks.o
|
||||||
|
obj-$(CONFIG_NUMA_EMU) += numa_emulation.o
|
||||||
obj-$(CONFIG_MEMORY_BALLOON) += balloon_compaction.o
|
obj-$(CONFIG_MEMORY_BALLOON) += balloon_compaction.o
|
||||||
obj-$(CONFIG_PAGE_EXTENSION) += page_ext.o
|
obj-$(CONFIG_PAGE_EXTENSION) += page_ext.o
|
||||||
obj-$(CONFIG_PAGE_TABLE_CHECK) += page_table_check.o
|
obj-$(CONFIG_PAGE_TABLE_CHECK) += page_table_check.o
|
||||||
|
@ -7,9 +7,7 @@
|
|||||||
#include <linux/topology.h>
|
#include <linux/topology.h>
|
||||||
#include <linux/memblock.h>
|
#include <linux/memblock.h>
|
||||||
#include <linux/numa_memblks.h>
|
#include <linux/numa_memblks.h>
|
||||||
#include <asm/dma.h>
|
#include <asm/numa.h>
|
||||||
|
|
||||||
#include "numa_internal.h"
|
|
||||||
|
|
||||||
#define FAKE_NODE_MIN_SIZE ((u64)32 << 20)
|
#define FAKE_NODE_MIN_SIZE ((u64)32 << 20)
|
||||||
#define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
|
#define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL))
|
Loading…
Reference in New Issue
Block a user