aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Stout <craig.stout@ti.com>2012-09-04 15:07:49 -0700
committerZiyann <jaraidaniel@gmail.com>2014-10-01 13:00:57 +0200
commitf22c6cec4c76fbdeaec557029a5076461c8d5119 (patch)
tree08083219a14bdff672d99ae6e5db0e97cae56484
parentbaa91a1fb44fda29da760e02d6b36c8d8249e9bc (diff)
downloadkernel_samsung_tuna-f22c6cec4c76fbdeaec557029a5076461c8d5119.zip
kernel_samsung_tuna-f22c6cec4c76fbdeaec557029a5076461c8d5119.tar.gz
kernel_samsung_tuna-f22c6cec4c76fbdeaec557029a5076461c8d5119.tar.bz2
gcx: make gccmdthread interruptible to avoid false hung task detection.
Change-Id: I0e7172e2ddcf32571d745daed7b4e9e3bad1e0c6 Signed-off-by: Craig Stout <craig.stout@ti.com>
-rw-r--r--drivers/misc/gcx/gccore/gcqueue.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/misc/gcx/gccore/gcqueue.c b/drivers/misc/gcx/gccore/gcqueue.c
index 7e14fa1..472f33d 100644
--- a/drivers/misc/gcx/gccore/gcqueue.c
+++ b/drivers/misc/gcx/gccore/gcqueue.c
@@ -567,10 +567,13 @@ static int gccmdthread(void *_gccorecontext)
/* Wait for ready signal. If 'ready' is signaled before the
* call times out, signaled is set to a value greater then
* zero. If the call times out, signaled is set to zero. */
- signaled = wait_for_completion_timeout(&gcqueue->ready,
- timeout);
+ signaled = wait_for_completion_interruptible_timeout(
+ &gcqueue->ready, timeout);
GCDBG(GCZONE_THREAD, "wait(ready) = %d.\n", signaled);
+ if (signaled < 0)
+ continue;
+
/* Get triggered interrupts. */
ints2process = triggered = atomic_read(&gcqueue->triggered);
GCDBG(GCZONE_THREAD, "int = 0x%08X.\n", triggered);