diff options
author | Xianzhong <b07117@freescale.com> | 2015-06-15 12:05:24 +0800 |
---|---|---|
committer | Xianzhong <b07117@freescale.com> | 2015-06-15 14:41:57 +0800 |
commit | 842b10d56183932ac194453a825b9adbe32f1262 (patch) | |
tree | 1380f28e483ab231991909b87ed4514cb8a1fd40 /drivers | |
parent | 31c5ed0a215cbc6f1261c92369e811243a4539ca (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)
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/mxc/gpu-viv/hal/kernel/gc_hal_kernel_vg.c | 12 |
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; |