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:09:39 +0800 |
commit | f3a7d939d0b4de7363287fab24c97d2ff9e7ca60 (patch) | |
tree | 59a7fb4befe8698ca8847ab1f77a9e20d0ba4cf5 /drivers/mxc/gpu-viv/hal/os/linux/kernel/gc_hal_kernel_os.c | |
parent | 82fffb3e440c6e057d95196f77a407b8041fb7d9 (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>
(cherry picked from commit 5ced43c64b88fb4c6106fa295dc7e55a1a5c7bef)
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; } |