diff options
Diffstat (limited to 'arch/x86/kernel/acpi/boot.c')
| -rw-r--r-- | arch/x86/kernel/acpi/boot.c | 24 | 
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 5b6d1a95776f..0d01e7f5078c 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -1328,6 +1328,17 @@ static int __init disable_acpi_pci(const struct dmi_system_id *d)  	return 0;  } +static int __init disable_acpi_xsdt(const struct dmi_system_id *d) +{ +	if (!acpi_force) { +		pr_notice("%s detected: force use of acpi=rsdt\n", d->ident); +		acpi_gbl_do_not_use_xsdt = TRUE; +	} else { +		pr_notice("Warning: DMI blacklist says broken, but acpi XSDT forced\n"); +	} +	return 0; +} +  static int __init dmi_disable_acpi(const struct dmi_system_id *d)  {  	if (!acpi_force) { @@ -1451,6 +1462,19 @@ static const struct dmi_system_id acpi_dmi_table[] __initconst = {  		     DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 360"),  		     },  	 }, +	/* +	 * Boxes that need ACPI XSDT use disabled due to corrupted tables +	 */ +	{ +	 .callback = disable_acpi_xsdt, +	 .ident = "Advantech DAC-BJ01", +	 .matches = { +		     DMI_MATCH(DMI_SYS_VENDOR, "NEC"), +		     DMI_MATCH(DMI_PRODUCT_NAME, "Bearlake CRB Board"), +		     DMI_MATCH(DMI_BIOS_VERSION, "V1.12"), +		     DMI_MATCH(DMI_BIOS_DATE, "02/01/2011"), +		     }, +	 },  	{}  };  |