diff options
Diffstat (limited to 'arch/x86/kernel/acpi/boot.c')
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 4558f0d0822..ce664f33ea8 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -219,6 +219,8 @@ static int __init  acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)  {  	struct acpi_madt_local_x2apic *processor = NULL; +	int apic_id; +	u8 enabled;  	processor = (struct acpi_madt_local_x2apic *)header; @@ -227,6 +229,8 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)  	acpi_table_print_madt_entry(header); +	apic_id = processor->local_apic_id; +	enabled = processor->lapic_flags & ACPI_MADT_ENABLED;  #ifdef CONFIG_X86_X2APIC  	/*  	 * We need to register disabled CPU as well to permit @@ -235,8 +239,10 @@ acpi_parse_x2apic(struct acpi_subtable_header *header, const unsigned long end)  	 * to not preallocating memory for all NR_CPUS  	 * when we use CPU hotplug.  	 */ -	acpi_register_lapic(processor->local_apic_id,	/* APIC ID */ -			    processor->lapic_flags & ACPI_MADT_ENABLED); +	if (!cpu_has_x2apic && (apic_id >= 0xff) && enabled) +		printk(KERN_WARNING PREFIX "x2apic entry ignored\n"); +	else +		acpi_register_lapic(apic_id, enabled);  #else  	printk(KERN_WARNING PREFIX "x2apic entry ignored\n");  #endif  |