From mboxrd@z Thu Jan 1 00:00:00 1970 From: Meelis Roos Subject: Re: 3.15-rc2: longhaul cpufreq stalls tasks for 120s+ Date: Thu, 24 Apr 2014 14:17:29 +0300 (EEST) Message-ID: References: Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-path: In-Reply-To: Sender: linux-kernel-owner@vger.kernel.org To: Viresh Kumar Cc: "Srivatsa S. Bhat" , "Rafael J. Wysocki" , "cpufreq@vger.kernel.org" , "linux-pm@vger.kernel.org" , Linux Kernel list List-Id: linux-pm@vger.kernel.org > On 24 April 2014 15:46, Meelis Roos wrote: > > I can add debug to where needed and try it. > > I am quite sure below wouldn't fix it, but just wanted to check > for the corner case :( > > Can you please try attached patch (mail's content would be > broken): Did not help. Will try lock debugging now. > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c > index abda660..7198e23 100644 > --- a/drivers/cpufreq/cpufreq.c > +++ b/drivers/cpufreq/cpufreq.c > @@ -355,10 +355,12 @@ void cpufreq_freq_transition_begin(struct > cpufreq_policy *policy, > struct cpufreq_freqs *freqs) > { > wait: > + smp_mb(); > wait_event(policy->transition_wait, !policy->transition_ongoing); > > spin_lock(&policy->transition_lock); > > + smp_mb(); > if (unlikely(policy->transition_ongoing)) { > spin_unlock(&policy->transition_lock); > goto wait; > @@ -380,8 +382,11 @@ void cpufreq_freq_transition_end(struct > cpufreq_policy *policy, > > cpufreq_notify_post_transition(policy, freqs, transition_failed); > > + smp_mb(); > + > policy->transition_ongoing = false; > > + smp_mb(); > wake_up(&policy->transition_wait); > } > EXPORT_SYMBOL_GPL(cpufreq_freq_transition_end); > -- Meelis Roos (mroos@linux.ee)