diff options
Diffstat (limited to 'drivers/acpi/processor_core.c')
-rw-r--r-- | drivers/acpi/processor_core.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 9a803f85ccfe..4e1bb89fd6c3 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
@@ -265,7 +265,20 @@ static int acpi_processor_set_pdc(struct acpi_processor *pr) | |||
265 | 265 | ||
266 | if (!pdc_in) | 266 | if (!pdc_in) |
267 | return status; | 267 | return status; |
268 | if (idle_nomwait) { | ||
269 | /* | ||
270 | * If mwait is disabled for CPU C-states, the C2C3_FFH access | ||
271 | * mode will be disabled in the parameter of _PDC object. | ||
272 | * Of course C1_FFH access mode will also be disabled. | ||
273 | */ | ||
274 | union acpi_object *obj; | ||
275 | u32 *buffer = NULL; | ||
268 | 276 | ||
277 | obj = pdc_in->pointer; | ||
278 | buffer = (u32 *)(obj->buffer.pointer); | ||
279 | buffer[2] &= ~(ACPI_PDC_C_C2C3_FFH | ACPI_PDC_C_C1_FFH); | ||
280 | |||
281 | } | ||
269 | status = acpi_evaluate_object(pr->handle, "_PDC", pdc_in, NULL); | 282 | status = acpi_evaluate_object(pr->handle, "_PDC", pdc_in, NULL); |
270 | 283 | ||
271 | if (ACPI_FAILURE(status)) | 284 | if (ACPI_FAILURE(status)) |