aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/cpufreq/acpi-cpufreq.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/cpufreq/acpi-cpufreq.c')
-rw-r--r--drivers/cpufreq/acpi-cpufreq.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c
index edc089e9d0c4..2c5906d71397 100644
--- a/drivers/cpufreq/acpi-cpufreq.c
+++ b/drivers/cpufreq/acpi-cpufreq.c
@@ -232,7 +232,7 @@ static unsigned extract_msr(u32 msr, struct acpi_cpufreq_data *data)
232 perf = data->acpi_data; 232 perf = data->acpi_data;
233 233
234 for (i = 0; data->freq_table[i].frequency != CPUFREQ_TABLE_END; i++) { 234 for (i = 0; data->freq_table[i].frequency != CPUFREQ_TABLE_END; i++) {
235 if (msr == perf->states[data->freq_table[i].index].status) 235 if (msr == perf->states[data->freq_table[i].driver_data].status)
236 return data->freq_table[i].frequency; 236 return data->freq_table[i].frequency;
237 } 237 }
238 return data->freq_table[0].frequency; 238 return data->freq_table[0].frequency;
@@ -442,7 +442,7 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
442 goto out; 442 goto out;
443 } 443 }
444 444
445 next_perf_state = data->freq_table[next_state].index; 445 next_perf_state = data->freq_table[next_state].driver_data;
446 if (perf->state == next_perf_state) { 446 if (perf->state == next_perf_state) {
447 if (unlikely(data->resume)) { 447 if (unlikely(data->resume)) {
448 pr_debug("Called after resume, resetting to P%d\n", 448 pr_debug("Called after resume, resetting to P%d\n",
@@ -494,12 +494,14 @@ static int acpi_cpufreq_target(struct cpufreq_policy *policy,
494 pr_debug("acpi_cpufreq_target failed (%d)\n", 494 pr_debug("acpi_cpufreq_target failed (%d)\n",
495 policy->cpu); 495 policy->cpu);
496 result = -EAGAIN; 496 result = -EAGAIN;
497 goto out; 497 freqs.new = freqs.old;
498 } 498 }
499 } 499 }
500 500
501 cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE); 501 cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
502 perf->state = next_perf_state; 502
503 if (!result)
504 perf->state = next_perf_state;
503 505
504out: 506out:
505 return result; 507 return result;
@@ -811,7 +813,7 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy)
811 data->freq_table[valid_states-1].frequency / 1000) 813 data->freq_table[valid_states-1].frequency / 1000)
812 continue; 814 continue;
813 815
814 data->freq_table[valid_states].index = i; 816 data->freq_table[valid_states].driver_data = i;
815 data->freq_table[valid_states].frequency = 817 data->freq_table[valid_states].frequency =
816 perf->states[i].core_frequency * 1000; 818 perf->states[i].core_frequency * 1000;
817 valid_states++; 819 valid_states++;
@@ -947,7 +949,7 @@ static void __init acpi_cpufreq_boost_init(void)
947 /* We create the boost file in any case, though for systems without 949 /* We create the boost file in any case, though for systems without
948 * hardware support it will be read-only and hardwired to return 0. 950 * hardware support it will be read-only and hardwired to return 0.
949 */ 951 */
950 if (sysfs_create_file(cpufreq_global_kobject, &(global_boost.attr))) 952 if (cpufreq_sysfs_create_file(&(global_boost.attr)))
951 pr_warn(PFX "could not register global boost sysfs file\n"); 953 pr_warn(PFX "could not register global boost sysfs file\n");
952 else 954 else
953 pr_debug("registered global boost sysfs file\n"); 955 pr_debug("registered global boost sysfs file\n");
@@ -955,7 +957,7 @@ static void __init acpi_cpufreq_boost_init(void)
955 957
956static void __exit acpi_cpufreq_boost_exit(void) 958static void __exit acpi_cpufreq_boost_exit(void)
957{ 959{
958 sysfs_remove_file(cpufreq_global_kobject, &(global_boost.attr)); 960 cpufreq_sysfs_remove_file(&(global_boost.attr));
959 961
960 if (msrs) { 962 if (msrs) {
961 unregister_cpu_notifier(&boost_nb); 963 unregister_cpu_notifier(&boost_nb);