On Thu, 15 Mar 2018, Dou Liyang wrote: > > +static void __init acpi_update_possible_map(void) > +{ > + unsigned int cpu; > + > + if (nr_unique_ids >= nr_cpu_ids) > + return; > + > + /* Don't yet figure out if it's superfluous */ > + if (nr_unique_ids >= cpumask_last(cpu_possible_mask)) > + return; > + > + for_each_cpu_wrap(cpu, cpu_possible_mask, nr_unique_ids) > + set_cpu_possible(cpu, false); > + > + nr_cpu_ids = nr_unique_ids; > + pr_info("Allowing %d possible CPUs\n", nr_cpu_ids); > +} > + > static void __init acpi_processor_check_duplicates(void) > { > /* check the correctness for all processors in ACPI namespace */ > @@ -680,6 +698,9 @@ static void __init acpi_processor_check_duplicates(void) > NULL, NULL, NULL); > acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, acpi_processor_ids_walk, > NULL, NULL); > + > + /* make possible CPU count more realistic */ > + acpi_update_possible_map(); > } I tested this on a machine which claims to have gazillion of hotplugable CPUs: smpboot: Allowing 152 CPUs, 120 hotplug CPUs setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:152 nr_node_ids:2 smp: Brought up 2 nodes, 32 CPUs Now with your patch applied it's still saying: smpboot: Allowing 152 CPUs, 120 hotplug CPUs setup_percpu: NR_CPUS:512 nr_cpumask_bits:512 nr_cpu_ids:152 nr_node_ids:2 smp: Brought up 2 nodes, 32 CPUs and the above code runs later on and the result is: nr_unique_ids 1 nr_cpu_ids 152 Allowing 1 possible CPU which subsequently causes the machine to die as we have already 32 CPUs online. So nr_unique_ids is not what it should be and even if it would be the code runs way too late. It needs to run _before_ setup_percpu() is invoked to scale everything correctly. Thanks, tglx -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html