smp: add set_nr_cpu_ids()
authorYury Norov <yury.norov@gmail.com>
Mon, 5 Sep 2022 23:08:17 +0000 (16:08 -0700)
committerYury Norov <yury.norov@gmail.com>
Tue, 20 Sep 2022 00:51:53 +0000 (17:51 -0700)
In preparation to support compile-time nr_cpu_ids, add a setter for
the variable.

This is a no-op for all arches.

Signed-off-by: Yury Norov <yury.norov@gmail.com>
arch/loongarch/kernel/setup.c
arch/mips/kernel/setup.c
arch/x86/kernel/smpboot.c
arch/x86/xen/smp_pv.c
include/linux/cpumask.h
kernel/smp.c

index 8f5c2f9a1a835de4435cec1a5e92439387017697..18a81edd3ac51c918c4970fbdaa3b3ec904dcca5 100644 (file)
@@ -346,7 +346,7 @@ static void __init prefill_possible_map(void)
        for (; i < NR_CPUS; i++)
                set_cpu_possible(i, false);
 
-       nr_cpu_ids = possible;
+       set_nr_cpu_ids(possible);
 }
 #endif
 
index 2ca156a5b23198cff29d60b27148d8bdac40286f..e8a0759cb4d05ce5b4e1a295b3e1fbf9dfc464e8 100644 (file)
@@ -750,7 +750,7 @@ static void __init prefill_possible_map(void)
        for (; i < NR_CPUS; i++)
                set_cpu_possible(i, false);
 
-       nr_cpu_ids = possible;
+       set_nr_cpu_ids(possible);
 }
 #else
 static inline void prefill_possible_map(void) {}
index f24227bc3220a05918539b8f9cca2ce8f3d0c79a..3f3ea0287f694f6a5a674ef7d63c1b5f8839fbcb 100644 (file)
@@ -1316,7 +1316,7 @@ static void __init smp_sanity_check(void)
                        nr++;
                }
 
-               nr_cpu_ids = 8;
+               set_nr_cpu_ids(8);
        }
 #endif
 
@@ -1569,7 +1569,7 @@ __init void prefill_possible_map(void)
                possible = i;
        }
 
-       nr_cpu_ids = possible;
+       set_nr_cpu_ids(possible);
 
        pr_info("Allowing %d CPUs, %d hotplug CPUs\n",
                possible, max_t(int, possible - num_processors, 0));
index ba7af2eca755b7f08e4fe9a4c31f350defe80c2d..480be82e9b7be3c3e6856da908afa6cb8eebc4c8 100644 (file)
@@ -179,7 +179,7 @@ static void __init _get_smp_config(unsigned int early)
         * hypercall to expand the max number of VCPUs an already
         * running guest has. So cap it up to X. */
        if (subtract)
-               nr_cpu_ids = nr_cpu_ids - subtract;
+               set_nr_cpu_ids(nr_cpu_ids - subtract);
 #endif
 
 }
index e8ad12b5b9d235782ea1fd33b575dc665914d32e..24763997894da79a37ff17500664e4bafbec93f4 100644 (file)
@@ -39,6 +39,11 @@ typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;
 #define nr_cpu_ids             1U
 #else
 extern unsigned int nr_cpu_ids;
+
+static inline void set_nr_cpu_ids(unsigned int nr)
+{
+       nr_cpu_ids = nr;
+}
 #endif
 
 #ifdef CONFIG_CPUMASK_OFFSTACK
index e971c9626a1ba9e4a1caee133d2beda0e9e82552..150310a0947a63386d14a937bd6ae6069fdc962f 100644 (file)
@@ -1070,7 +1070,7 @@ static int __init nrcpus(char *str)
        int nr_cpus;
 
        if (get_option(&str, &nr_cpus) && nr_cpus > 0 && nr_cpus < nr_cpu_ids)
-               nr_cpu_ids = nr_cpus;
+               set_nr_cpu_ids(nr_cpus);
 
        return 0;
 }
@@ -1097,7 +1097,7 @@ EXPORT_SYMBOL(nr_cpu_ids);
 /* An arch may set nr_cpu_ids earlier if needed, so this would be redundant */
 void __init setup_nr_cpu_ids(void)
 {
-       nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;
+       set_nr_cpu_ids(find_last_bit(cpumask_bits(cpu_possible_mask), NR_CPUS) + 1);
 }
 
 /* Called by boot processor to activate the rest. */