diff options
author | Xianzhong <xianzhong.li@nxp.com> | 2019-02-23 20:43:07 +0800 |
---|---|---|
committer | Xianzhong <xianzhong.li@nxp.com> | 2019-02-25 18:08:45 +0800 |
commit | 5ced43c64b88fb4c6106fa295dc7e55a1a5c7bef (patch) | |
tree | 9ab70b151dca658b670e11628000a25f7f702efc /drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c | |
parent | ad0f889656441120d85f012ae9e2a90d799315b3 (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.c | 13 |
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; } |