|
@@ -1407,9 +1407,21 @@ __init void prefill_possible_map(void)
|
|
|
{
|
|
|
int i, possible;
|
|
|
|
|
|
- /* no processor from mptable or madt */
|
|
|
- if (!num_processors)
|
|
|
- num_processors = 1;
|
|
|
+ /* No boot processor was found in mptable or ACPI MADT */
|
|
|
+ if (!num_processors) {
|
|
|
+ int apicid = boot_cpu_physical_apicid;
|
|
|
+ int cpu = hard_smp_processor_id();
|
|
|
+
|
|
|
+ pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu);
|
|
|
+
|
|
|
+ /* Make sure boot cpu is enumerated */
|
|
|
+ if (apic->cpu_present_to_apicid(0) == BAD_APICID &&
|
|
|
+ apic->apic_id_valid(apicid))
|
|
|
+ generic_processor_info(apicid, boot_cpu_apic_version);
|
|
|
+
|
|
|
+ if (!num_processors)
|
|
|
+ num_processors = 1;
|
|
|
+ }
|
|
|
|
|
|
i = setup_max_cpus ?: 1;
|
|
|
if (setup_possible_cpus == -1) {
|