diff options
Diffstat (limited to 'drivers/acpi/processor_core.c')
-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, |