summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXianzhong <b07117@freescale.com>2015-06-10 16:20:50 +0800
committerXianzhong <b07117@freescale.com>2015-06-10 16:51:40 +0800
commitb44f2fbac292efe29f2bdff36bcfec537e6c2511 (patch)
tree411264eb31d57b67d30d9c2ca5d1753f5b1810e4
parentcf5ba87fb7a642f0b7f23198148f94419f5d5b61 (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.c16
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