cpufreq: pcc-cpufreq: Fix wait_event() under spinlock
[firefly-linux-kernel-4.4.55.git] / drivers / cpufreq / pcc-cpufreq.c
index 728a2d8794993defdbe1e10c15fe7ee814c528bb..4d2c8e861089a45a9fe12e1106e08e0fd7482195 100644 (file)
@@ -204,7 +204,6 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
        u32 input_buffer;
        int cpu;
 
-       spin_lock(&pcc_lock);
        cpu = policy->cpu;
        pcc_cpu_data = per_cpu_ptr(pcc_cpu_info, cpu);
 
@@ -216,6 +215,7 @@ static int pcc_cpufreq_target(struct cpufreq_policy *policy,
        freqs.old = policy->cur;
        freqs.new = target_freq;
        cpufreq_freq_transition_begin(policy, &freqs);
+       spin_lock(&pcc_lock);
 
        input_buffer = 0x1 | (((target_freq * 100)
                               / (ioread32(&pcch_hdr->nominal) * 1000)) << 8);