diff options
-rw-r--r-- | arch/x86/kernel/smpboot.c | 18 |
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) { |