Skip to content

Commit 2a2a647

Browse files
yakuizhaoAndi Kleen
authored andcommitted
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 <[email protected]> Signed-off-by: Li Shaohua <[email protected]> Signed-off-by: Len Brown <[email protected]> Signed-off-by: Andi Kleen <[email protected]>
1 parent da5e09a commit 2a2a647

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

drivers/acpi/processor_core.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,29 @@ static const struct file_operations acpi_processor_info_fops = {
120120

121121
DEFINE_PER_CPU(struct acpi_processor *, processors);
122122
struct acpi_processor_errata errata __read_mostly;
123+
static 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+
131+
static 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+
};
123146

124147
/* --------------------------------------------------------------------------
125148
Errata Handling
@@ -1100,6 +1123,11 @@ static int __init acpi_processor_init(void)
11001123
return -ENOMEM;
11011124
acpi_processor_dir->owner = THIS_MODULE;
11021125

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);
11031131
result = cpuidle_register_driver(&acpi_idle_driver);
11041132
if (result < 0)
11051133
goto out_proc;

0 commit comments

Comments
 (0)