OSDN Git Service

MIPS: Allow __cpu_number_map to be larger than NR_CPUS
authorDavid Daney <david.daney@cavium.com>
Thu, 28 Sep 2017 17:34:04 +0000 (12:34 -0500)
committerJames Hogan <jhogan@kernel.org>
Tue, 7 Nov 2017 18:32:10 +0000 (18:32 +0000)
In systems where the CPU id space is sparse, this allows a smaller
NR_CPUS to be chosen, thus keeping internal data structures smaller.

Signed-off-by: David Daney <david.daney@cavium.com>
Signed-off-by: Carlos Munoz <cmunoz@caviumnetworks.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/17388/
[jhogan@kernel.org: Add depends on SMP to fix
 "warning: symbol value '' invalid for MIPS_NR_CPU_NR_MAP"]
Signed-off-by: James Hogan <jhogan@kernel.org>
arch/mips/Kconfig
arch/mips/include/asm/smp.h
arch/mips/kernel/smp.c

index cb7fcc4..b6af63f 100644 (file)
@@ -915,7 +915,8 @@ config CAVIUM_OCTEON_SOC
        select USE_OF
        select ARCH_SPARSEMEM_ENABLE
        select SYS_SUPPORTS_SMP
-       select NR_CPUS_DEFAULT_16
+       select NR_CPUS_DEFAULT_64
+       select MIPS_NR_CPU_NR_MAP_1024
        select BUILTIN_DTB
        select MTD_COMPLEX_MAPPINGS
        select SYS_SUPPORTS_RELOCATABLE
@@ -2725,6 +2726,15 @@ config NR_CPUS
 config MIPS_PERF_SHARED_TC_COUNTERS
        bool
 
+config MIPS_NR_CPU_NR_MAP_1024
+       bool
+
+config MIPS_NR_CPU_NR_MAP
+       int
+       depends on SMP
+       default 1024 if MIPS_NR_CPU_NR_MAP_1024
+       default NR_CPUS if !MIPS_NR_CPU_NR_MAP_1024
+
 #
 # Timer Interrupt Frequency Configuration
 #
index 9e494f8..88ebd83 100644 (file)
@@ -29,7 +29,7 @@ extern cpumask_t cpu_foreign_map[];
 
 /* Map from cpu id to sequential logical cpu number.  This will only
    not be idempotent when cpus failed to come on-line. */
-extern int __cpu_number_map[NR_CPUS];
+extern int __cpu_number_map[CONFIG_MIPS_NR_CPU_NR_MAP];
 #define cpu_number_map(cpu)  __cpu_number_map[cpu]
 
 /* The reverse map from sequential logical cpu number to cpu id.  */
index bbe19b6..5576888 100644 (file)
@@ -48,7 +48,7 @@
 #include <asm/setup.h>
 #include <asm/maar.h>
 
-int __cpu_number_map[NR_CPUS];         /* Map physical to logical */
+int __cpu_number_map[CONFIG_MIPS_NR_CPU_NR_MAP];   /* Map physical to logical */
 EXPORT_SYMBOL(__cpu_number_map);
 
 int __cpu_logical_map[NR_CPUS];                /* Map logical to physical */