cpuquiet: Remove synchronization from runnables_work_func()
authorPeter Boonstoppel <pboonstoppel@nvidia.com>
Thu, 24 Jan 2013 19:04:02 +0000 (11:04 -0800)
committerMrutyunjay Sawant <msawant@nvidia.com>
Thu, 14 Feb 2013 14:05:27 +0000 (06:05 -0800)
commit6c7e9a897eee426661f6e8ca1ca420d28a004289
treebf6feb219855af6b97fc30f34dd3fb5bfa1979e0
parent26d32b09e4bca90b8b10da9b88f370fe451bab52
cpuquiet: Remove synchronization from runnables_work_func()

runnables_stop() can deadlock when cancel_work_sync() waits for the
work function to end and the work function blocks on the same lock
held by runnables_stop().

Removing the locks from runnables_work_func() fixes this. This should
be safe because runnables_lock protects runnables_state and
runnables_work_func() only reads runnables_state. Also, the functions
that change state to DISABLED do a cancel_work_sync() to guarantee the
work function stopped running.

Bug 1215668

Change-Id: I70617b3b0fc81db8555869e67e3b11652af8d94c
Signed-off-by: Peter Boonstoppel <pboonstoppel@nvidia.com>
Reviewed-on: http://git-master/r/195797
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Diwakar Tundlam <dtundlam@nvidia.com>
Tested-by: Sang-Hun Lee <sanlee@nvidia.com>
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
drivers/cpuquiet/governors/runnable_threads.c