diff options
-rw-r--r-- | drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_command.c | 12 | ||||
-rw-r--r-- | drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_event.c | 14 |
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; } |