summaryrefslogtreecommitdiff
path: root/drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
diff options
context:
space:
mode:
authorXianzhong <xianzhong.li@nxp.com>2019-02-23 20:43:07 +0800
committerXianzhong <xianzhong.li@nxp.com>2019-02-25 18:08:45 +0800
commit5ced43c64b88fb4c6106fa295dc7e55a1a5c7bef (patch)
tree9ab70b151dca658b670e11628000a25f7f702efc /drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c
parentad0f889656441120d85f012ae9e2a90d799315b3 (diff)
MGS-4569 [#imx-1347] fix GPU hang when play 4K video
kernel process(with zero pid) has no mdl mapping, skip kernel process to avoid invalid mdl access. also remove memory barrier to avoid rcu issue. Signed-off-by: Xianzhong <xianzhong.li@nxp.com>
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.c13
1 files changed, 7 insertions, 6 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 36b1a2fd3409..0d06fc1022a9 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
@@ -4500,7 +4500,7 @@ _CacheOperation(
)
{
PLINUX_MDL mdl = (PLINUX_MDL)Handle;
- PLINUX_MDL_MAP mdlMap;
+ PLINUX_MDL_MAP mdlMap = gcvNULL;
gckALLOCATOR allocator;
if (!mdl || !mdl->allocator)
@@ -4513,11 +4513,14 @@ _CacheOperation(
if (allocator->ops->Cache)
{
- mutex_lock(&mdl->mapsMutex);
+ if (ProcessID)
+ {
+ mutex_lock(&mdl->mapsMutex);
- mdlMap = FindMdlMap(mdl, ProcessID);
+ mdlMap = FindMdlMap(mdl, ProcessID);
- mutex_unlock(&mdl->mapsMutex);
+ mutex_unlock(&mdl->mapsMutex);
+ }
if (ProcessID && mdlMap == gcvNULL)
{
@@ -4534,8 +4537,6 @@ _CacheOperation(
}
}
- _MemoryBarrier();
-
return gcvSTATUS_OK;
}