|
@@ -120,6 +120,29 @@ static const struct file_operations acpi_processor_info_fops = {
|
|
|
|
|
|
DEFINE_PER_CPU(struct acpi_processor *, processors);
|
|
|
struct acpi_processor_errata errata __read_mostly;
|
|
|
+static int set_no_mwait(const struct dmi_system_id *id)
|
|
|
+{
|
|
|
+ printk(KERN_NOTICE PREFIX "%s detected - "
|
|
|
+ "disable mwait for CPU C-stetes\n", id->ident);
|
|
|
+ idle_nomwait = 1;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static struct dmi_system_id __cpuinitdata processor_idle_dmi_table[] = {
|
|
|
+ {
|
|
|
+ set_no_mwait, "IFL91 board", {
|
|
|
+ DMI_MATCH(DMI_BIOS_VENDOR, "COMPAL"),
|
|
|
+ DMI_MATCH(DMI_SYS_VENDOR, "ZEPTO"),
|
|
|
+ DMI_MATCH(DMI_PRODUCT_VERSION, "3215W"),
|
|
|
+ DMI_MATCH(DMI_BOARD_NAME, "IFL91") }, NULL},
|
|
|
+ {
|
|
|
+ set_no_mwait, "Extensa 5220", {
|
|
|
+ DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
|
|
|
+ DMI_MATCH(DMI_SYS_VENDOR, "ACER"),
|
|
|
+ DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
|
|
|
+ DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL},
|
|
|
+ {},
|
|
|
+};
|
|
|
|
|
|
/* --------------------------------------------------------------------------
|
|
|
Errata Handling
|
|
@@ -1100,6 +1123,11 @@ static int __init acpi_processor_init(void)
|
|
|
return -ENOMEM;
|
|
|
acpi_processor_dir->owner = THIS_MODULE;
|
|
|
|
|
|
+ /*
|
|
|
+ * Check whether the system is DMI table. If yes, OSPM
|
|
|
+ * should not use mwait for CPU-states.
|
|
|
+ */
|
|
|
+ dmi_check_system(processor_idle_dmi_table);
|
|
|
result = cpuidle_register_driver(&acpi_idle_driver);
|
|
|
if (result < 0)
|
|
|
goto out_proc;
|