summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Xiao <b49994@freescale.com>2015-05-19 14:32:46 +0800
committerXianzhong <b07117@freescale.com>2015-05-28 19:26:34 +0800
commite3ba3c9a4dba57af6c7c40573c48fc3caabd0914 (patch)
tree48885834e7fbaee5063c85953cbada296f8c66c7
parentc690dcd80edc245b3edb9e1ae579569baaf035f1 (diff)
MGS-622 [#1729] Suspend/resume test cause GPU hang
Signal will cause some GPU kernel call return with error status gcvSTATUS_INTERRUPTED. If adding interruptcount first, the signal will cause the number not align with actual event, and the monitor funciton will make a fake GPU hang judgement based on this. Date May 21, 2015 Signed-off-by: Shawn Xiao <b49994@freescale.com> (cherry picked from commit 4ac2e19117d3c2349cab50e58a2b33606c3d5bdd)
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
index b5921692310e..7aa0dfe24f8b 100644
--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c
@@ -1728,14 +1728,6 @@ gckEVENT_Submit(
/* Determine cache needed to flush. */
gcmkVERIFY_OK(_QueryFlush(Event, Event->queues[id].head, &flush));
-#if gcdINTERRUPT_STATISTIC
- gcmkVERIFY_OK(gckOS_AtomIncrement(
- Event->os,
- Event->interruptCount,
- &oldValue
- ));
-#endif
-
#if gcdNULL_DRIVER
/* Notify immediately on infinite hardware. */
gcmkONERROR(gckEVENT_Interrupt(Event, 1 << id));
@@ -1835,6 +1827,14 @@ gckEVENT_Submit(
gcmkONERROR(gckCOMMAND_Execute(command, executeBytes));
#endif
#endif
+#if gcdINTERRUPT_STATISTIC
+ gcmkVERIFY_OK(gckOS_AtomIncrement(
+ Event->os,
+ Event->interruptCount,
+ &oldValue
+ ));
+#endif
+
}
/* Release the command queue. */