summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c12
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c14
2 files changed, 24 insertions, 2 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
index 73dab8117525..7c2d6a395288 100644
--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c
@@ -2080,6 +2080,9 @@ gckCOMMAND_Commit(
Command->kernel->eventObj, &eventRecord->iface, gcvKERNEL_PIXEL, gcvTRUE, gcvFALSE
));
+ /* Clear the record iface. */
+ gcmkONERROR(gckOS_ZeroMemory(&eventRecord->iface,gcmSIZEOF(gcsHAL_INTERFACE)));
+
/* Next record in the queue. */
nextEventRecord = gcmUINT64_TO_PTR(eventRecord->next);
@@ -2091,7 +2094,14 @@ gckCOMMAND_Commit(
));
eventRecord = gcvNULL;
- }
+ }else
+ {
+ /* Copy the record back to user space */
+ gcmkONERROR(gckOS_CopyToUserData(Command->os,
+ eventRecord,
+ EventQueue,
+ gcmSIZEOF(gcsQUEUE)));
+ }
EventQueue = nextEventRecord;
}
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 aa066063e586..7b84245badc6 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
@@ -1701,6 +1701,10 @@ gckEVENT_Commit(
gcmkONERROR(
gckEVENT_AddList(Event, &record->iface, gcvKERNEL_PIXEL, gcvTRUE, gcvFALSE));
+ /* Clear the record iface */
+ gcmkONERROR(
+ gckOS_ZeroMemory(&record->iface,gcmSIZEOF(gcsHAL_INTERFACE)));
+
/* Next record in the queue. */
next = gcmUINT64_TO_PTR(record->next);
@@ -1713,7 +1717,15 @@ gckEVENT_Commit(
gcmSIZEOF(gcsQUEUE),
(gctPOINTER *) record));
record = gcvNULL;
- }
+ }else
+ {
+ /* Copy the record back to User space */
+ gcmkONERROR(gckOS_CopyToUserData(Event->os,
+ record,
+ Queue,
+ gcmSIZEOF(gcsQUEUE)));
+ record = gcvNULL;
+ }
Queue = next;
}