aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/bus.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/bus.c')
-rw-r--r--drivers/acpi/bus.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 37132dc2da03..49af19bb8c9b 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -69,6 +69,37 @@ static struct dmi_system_id __cpuinitdata power_nocheck_dmi_table[] = {
69}; 69};
70 70
71 71
72static int set_copy_dsdt(const struct dmi_system_id *id)
73{
74 printk(KERN_NOTICE "%s detected - "
75 "force copy of DSDT to local memory\n", id->ident);
76 acpi_gbl_copy_dsdt_locally = 1;
77 return 0;
78}
79
80static struct dmi_system_id dsdt_dmi_table[] __initdata = {
81 /*
82 * Insyde BIOS on some TOSHIBA machines corrupt the DSDT.
83 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
84 */
85 {
86 .callback = set_copy_dsdt,
87 .ident = "TOSHIBA Satellite A505",
88 .matches = {
89 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
90 DMI_MATCH(DMI_PRODUCT_NAME, "Satellite A505"),
91 },
92 },
93 {
94 .callback = set_copy_dsdt,
95 .ident = "TOSHIBA Satellite L505D",
96 .matches = {
97 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
98 DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L505D"),
99 },
100 }
101};
102
72/* -------------------------------------------------------------------------- 103/* --------------------------------------------------------------------------
73 Device Management 104 Device Management
74 -------------------------------------------------------------------------- */ 105 -------------------------------------------------------------------------- */
@@ -813,6 +844,12 @@ void __init acpi_early_init(void)
813 844
814 acpi_gbl_permanent_mmap = 1; 845 acpi_gbl_permanent_mmap = 1;
815 846
847 /*
848 * If the machine falls into the DMI check table,
849 * DSDT will be copied to memory
850 */
851 dmi_check_system(dsdt_dmi_table);
852
816 status = acpi_reallocate_root_table(); 853 status = acpi_reallocate_root_table();
817 if (ACPI_FAILURE(status)) { 854 if (ACPI_FAILURE(status)) {
818 printk(KERN_ERR PREFIX 855 printk(KERN_ERR PREFIX