On 28-10-15, 16:12, Rafael J. Wysocki wrote: > So this is a changelog matching your patch: > > "gov_queue_work() acquires cpufreq_governor_lock to allow > cpufreq_governor_stop() > to drain delayed work items possibly scheduled on CPUs that share the policy > with > a CPU being taken offline. > > However, the same goal may be achieved in a more straightforward way if the > policy pointer in the struct cpu_dbs_info matching the policy CPU is reset > upfront by cpufreq_governor_stop() under the timer_mutex belonging to it and > checked against NULL, under the same lock, at the beginning of dbs_timer(). > > In that case every instance of dbs_timer() run for a struct cpu_dbs_info > sharing the policy pointer in question after cpufreq_governor_stop() has > started > will notice that that pointer is NULL and bail out immediately without > queuing up > any new work items. In turn, gov_cancel_work() called by > cpufreq_governor_stop() > before destroying timer_mutex will wait for all of the delayed work items > currently running on the CPUs sharing the policy to drop the mutex, so it may > be destroyed safely. > > Make cpufreq_governor_stop() and dbs_timer() work as described and modify > gov_queue_work() so it does not acquire cpufreq_governor_lock any more."
Looks far better, thanks :) -- viresh -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/

