Skip to content

Commit

Permalink
ACPI: allow a native cpuidle driver to displace ACPI
Browse files Browse the repository at this point in the history
The ACPI driver would fail probe when it found that
another driver had previously registered with cpuidle.

But this is a natural situation, as a native hardware
cpuidle driver should be able to bind instead of ACPI,
and the ACPI processor driver should be able to handle
yielding control of C-states while still handling
P-states and T-states.

Add a KERN_DEBUG line showing when acpi_idle
does successfully register.

Signed-off-by: Len Brown <len.brown@intel.com>
  • Loading branch information
Len Brown committed May 28, 2010
1 parent 752138d commit 541adf7
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions drivers/acpi/processor_driver.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -920,9 +921,10 @@ 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);

result = acpi_bus_register_driver(&acpi_processor_driver);
if (result < 0)
Expand All @@ -941,7 +943,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
Expand Down

0 comments on commit 541adf7

Please sign in to comment.