diff options
author | Craig Stout <craig.stout@ti.com> | 2012-09-04 15:07:49 -0700 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-10-01 13:00:57 +0200 |
commit | f22c6cec4c76fbdeaec557029a5076461c8d5119 (patch) | |
tree | 08083219a14bdff672d99ae6e5db0e97cae56484 | |
parent | baa91a1fb44fda29da760e02d6b36c8d8249e9bc (diff) | |
download | kernel_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.c | 7 |
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); |