diff options
Diffstat (limited to 'arch/x86/kernel/apic/x2apic_phys.c')
| -rw-r--r-- | arch/x86/kernel/apic/x2apic_phys.c | 21 | 
1 files changed, 11 insertions, 10 deletions
diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c index e03a1e180e8..562a76d433c 100644 --- a/arch/x86/kernel/apic/x2apic_phys.c +++ b/arch/x86/kernel/apic/x2apic_phys.c @@ -20,18 +20,19 @@ static int set_x2apic_phys_mode(char *arg)  }  early_param("x2apic_phys", set_x2apic_phys_mode); -static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) +static bool x2apic_fadt_phys(void)  { -	if (x2apic_phys) -		return x2apic_enabled(); -	else if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) && -		(acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL) && -		x2apic_enabled()) { +	if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) && +		(acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL)) {  		printk(KERN_DEBUG "System requires x2apic physical mode\n"); -		return 1; +		return true;  	} -	else -		return 0; +	return false; +} + +static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id) +{ +	return x2apic_enabled() && (x2apic_phys || x2apic_fadt_phys());  }  static void @@ -82,7 +83,7 @@ static void init_x2apic_ldr(void)  static int x2apic_phys_probe(void)  { -	if (x2apic_mode && x2apic_phys) +	if (x2apic_mode && (x2apic_phys || x2apic_fadt_phys()))  		return 1;  	return apic == &apic_x2apic_phys;  |