@@ -120,6 +120,29 @@ static const struct file_operations acpi_processor_info_fops = {
120
120
121
121
DEFINE_PER_CPU (struct acpi_processor * , processors );
122
122
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
+ };
123
146
124
147
/* --------------------------------------------------------------------------
125
148
Errata Handling
@@ -1100,6 +1123,11 @@ static int __init acpi_processor_init(void)
1100
1123
return - ENOMEM ;
1101
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
1131
result = cpuidle_register_driver (& acpi_idle_driver );
1104
1132
if (result < 0 )
1105
1133
goto out_proc ;
0 commit comments