diff options
Diffstat (limited to 'drivers/acpi/processor_perflib.c')
-rw-r--r-- | drivers/acpi/processor_perflib.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c index 85b32376dad7..0af48a8554cd 100644 --- a/drivers/acpi/processor_perflib.c +++ b/drivers/acpi/processor_perflib.c | |||
@@ -240,6 +240,28 @@ void acpi_processor_ppc_exit(void) | |||
240 | acpi_processor_ppc_status &= ~PPC_REGISTERED; | 240 | acpi_processor_ppc_status &= ~PPC_REGISTERED; |
241 | } | 241 | } |
242 | 242 | ||
243 | /* | ||
244 | * Do a quick check if the systems looks like it should use ACPI | ||
245 | * cpufreq. We look at a _PCT method being available, but don't | ||
246 | * do a whole lot of sanity checks. | ||
247 | */ | ||
248 | void acpi_processor_load_module(struct acpi_processor *pr) | ||
249 | { | ||
250 | static int requested; | ||
251 | acpi_status status = 0; | ||
252 | struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL }; | ||
253 | |||
254 | if (!arch_has_acpi_pdc() || requested) | ||
255 | return; | ||
256 | status = acpi_evaluate_object(pr->handle, "_PCT", NULL, &buffer); | ||
257 | if (!ACPI_FAILURE(status)) { | ||
258 | printk(KERN_INFO PREFIX "Requesting acpi_cpufreq\n"); | ||
259 | request_module_nowait("acpi_cpufreq"); | ||
260 | requested = 1; | ||
261 | } | ||
262 | kfree(buffer.pointer); | ||
263 | } | ||
264 | |||
243 | static int acpi_processor_get_performance_control(struct acpi_processor *pr) | 265 | static int acpi_processor_get_performance_control(struct acpi_processor *pr) |
244 | { | 266 | { |
245 | int result = 0; | 267 | int result = 0; |