|
@@ -1129,6 +1129,10 @@ static struct cpufreq_policy *cpufreq_policy_restore(unsigned int cpu)
|
|
|
if (likely(policy)) {
|
|
|
/* Policy should be inactive here */
|
|
|
WARN_ON(!policy_is_inactive(policy));
|
|
|
+
|
|
|
+ down_write(&policy->rwsem);
|
|
|
+ policy->cpu = cpu;
|
|
|
+ up_write(&policy->rwsem);
|
|
|
}
|
|
|
|
|
|
return policy;
|
|
@@ -1225,16 +1229,6 @@ static void cpufreq_policy_free(struct cpufreq_policy *policy, bool notify)
|
|
|
kfree(policy);
|
|
|
}
|
|
|
|
|
|
-static void update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu)
|
|
|
-{
|
|
|
- if (WARN_ON(cpu == policy->cpu))
|
|
|
- return;
|
|
|
-
|
|
|
- down_write(&policy->rwsem);
|
|
|
- policy->cpu = cpu;
|
|
|
- up_write(&policy->rwsem);
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* cpufreq_add_dev - add a CPU device
|
|
|
*
|
|
@@ -1287,15 +1281,6 @@ static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
|
|
|
goto nomem_out;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * In the resume path, since we restore a saved policy, the assignment
|
|
|
- * to policy->cpu is like an update of the existing policy, rather than
|
|
|
- * the creation of a brand new one. So we need to perform this update
|
|
|
- * by invoking update_policy_cpu().
|
|
|
- */
|
|
|
- if (recover_policy && cpu != policy->cpu)
|
|
|
- update_policy_cpu(policy, cpu);
|
|
|
-
|
|
|
cpumask_copy(policy->cpus, cpumask_of(cpu));
|
|
|
|
|
|
/* call driver. From then on the cpufreq must be able
|