From 987865cc03f8564f5133e62f9fbccde5e587af62 Mon Sep 17 00:00:00 2001 From: Dominik Brodowski Date: Wed, 28 Jan 2004 07:04:03 -0500 Subject: [PATCH] [ACPI] remove unnecessary check in acpi-cpufreq driver from Dominik Brodowski The acpi cpufreq driver includes a test at startup which detects whether ACPI P-States are supported on any CPU, and whether transitions work. However, this test is faulty: it is only run _after_ the acpi driver is registered, causing race situations. Also, it doesn't save anything _as_ the driver is already registered. So, it can safely be removed. --- arch/i386/kernel/cpu/cpufreq/acpi.c | 74 ++++------------------------- 1 file changed, 10 insertions(+), 64 deletions(-) diff --git a/arch/i386/kernel/cpu/cpufreq/acpi.c b/arch/i386/kernel/cpu/cpufreq/acpi.c index d493f49b527fd..1134d2bd3f2a1 100644 --- a/arch/i386/kernel/cpu/cpufreq/acpi.c +++ b/arch/i386/kernel/cpu/cpufreq/acpi.c @@ -1,9 +1,9 @@ /* - * acpi_processor_perf.c - ACPI Processor P-States Driver ($Revision: 1.3 $) + * acpi-cpufreq-io.c - ACPI Processor P-States Driver ($Revision: 1.3 $) * * Copyright (C) 2001, 2002 Andy Grover * Copyright (C) 2001, 2002 Paul Diefenbaugh - * Copyright (C) 2002, 2003 Dominik Brodowski + * Copyright (C) 2002 - 2004 Dominik Brodowski * * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * @@ -692,7 +692,6 @@ static int __init acpi_cpufreq_init (void) { int result = 0; - int current_state = 0; int i = 0; struct acpi_processor *pr = NULL; struct acpi_processor_performance *perf = NULL; @@ -700,9 +699,6 @@ acpi_cpufreq_init (void) ACPI_FUNCTION_TRACE("acpi_cpufreq_init"); /* alloc memory */ - if (performance) - return_VALUE(-EBUSY); - performance = kmalloc(NR_CPUS * sizeof(struct acpi_processor_performance), GFP_KERNEL); if (!performance) return_VALUE(-ENOMEM); @@ -720,69 +716,19 @@ acpi_cpufreq_init (void) result = acpi_processor_get_performance_info(&performance[i]); } - /* test it on one CPU */ - for (i=0; iflags.performance) - goto found_capable_cpu; - } - result = -ENODEV; - goto err0; - - found_capable_cpu: - result = cpufreq_register_driver(&acpi_cpufreq_driver); - if (result) - goto err0; - - perf = pr->performance; - current_state = perf->state; - - if (current_state == pr->limit.state.px) { - result = acpi_processor_set_performance(perf, (perf->state_count - 1)); - if (result) { - ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Disabled P-States due to failure while switching.\n")); - result = -ENODEV; - goto err1; - } - } - - result = acpi_processor_set_performance(perf, pr->limit.state.px); if (result) { - ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Disabled P-States due to failure while switching.\n")); - result = -ENODEV; - goto err1; - } - - if (current_state != 0) { - result = acpi_processor_set_performance(perf, current_state); - if (result) { - ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Disabled P-States due to failure while switching.\n")); - result = -ENODEV; - goto err1; - } - } - - return_VALUE(0); - - /* error handling */ - err1: - cpufreq_unregister_driver(&acpi_cpufreq_driver); - - err0: - /* unregister struct acpi_processor_performance performance */ - for (i=0; iflags.performance = 0; - performance[i].pr->performance = NULL; - performance[i].pr = NULL; + /* unregister struct acpi_processor_performance performance */ + for (i=0; iflags.performance = 0; + performance[i].pr->performance = NULL; + performance[i].pr = NULL; + } } + kfree(performance); } - kfree(performance); - printk(KERN_INFO "cpufreq: No CPUs supporting ACPI performance management found.\n"); return_VALUE(result); } -- 2.53.0