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)  {  	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) { | 
