aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhao Yakui <yakui.zhao@intel.com>2008-06-24 06:02:57 -0400
committerAndi Kleen <andi@basil.nowhere.org>2008-07-16 17:27:05 -0400
commit2a2a64714d9c40f7705c4de1e79a5b855c7211a9 (patch)
treecc140e964124f14f668c83fccccf73fc3320bb63
parentda5e09a1b3e5a9fc0b15a3feb64e921ccc55ba74 (diff)
ACPI: Disable MWAIT via DMI on broken Compal board
If a system matches in this DMI table, Linux will disable MWAIT support for idle. ie. "idle=nomwait" is automatically invoked and C1_FFH and C2C3_FFH access mode are disabled. http://bugzilla.kernel.org/show_bug.cgi?id=10807 http://bugzilla.kernel.org/show_bug.cgi?id=10914 Signed-off-by: Zhao Yakui <yakui.zhao@intel.com> Signed-off-by: Li Shaohua <shaohua.li@intel.com> Signed-off-by: Len Brown <len.brown@intel.com> Signed-off-by: Andi Kleen <ak@linux.intel.com>
-rw-r--r--drivers/acpi/processor_core.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c
index 4e1bb89fd6c3..ec0f2d581ece 100644
--- a/drivers/acpi/processor_core.c
+++ b/drivers/acpi/processor_core.c
@@ -120,6 +120,29 @@ static const struct file_operations acpi_processor_info_fops = {
120 120
121DEFINE_PER_CPU(struct acpi_processor *, processors); 121DEFINE_PER_CPU(struct acpi_processor *, processors);
122struct acpi_processor_errata errata __read_mostly; 122struct acpi_processor_errata errata __read_mostly;
123static int set_no_mwait(const struct dmi_system_id *id)
124{
125 printk(KERN_NOTICE PREFIX "%s detected - "
126 "disable mwait for CPU C-stetes\n", id->ident);
127 idle_nomwait = 1;
128 return 0;
129}
130
131static struct dmi_system_id __cpuinitdata processor_idle_dmi_table[] = {
132 {
133 set_no_mwait, "IFL91 board", {
134 DMI_MATCH(DMI_BIOS_VENDOR, "COMPAL"),
135 DMI_MATCH(DMI_SYS_VENDOR, "ZEPTO"),
136 DMI_MATCH(DMI_PRODUCT_VERSION, "3215W"),
137 DMI_MATCH(DMI_BOARD_NAME, "IFL91") }, NULL},
138 {
139 set_no_mwait, "Extensa 5220", {
140 DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
141 DMI_MATCH(DMI_SYS_VENDOR, "ACER"),
142 DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
143 DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL},
144 {},
145};
123 146
124/* -------------------------------------------------------------------------- 147/* --------------------------------------------------------------------------
125 Errata Handling 148 Errata Handling
@@ -1100,6 +1123,11 @@ static int __init acpi_processor_init(void)
1100 return -ENOMEM; 1123 return -ENOMEM;
1101 acpi_processor_dir->owner = THIS_MODULE; 1124 acpi_processor_dir->owner = THIS_MODULE;
1102 1125
1126 /*
1127 * Check whether the system is DMI table. If yes, OSPM
1128 * should not use mwait for CPU-states.
1129 */
1130 dmi_check_system(processor_idle_dmi_table);
1103 result = cpuidle_register_driver(&acpi_idle_driver); 1131 result = cpuidle_register_driver(&acpi_idle_driver);
1104 if (result < 0) 1132 if (result < 0)
1105 goto out_proc; 1133 goto out_proc;