summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXianzhong <b07117@freescale.com>2015-06-15 12:05:24 +0800
committerXianzhong <b07117@freescale.com>2015-06-15 14:41:57 +0800
commit842b10d56183932ac194453a825b9adbe32f1262 (patch)
tree1380f28e483ab231991909b87ed4514cb8a1fd40
parent31c5ed0a215cbc6f1261c92369e811243a4539ca (diff)
MGS-755 [#1779] fix vg context buffer memory leak
gcoVGHARDWARE_FreeVideoMemory user space implementation has some problem, the asynchronous unlock/free is required by kernel memory managment, by not available in this function. because user command buffer & struct cannot be freed through committing new vg command to hardware, the new workaround is to double unlock the video memory for gcvHAL_RELEASE_VIDEO_MEMORY, also removed the database as the asynchronous unlock is not available in vg user space driver. Date: Jun 15, 2015 Signed-off-by: Xianzhong <b07117@freescale.com> (cherry picked from commit af30773d184e4b370ae577fd624f3ea8aec97a50)
-rw-r--r--drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_vg.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_vg.c b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_vg.c
index 60d8a13b8504..d66205b91e9c 100644
--- a/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_vg.c
+++ b/drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_vg.c
@@ -529,6 +529,18 @@ gceSTATUS gckVGKERNEL_Dispatch(
Kernel, processID,
(gctUINT32)kernelInterface->u.ReleaseVideoMemory.node
));
+ {
+ gckVIDMEM_NODE nodeObject;
+
+ /* Remove record from process db. */
+ gcmkERR_BREAK(
+ gckKERNEL_RemoveProcessDB(Kernel, processID, gcvDB_VIDEO_MEMORY_LOCKED, (gctPOINTER)kernelInterface->u.ReleaseVideoMemory.node));
+
+ gcmkERR_BREAK(
+ gckVIDMEM_HANDLE_Lookup(Kernel, processID, (gctUINT32)kernelInterface->u.ReleaseVideoMemory.node, &nodeObject));
+
+ gckVIDMEM_NODE_Dereference(Kernel, nodeObject);
+ }
break;