mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-04-01 03:54:02 +00:00
smp: Use nr_cpus= to set nr_cpu_ids early
On x86, before prefill_possible_map(), nr_cpu_ids will be NR_CPUS aka CONFIG_NR_CPUS. Add nr_cpus= to set nr_cpu_ids. so we can simulate cpus <=8 are installed on normal config. -v2: accordging to Christoph, acpi_numa_init should use nr_cpu_ids in stead of NR_CPUS. -v3: add doc in kernel-parameters.txt according to Andrew. Signed-off-by: Yinghai Lu <yinghai@kernel.org> LKML-Reference: <1265793639-15071-34-git-send-email-yinghai@kernel.org> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: H. Peter Anvin <hpa@zytor.com> Cc: Tony Luck <tony.luck@intel.com>
This commit is contained in:
parent
6738762d73
commit
2b633e3fac
5 changed files with 28 additions and 7 deletions
|
@ -1772,6 +1772,12 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
purges which is reported from either PAL_VM_SUMMARY or
|
purges which is reported from either PAL_VM_SUMMARY or
|
||||||
SAL PALO.
|
SAL PALO.
|
||||||
|
|
||||||
|
nr_cpus= [SMP] Maximum number of processors that an SMP kernel
|
||||||
|
could support. nr_cpus=n : n >= 1 limits the kernel to
|
||||||
|
supporting 'n' processors. Later in runtime you can not
|
||||||
|
use hotplug cpu feature to put more cpu back to online.
|
||||||
|
just like you compile the kernel NR_CPUS=n
|
||||||
|
|
||||||
nr_uarts= [SERIAL] maximum number of UARTs to be registered.
|
nr_uarts= [SERIAL] maximum number of UARTs to be registered.
|
||||||
|
|
||||||
numa_zonelist_order= [KNL, BOOT] Select zonelist order for NUMA.
|
numa_zonelist_order= [KNL, BOOT] Select zonelist order for NUMA.
|
||||||
|
|
|
@ -881,8 +881,8 @@ __init void prefill_possible_map(void)
|
||||||
|
|
||||||
possible = available_cpus + additional_cpus;
|
possible = available_cpus + additional_cpus;
|
||||||
|
|
||||||
if (possible > NR_CPUS)
|
if (possible > nr_cpu_ids)
|
||||||
possible = NR_CPUS;
|
possible = nr_cpu_ids;
|
||||||
|
|
||||||
printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
|
printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
|
||||||
possible, max((possible - available_cpus), 0));
|
possible, max((possible - available_cpus), 0));
|
||||||
|
|
|
@ -1213,11 +1213,12 @@ __init void prefill_possible_map(void)
|
||||||
|
|
||||||
total_cpus = max_t(int, possible, num_processors + disabled_cpus);
|
total_cpus = max_t(int, possible, num_processors + disabled_cpus);
|
||||||
|
|
||||||
if (possible > CONFIG_NR_CPUS) {
|
/* nr_cpu_ids could be reduced via nr_cpus= */
|
||||||
|
if (possible > nr_cpu_ids) {
|
||||||
printk(KERN_WARNING
|
printk(KERN_WARNING
|
||||||
"%d Processors exceeds NR_CPUS limit of %d\n",
|
"%d Processors exceeds NR_CPUS limit of %d\n",
|
||||||
possible, CONFIG_NR_CPUS);
|
possible, nr_cpu_ids);
|
||||||
possible = CONFIG_NR_CPUS;
|
possible = nr_cpu_ids;
|
||||||
}
|
}
|
||||||
|
|
||||||
printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
|
printk(KERN_INFO "SMP: Allowing %d CPUs, %d hotplug CPUs\n",
|
||||||
|
|
|
@ -279,9 +279,9 @@ int __init acpi_numa_init(void)
|
||||||
/* SRAT: Static Resource Affinity Table */
|
/* SRAT: Static Resource Affinity Table */
|
||||||
if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
|
if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
|
||||||
acpi_table_parse_srat(ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY,
|
acpi_table_parse_srat(ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY,
|
||||||
acpi_parse_x2apic_affinity, NR_CPUS);
|
acpi_parse_x2apic_affinity, nr_cpu_ids);
|
||||||
acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY,
|
acpi_table_parse_srat(ACPI_SRAT_TYPE_CPU_AFFINITY,
|
||||||
acpi_parse_processor_affinity, NR_CPUS);
|
acpi_parse_processor_affinity, nr_cpu_ids);
|
||||||
ret = acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY,
|
ret = acpi_table_parse_srat(ACPI_SRAT_TYPE_MEMORY_AFFINITY,
|
||||||
acpi_parse_memory_affinity,
|
acpi_parse_memory_affinity,
|
||||||
NR_NODE_MEMBLKS);
|
NR_NODE_MEMBLKS);
|
||||||
|
|
14
init/main.c
14
init/main.c
|
@ -149,6 +149,20 @@ static int __init nosmp(char *str)
|
||||||
|
|
||||||
early_param("nosmp", nosmp);
|
early_param("nosmp", nosmp);
|
||||||
|
|
||||||
|
/* this is hard limit */
|
||||||
|
static int __init nrcpus(char *str)
|
||||||
|
{
|
||||||
|
int nr_cpus;
|
||||||
|
|
||||||
|
get_option(&str, &nr_cpus);
|
||||||
|
if (nr_cpus > 0 && nr_cpus < nr_cpu_ids)
|
||||||
|
nr_cpu_ids = nr_cpus;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
early_param("nr_cpus", nrcpus);
|
||||||
|
|
||||||
static int __init maxcpus(char *str)
|
static int __init maxcpus(char *str)
|
||||||
{
|
{
|
||||||
get_option(&str, &setup_max_cpus);
|
get_option(&str, &setup_max_cpus);
|
||||||
|
|
Loading…
Add table
Reference in a new issue