diff options
| -rw-r--r-- | drivers/acpi/processor_core.c | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 7c50a4c6c657..4d91b32423a9 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
| @@ -19,24 +19,6 @@ | |||
| 19 | #define _COMPONENT ACPI_PROCESSOR_COMPONENT | 19 | #define _COMPONENT ACPI_PROCESSOR_COMPONENT |
| 20 | ACPI_MODULE_NAME("processor_core"); | 20 | ACPI_MODULE_NAME("processor_core"); |
| 21 | 21 | ||
| 22 | static int __init set_no_mwait(const struct dmi_system_id *id) | ||
| 23 | { | ||
| 24 | printk(KERN_NOTICE PREFIX "%s detected - " | ||
| 25 | "disabling mwait for CPU C-states\n", id->ident); | ||
| 26 | boot_option_idle_override = IDLE_NOMWAIT; | ||
| 27 | return 0; | ||
| 28 | } | ||
| 29 | |||
| 30 | static struct dmi_system_id processor_idle_dmi_table[] __initdata = { | ||
| 31 | { | ||
| 32 | set_no_mwait, "Extensa 5220", { | ||
| 33 | DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), | ||
| 34 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
| 35 | DMI_MATCH(DMI_PRODUCT_VERSION, "0100"), | ||
| 36 | DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL}, | ||
| 37 | {}, | ||
| 38 | }; | ||
| 39 | |||
| 40 | static int map_lapic_id(struct acpi_subtable_header *entry, | 22 | static int map_lapic_id(struct acpi_subtable_header *entry, |
| 41 | u32 acpi_id, int *apic_id) | 23 | u32 acpi_id, int *apic_id) |
| 42 | { | 24 | { |
| @@ -379,13 +361,40 @@ early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv) | |||
| 379 | return AE_OK; | 361 | return AE_OK; |
| 380 | } | 362 | } |
| 381 | 363 | ||
| 382 | void __init acpi_early_processor_set_pdc(void) | 364 | #if defined(CONFIG_X86) || defined(CONFIG_IA64) |
| 365 | static int __init set_no_mwait(const struct dmi_system_id *id) | ||
| 366 | { | ||
| 367 | pr_notice(PREFIX "%s detected - disabling mwait for CPU C-states\n", | ||
| 368 | id->ident); | ||
| 369 | boot_option_idle_override = IDLE_NOMWAIT; | ||
| 370 | return 0; | ||
| 371 | } | ||
| 372 | |||
| 373 | static struct dmi_system_id processor_idle_dmi_table[] __initdata = { | ||
| 374 | { | ||
| 375 | set_no_mwait, "Extensa 5220", { | ||
| 376 | DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"), | ||
| 377 | DMI_MATCH(DMI_SYS_VENDOR, "Acer"), | ||
| 378 | DMI_MATCH(DMI_PRODUCT_VERSION, "0100"), | ||
| 379 | DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL}, | ||
| 380 | {}, | ||
| 381 | }; | ||
| 382 | |||
| 383 | static void __init processor_dmi_check(void) | ||
| 383 | { | 384 | { |
| 384 | /* | 385 | /* |
| 385 | * Check whether the system is DMI table. If yes, OSPM | 386 | * Check whether the system is DMI table. If yes, OSPM |
| 386 | * should not use mwait for CPU-states. | 387 | * should not use mwait for CPU-states. |
| 387 | */ | 388 | */ |
| 388 | dmi_check_system(processor_idle_dmi_table); | 389 | dmi_check_system(processor_idle_dmi_table); |
| 390 | } | ||
| 391 | #else | ||
| 392 | static inline void processor_dmi_check(void) {} | ||
| 393 | #endif | ||
| 394 | |||
| 395 | void __init acpi_early_processor_set_pdc(void) | ||
| 396 | { | ||
| 397 | processor_dmi_check(); | ||
| 389 | 398 | ||
| 390 | acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, | 399 | acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, |
| 391 | ACPI_UINT32_MAX, | 400 | ACPI_UINT32_MAX, |
