diff options
Diffstat (limited to 'arch/x86/kernel/mpparse.c')
| -rw-r--r-- | arch/x86/kernel/mpparse.c | 25 | 
1 files changed, 11 insertions, 14 deletions
diff --git a/arch/x86/kernel/mpparse.c b/arch/x86/kernel/mpparse.c index 0f4c1fd5a1f4..45e3b69808ba 100644 --- a/arch/x86/kernel/mpparse.c +++ b/arch/x86/kernel/mpparse.c @@ -586,26 +586,23 @@ static void __init __get_smp_config(unsigned int early)  {  	struct intel_mp_floating *mpf = mpf_found; -	if (x86_quirks->mach_get_smp_config) { -		if (x86_quirks->mach_get_smp_config(early)) -			return; -	} +	if (!mpf) +		return; +  	if (acpi_lapic && early)  		return; +  	/* -	 * ACPI supports both logical (e.g. Hyper-Threading) and physical -	 * processors, where MPS only supports physical. +	 * MPS doesn't support hyperthreading, aka only have +	 * thread 0 apic id in MPS table  	 */ -	if (acpi_lapic && acpi_ioapic) { -		printk(KERN_INFO "Using ACPI (MADT) for SMP configuration " -		       "information\n"); +	if (acpi_lapic && acpi_ioapic)  		return; -	} else if (acpi_lapic) -		printk(KERN_INFO "Using ACPI for processor (LAPIC) " -		       "configuration information\n"); -	if (!mpf) -		return; +	if (x86_quirks->mach_get_smp_config) { +		if (x86_quirks->mach_get_smp_config(early)) +			return; +	}  	printk(KERN_INFO "Intel MultiProcessor Specification v1.%d\n",  	       mpf->mpf_specification);  | 
