···179179 * hypercall to expand the max number of VCPUs an already180180 * running guest has. So cap it up to X. */181181 if (subtract)182182- nr_cpu_ids = nr_cpu_ids - subtract;182182+ set_nr_cpu_ids(nr_cpu_ids - subtract);183183#endif184184185185}
+5
include/linux/cpumask.h
···3939#define nr_cpu_ids 1U4040#else4141extern unsigned int nr_cpu_ids;4242+4343+static inline void set_nr_cpu_ids(unsigned int nr)4444+{4545+ nr_cpu_ids = nr;4646+}4247#endif43484449#ifdef CONFIG_CPUMASK_OFFSTACK
+2-2
kernel/smp.c
···10701070 int nr_cpus;1071107110721072 if (get_option(&str, &nr_cpus) && nr_cpus > 0 && nr_cpus < nr_cpu_ids)10731073- nr_cpu_ids = nr_cpus;10731073+ set_nr_cpu_ids(nr_cpus);1074107410751075 return 0;10761076}···10971097/* An arch may set nr_cpu_ids earlier if needed, so this would be redundant */10981098void __init setup_nr_cpu_ids(void)10991099{11001100- nr_cpu_ids = find_last_bit(cpumask_bits(cpu_possible_mask),NR_CPUS) + 1;11001100+ set_nr_cpu_ids(find_last_bit(cpumask_bits(cpu_possible_mask), NR_CPUS) + 1);11011101}1102110211031103/* Called by boot processor to activate the rest. */