diff options
Diffstat (limited to 'drivers/acpi/processor_driver.c')
-rw-r--r-- | drivers/acpi/processor_driver.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c index 5675d9747e87..b1034a9ada4e 100644 --- a/drivers/acpi/processor_driver.c +++ b/drivers/acpi/processor_driver.c | |||
@@ -616,7 +616,8 @@ static int __cpuinit acpi_processor_add(struct acpi_device *device) | |||
616 | acpi_processor_get_limit_info(pr); | 616 | acpi_processor_get_limit_info(pr); |
617 | 617 | ||
618 | 618 | ||
619 | acpi_processor_power_init(pr, device); | 619 | if (cpuidle_get_driver() == &acpi_idle_driver) |
620 | acpi_processor_power_init(pr, device); | ||
620 | 621 | ||
621 | pr->cdev = thermal_cooling_device_register("Processor", device, | 622 | pr->cdev = thermal_cooling_device_register("Processor", device, |
622 | &processor_cooling_ops); | 623 | &processor_cooling_ops); |
@@ -920,9 +921,14 @@ static int __init acpi_processor_init(void) | |||
920 | if (!acpi_processor_dir) | 921 | if (!acpi_processor_dir) |
921 | return -ENOMEM; | 922 | return -ENOMEM; |
922 | #endif | 923 | #endif |
923 | result = cpuidle_register_driver(&acpi_idle_driver); | 924 | |
924 | if (result < 0) | 925 | if (!cpuidle_register_driver(&acpi_idle_driver)) { |
925 | goto out_proc; | 926 | printk(KERN_DEBUG "ACPI: %s registered with cpuidle\n", |
927 | acpi_idle_driver.name); | ||
928 | } else { | ||
929 | printk(KERN_DEBUG "ACPI: acpi_idle yielding to %s", | ||
930 | cpuidle_get_driver()->name); | ||
931 | } | ||
926 | 932 | ||
927 | result = acpi_bus_register_driver(&acpi_processor_driver); | 933 | result = acpi_bus_register_driver(&acpi_processor_driver); |
928 | if (result < 0) | 934 | if (result < 0) |
@@ -941,7 +947,6 @@ static int __init acpi_processor_init(void) | |||
941 | out_cpuidle: | 947 | out_cpuidle: |
942 | cpuidle_unregister_driver(&acpi_idle_driver); | 948 | cpuidle_unregister_driver(&acpi_idle_driver); |
943 | 949 | ||
944 | out_proc: | ||
945 | #ifdef CONFIG_ACPI_PROCFS | 950 | #ifdef CONFIG_ACPI_PROCFS |
946 | remove_proc_entry(ACPI_PROCESSOR_CLASS, acpi_root_dir); | 951 | remove_proc_entry(ACPI_PROCESSOR_CLASS, acpi_root_dir); |
947 | #endif | 952 | #endif |