diff options
author | Xianzhong <b07117@freescale.com> | 2015-06-10 16:20:50 +0800 |
---|---|---|
committer | Xianzhong <b07117@freescale.com> | 2015-06-10 16:51:40 +0800 |
commit | b44f2fbac292efe29f2bdff36bcfec537e6c2511 (patch) | |
tree | 411264eb31d57b67d30d9c2ca5d1753f5b1810e4 | |
parent | cf5ba87fb7a642f0b7f23198148f94419f5d5b61 (diff) |
MGS-797 [#1772] fix gpu hang with the loadable galcore
GPU hang with repeat insmod/rmmod galcore when run all 3D applications,
The issue is identifed and related with the workaround of keeping PU always on to avoid PRE hang,
It is confirmed that GPU hardware reset is not available on i.mx6qp due to PRE Errata,
The SW wokaround is applied to remove soft reset during GPU hardware initialization.
Date: Jun 10, 2015
Signed-off-by: Xianzhong <b07117@freescale.com>
(cherry picked from commit a1072144162dfa281a78d9e2c2e657e464aa5ea9)
-rw-r--r-- | drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c b/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c index b71e07961a4f..e5038181ea51 100644 --- a/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c +++ b/drivers/mxc/gpu-viv/hal/kernel/arch/gc_hal_kernel_hardware.c @@ -1037,13 +1037,17 @@ gckHARDWARE_Construct( ? 0x0100 : 0x0000; - /* _ResetGPU need powerBaseAddress. */ - status = _ResetGPU(hardware, Os, Core); - - if (status != gcvSTATUS_OK) + /* VIV: Don't do sftware reset here for 0x2000, 0xfff5450 to workaround #12789. */ + if (!(_IsHardwareMatch(hardware, gcv3000, 0x5450))) { - gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, - "_ResetGPU failed: status=%d\n", status); + /* _ResetGPU need powerBaseAddress. */ + status = _ResetGPU(hardware, Os, Core); + + if (status != gcvSTATUS_OK) + { + gcmkTRACE_ZONE(gcvLEVEL_INFO, gcvZONE_HARDWARE, + "_ResetGPU failed: status=%d\n", status); + } } #if gcdMULTI_GPU |