aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/bus.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:45:38 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-20 12:45:38 -0400
commit04afb40593f9a3007e5ea817d009529ef10fb685 (patch)
treede5a16c2b1e5f2d97a7c2eccea4677719817f282 /drivers/acpi/bus.c
parent7f06a8b26aba1dc03b42272dc0089a800372c575 (diff)
parentcce4f632db200aef147c59084437168174b23f11 (diff)
Merge branch 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'acpica' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: (22 commits) ACPI: fix early DSDT dmi check warnings on ia64 ACPICA: Update version to 20100428. ACPICA: Update/clarify some parameter names associated with acpi_handle ACPICA: Rename acpi_ex_system_do_suspend->acpi_ex_system_do_sleep ACPICA: Prevent possible allocation overrun during object copy ACPICA: Split large file, evgpeblk ACPICA: Add GPE support for dynamically loaded ACPI tables ACPICA: Clarify/rename some root table descriptor fields ACPICA: Update version to 20100331. ACPICA: Minimize the differences between linux GPE code and ACPICA code base ACPI: add boot option acpi=copy_dsdt to fix corrupt DSDT ACPICA: Update DSDT copy/detection. ACPICA: Add subsystem option to force copy of DSDT to local memory ACPICA: Add detection of corrupted/replaced DSDT ACPICA: Add write support for DataTable operation regions ACPICA: Fix for acpi_reallocate_root_table for incorrect root table copy ACPICA: Update comments/headers, no functional change ACPICA: Update version to 20100304 ACPICA: Fix for possible fault in acpi_ex_release_mutex ACPICA: Standardize integer output for ACPICA warnings/errors ...
Diffstat (limited to 'drivers/acpi/bus.c')
-rw-r--r--drivers/acpi/bus.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 743576bf1bd7..9042a8579668 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -69,6 +69,44 @@ static struct dmi_system_id __cpuinitdata power_nocheck_dmi_table[] = {
69}; 69};
70 70
71 71
72#ifdef CONFIG_X86
73static int set_copy_dsdt(const struct dmi_system_id *id)
74{
75 printk(KERN_NOTICE "%s detected - "
76 "force copy of DSDT to local memory\n", id->ident);
77 acpi_gbl_copy_dsdt_locally = 1;
78 return 0;
79}
80
81static struct dmi_system_id dsdt_dmi_table[] __initdata = {
82 /*
83 * Insyde BIOS on some TOSHIBA machines corrupt the DSDT.
84 * https://bugzilla.kernel.org/show_bug.cgi?id=14679
85 */
86 {
87 .callback = set_copy_dsdt,
88 .ident = "TOSHIBA Satellite A505",
89 .matches = {
90 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
91 DMI_MATCH(DMI_PRODUCT_NAME, "Satellite A505"),
92 },
93 },
94 {
95 .callback = set_copy_dsdt,
96 .ident = "TOSHIBA Satellite L505D",
97 .matches = {
98 DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
99 DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L505D"),
100 },
101 },
102 {}
103};
104#else
105static struct dmi_system_id dsdt_dmi_table[] __initdata = {
106 {}
107};
108#endif
109
72/* -------------------------------------------------------------------------- 110/* --------------------------------------------------------------------------
73 Device Management 111 Device Management
74 -------------------------------------------------------------------------- */ 112 -------------------------------------------------------------------------- */
@@ -813,6 +851,12 @@ void __init acpi_early_init(void)
813 851
814 acpi_gbl_permanent_mmap = 1; 852 acpi_gbl_permanent_mmap = 1;
815 853
854 /*
855 * If the machine falls into the DMI check table,
856 * DSDT will be copied to memory
857 */
858 dmi_check_system(dsdt_dmi_table);
859
816 status = acpi_reallocate_root_table(); 860 status = acpi_reallocate_root_table();
817 if (ACPI_FAILURE(status)) { 861 if (ACPI_FAILURE(status)) {
818 printk(KERN_ERR PREFIX 862 printk(KERN_ERR PREFIX