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)  	acpi_processor_get_limit_info(pr); -	acpi_processor_power_init(pr, device); +	if (cpuidle_get_driver() == &acpi_idle_driver) +		acpi_processor_power_init(pr, device);  	pr->cdev = thermal_cooling_device_register("Processor", device,  						&processor_cooling_ops); @@ -920,9 +921,14 @@ static int __init acpi_processor_init(void)  	if (!acpi_processor_dir)  		return -ENOMEM;  #endif -	result = cpuidle_register_driver(&acpi_idle_driver); -	if (result < 0) -		goto out_proc; + +	if (!cpuidle_register_driver(&acpi_idle_driver)) { +		printk(KERN_DEBUG "ACPI: %s registered with cpuidle\n", +			acpi_idle_driver.name); +	} else { +		printk(KERN_DEBUG "ACPI: acpi_idle yielding to %s", +			cpuidle_get_driver()->name); +	}  	result = acpi_bus_register_driver(&acpi_processor_driver);  	if (result < 0) @@ -941,7 +947,6 @@ static int __init acpi_processor_init(void)  out_cpuidle:  	cpuidle_unregister_driver(&acpi_idle_driver); -out_proc:  #ifdef CONFIG_ACPI_PROCFS  	remove_proc_entry(ACPI_PROCESSOR_CLASS, acpi_root_dir);  #endif  |