aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1846-drm-amdgpu-insert-TMZ_BEGIN.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1846-drm-amdgpu-insert-TMZ_BEGIN.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1846-drm-amdgpu-insert-TMZ_BEGIN.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1846-drm-amdgpu-insert-TMZ_BEGIN.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1846-drm-amdgpu-insert-TMZ_BEGIN.patch
new file mode 100644
index 00000000..5a952bb8
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1846-drm-amdgpu-insert-TMZ_BEGIN.patch
@@ -0,0 +1,60 @@
+From 71704d4f117190104d1f23dedf8ca6ffcbf278e0 Mon Sep 17 00:00:00 2001
+From: Monk Liu <Monk.Liu@amd.com>
+Date: Fri, 9 Jun 2017 15:04:49 +0800
+Subject: [PATCH 1846/4131] drm/amdgpu:insert TMZ_BEGIN
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+FRAME_CONTROL(begin) is needed for vega10 due to ucode logic change,
+it can fix some CTS random fail under gfx preemption enabled mode.
+
+Change-Id: I0442337f6cde13ed2a33f033badcb522e0f35e2d
+Signed-off-by: Monk Liu <Monk.Liu@amd.com>
+Acked-by: Christian König <christian.koenig@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+index 2a3fad0..f90415a 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+@@ -3770,6 +3770,12 @@ static void gfx_v9_0_ring_emit_de_meta(struct amdgpu_ring *ring)
+ amdgpu_ring_write_multiple(ring, (void *)&de_payload, sizeof(de_payload) >> 2);
+ }
+
++static void gfx_v9_0_ring_emit_tmz(struct amdgpu_ring *ring, bool start)
++{
++ amdgpu_ring_write(ring, PACKET3(PACKET3_FRAME_CONTROL, 0));
++ amdgpu_ring_write(ring, FRAME_CMD(start ? 0 : 1)); /* frame_end */
++}
++
+ static void gfx_v9_ring_emit_cntxcntl(struct amdgpu_ring *ring, uint32_t flags)
+ {
+ uint32_t dw2 = 0;
+@@ -3777,6 +3783,8 @@ static void gfx_v9_ring_emit_cntxcntl(struct amdgpu_ring *ring, uint32_t flags)
+ if (amdgpu_sriov_vf(ring->adev))
+ gfx_v9_0_ring_emit_ce_meta(ring);
+
++ gfx_v9_0_ring_emit_tmz(ring, true);
++
+ dw2 |= 0x80000000; /* set load_enable otherwise this package is just NOPs */
+ if (flags & AMDGPU_HAVE_CTX_SWITCH) {
+ /* set load_global_config & load_global_uconfig */
+@@ -3827,12 +3835,6 @@ static void gfx_v9_0_ring_emit_patch_cond_exec(struct amdgpu_ring *ring, unsigne
+ ring->ring[offset] = (ring->ring_size>>2) - offset + cur;
+ }
+
+-static void gfx_v9_0_ring_emit_tmz(struct amdgpu_ring *ring, bool start)
+-{
+- amdgpu_ring_write(ring, PACKET3(PACKET3_FRAME_CONTROL, 0));
+- amdgpu_ring_write(ring, FRAME_CMD(start ? 0 : 1)); /* frame_end */
+-}
+-
+ static void gfx_v9_0_ring_emit_rreg(struct amdgpu_ring *ring, uint32_t reg)
+ {
+ struct amdgpu_device *adev = ring->adev;
+--
+2.7.4
+