static int cpufreq_online(unsigned int cpu)
{
struct cpufreq_policy *policy;
- bool recover_policy;
+ bool new_policy;
unsigned long flags;
unsigned int j;
int ret;
return cpufreq_add_policy_cpu(policy, cpu);
/* This is the only online CPU for the policy. Start over. */
- recover_policy = true;
+ new_policy = false;
down_write(&policy->rwsem);
policy->cpu = cpu;
policy->governor = NULL;
up_write(&policy->rwsem);
} else {
- recover_policy = false;
+ new_policy = true;
policy = cpufreq_policy_alloc(cpu);
if (!policy)
return -ENOMEM;
down_write(&policy->rwsem);
- if (!recover_policy) {
+ if (new_policy) {
/* related_cpus should at least include policy->cpus. */
cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
/* Remember CPUs present at the policy creation time. */
*/
cpumask_and(policy->cpus, policy->cpus, cpu_online_mask);
- if (!recover_policy) {
+ if (new_policy) {
policy->user_policy.min = policy->min;
policy->user_policy.max = policy->max;
blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
CPUFREQ_START, policy);
- if (!recover_policy) {
+ if (new_policy) {
ret = cpufreq_add_dev_interface(policy);
if (ret)
goto out_exit_policy;
if (ret) {
pr_err("%s: Failed to initialize policy for cpu: %d (%d)\n",
__func__, cpu, ret);
- goto out_remove_policy_notify;
+ /* cpufreq_policy_free() will notify based on this */
+ new_policy = false;
+ goto out_exit_policy;
}
- if (!recover_policy) {
+ if (new_policy) {
policy->user_policy.policy = policy->policy;
policy->user_policy.governor = policy->governor;
}
return 0;
-out_remove_policy_notify:
- /* cpufreq_policy_free() will notify based on this */
- recover_policy = true;
out_exit_policy:
up_write(&policy->rwsem);
if (cpufreq_driver->exit)
cpufreq_driver->exit(policy);
out_free_policy:
- cpufreq_policy_free(policy, recover_policy);
+ cpufreq_policy_free(policy, !new_policy);
return ret;
}