aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/smpboot.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index 42a93621f5b0..951f093a96fe 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1407,9 +1407,21 @@ __init void prefill_possible_map(void)
1407{ 1407{
1408 int i, possible; 1408 int i, possible;
1409 1409
1410 /* no processor from mptable or madt */ 1410 /* No boot processor was found in mptable or ACPI MADT */
1411 if (!num_processors) 1411 if (!num_processors) {
1412 num_processors = 1; 1412 int apicid = boot_cpu_physical_apicid;
1413 int cpu = hard_smp_processor_id();
1414
1415 pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu);
1416
1417 /* Make sure boot cpu is enumerated */
1418 if (apic->cpu_present_to_apicid(0) == BAD_APICID &&
1419 apic->apic_id_valid(apicid))
1420 generic_processor_info(apicid, boot_cpu_apic_version);
1421
1422 if (!num_processors)
1423 num_processors = 1;
1424 }
1413 1425
1414 i = setup_max_cpus ?: 1; 1426 i = setup_max_cpus ?: 1;
1415 if (setup_possible_cpus == -1) { 1427 if (setup_possible_cpus == -1) {