summaryrefslogtreecommitdiff
path: root/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
diff options
context:
space:
mode:
authorXianzhong <b07117@freescale.com>2014-08-01 18:44:20 +0800
committerNitin Garg <nitin.garg@freescale.com>2015-09-17 09:20:04 -0500
commit7e1e0b7438e23d740b08a4f5bbdb1fdfc288ac5e (patch)
tree95652ba23a9367618f34a5aa5901f538d0884807 /drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
parent80b5b8ede4101051efa61c1fd636edc472014461 (diff)
ENGR00325794 [#1087] fix video memory mutex sharing issue
the root cause is video memory mutex is not global variable, it will cause video memory managment problem with mixed 2D/3D/VG. kernel panic with multiple instances stress test running glesx_viv.sh. Date: Jul 31, 2014 Signed-off-by: Xianzhong <b07117@freescale.com> Acked-by: Jason Liu (cherry picked from commit 6bdcb506755778501374bdb3f598af71c95a7676)
Diffstat (limited to 'drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c')
-rw-r--r--drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
index 470325c98098..9d6f4fe582ed 100644
--- a/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
+++ b/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
@@ -917,6 +917,9 @@ gckOS_Construct(
gckOS_ImportAllocators(os);
+ /* Construct a video memory mutex. */
+ gcmkONERROR(gckOS_CreateMutex(os, &os->vidmemMutex));
+
/* Return pointer to the gckOS object. */
*Os = os;
@@ -1029,6 +1032,9 @@ gckOS_Destroy(
/* Destroy debug lock mutex. */
gcmkVERIFY_OK(gckOS_DeleteMutex(Os, Os->debugLock));
+ /* Destroy video memory mutex. */
+ gcmkVERIFY_OK(gckOS_DeleteMutex(Os, Os->vidmemMutex));
+
/* Wait for all works done. */
flush_workqueue(Os->workqueue);
@@ -9035,3 +9041,16 @@ gckOS_GPUPhysicalToCPUPhysical(
return gcvSTATUS_OK;
}
+gceSTATUS
+gckOS_GetVideoMemoryMutex(
+ IN gckOS Os,
+ OUT gctPOINTER *Mutex
+ )
+{
+ gcmkHEADER_ARG("Mutex=x%X", Mutex);
+
+ *Mutex = Os->vidmemMutex;
+
+ gcmkFOOTER_NO();
+ return gcvSTATUS_OK;
+}