LoongArch: Add Non-Uniform Memory Access (NUMA) support
[platform/kernel/linux-starfive.git] / arch / loongarch / Kconfig
index 85ef258..80657bf 100644 (file)
@@ -7,6 +7,7 @@ config LOONGARCH
        select ARCH_ENABLE_MEMORY_HOTPLUG
        select ARCH_ENABLE_MEMORY_HOTREMOVE
        select ARCH_HAS_ACPI_TABLE_UPGRADE      if ACPI
+       select ARCH_HAS_PHYS_TO_DMA
        select ARCH_HAS_PTE_SPECIAL
        select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
        select ARCH_INLINE_READ_LOCK if !PREEMPTION
@@ -41,6 +42,7 @@ config LOONGARCH
        select ARCH_SUPPORTS_ACPI
        select ARCH_SUPPORTS_ATOMIC_RMW
        select ARCH_SUPPORTS_HUGETLBFS
+       select ARCH_SUPPORTS_NUMA_BALANCING
        select ARCH_USE_BUILTIN_BSWAP
        select ARCH_USE_CMPXCHG_LOCKREF
        select ARCH_USE_QUEUED_RWLOCKS
@@ -91,12 +93,15 @@ config LOONGARCH
        select HAVE_PERF_EVENTS
        select HAVE_REGS_AND_STACK_ACCESS_API
        select HAVE_RSEQ
+       select HAVE_SETUP_PER_CPU_AREA if NUMA
        select HAVE_SYSCALL_TRACEPOINTS
        select HAVE_TIF_NOHZ
        select HAVE_VIRT_CPU_ACCOUNTING_GEN if !SMP
        select IRQ_FORCED_THREADING
        select IRQ_LOONGARCH_CPU
        select MODULES_USE_ELF_RELA if MODULES
+       select NEED_PER_CPU_EMBED_FIRST_CHUNK
+       select NEED_PER_CPU_PAGE_FIRST_CHUNK
        select OF
        select OF_EARLY_FLATTREE
        select PERF_USE_VMALLOC
@@ -105,6 +110,7 @@ config LOONGARCH
        select SYSCTL_EXCEPTION_TRACE
        select SWIOTLB
        select TRACE_IRQFLAGS_SUPPORT
+       select USE_PERCPU_NUMA_NODE_ID
        select ZONE_DMA32
 
 config 32BIT
@@ -335,6 +341,20 @@ config NR_CPUS
          This allows you to specify the maximum number of CPUs which this
          kernel will support.
 
+config NUMA
+       bool "NUMA Support"
+       select ACPI_NUMA if ACPI
+       help
+         Say Y to compile the kernel with NUMA (Non-Uniform Memory Access)
+         support.  This option improves performance on systems with more
+         than one NUMA node; on single node systems it is generally better
+         to leave it disabled.
+
+config NODES_SHIFT
+       int
+       default "6"
+       depends on NUMA
+
 config FORCE_MAX_ZONEORDER
        int "Maximum zone order"
        range 14 64 if PAGE_SIZE_64KB
@@ -381,6 +401,7 @@ config ARCH_SELECT_MEMORY_MODEL
 
 config ARCH_FLATMEM_ENABLE
        def_bool y
+       depends on !NUMA
 
 config ARCH_SPARSEMEM_ENABLE
        def_bool y