diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/3229-drm-amdgpu-fallback-to-generic-HDP-operation.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/3229-drm-amdgpu-fallback-to-generic-HDP-operation.patch | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/3229-drm-amdgpu-fallback-to-generic-HDP-operation.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/3229-drm-amdgpu-fallback-to-generic-HDP-operation.patch new file mode 100644 index 00000000..94606938 --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/3229-drm-amdgpu-fallback-to-generic-HDP-operation.patch @@ -0,0 +1,64 @@ +From b5bfa9b637b36881e7bc0007ea6e93ce43abadc9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Fri, 19 Jan 2018 14:21:47 +0100 +Subject: [PATCH 3229/4131] drm/amdgpu: fallback to generic HDP operation +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When ring special operations aren't available we can fallback to the +generic ASIC operations. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Acked-by: Chunming Zhou <david1.zhou@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 22 ++++++++++++++-------- + 1 file changed, 14 insertions(+), 8 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +index e0b9200..1b2b7c1 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +@@ -192,12 +192,15 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs, + if (ring->funcs->init_cond_exec) + patch_offset = amdgpu_ring_init_cond_exec(ring); + +- if (ring->funcs->emit_hdp_flush + #ifdef CONFIG_X86_64 +- && !(adev->flags & AMD_IS_APU) ++ if (!(adev->flags & AMD_IS_APU)) + #endif +- ) +- amdgpu_ring_emit_hdp_flush(ring); ++ { ++ if (ring->funcs->emit_hdp_flush) ++ amdgpu_ring_emit_hdp_flush(ring); ++ else ++ amdgpu_asic_flush_hdp(adev, ring); ++ } + + skip_preamble = ring->current_ctx == fence_ctx; + need_ctx_switch = ring->current_ctx != fence_ctx; +@@ -227,12 +230,15 @@ int amdgpu_ib_schedule(struct amdgpu_ring *ring, unsigned num_ibs, + if (ring->funcs->emit_tmz) + amdgpu_ring_emit_tmz(ring, false); + +- if (ring->funcs->emit_hdp_invalidate + #ifdef CONFIG_X86_64 +- && !(adev->flags & AMD_IS_APU) ++ if (!(adev->flags & AMD_IS_APU)) + #endif +- ) +- amdgpu_ring_emit_hdp_invalidate(ring); ++ { ++ if (ring->funcs->emit_hdp_invalidate) ++ amdgpu_ring_emit_hdp_invalidate(ring); ++ else ++ amdgpu_asic_invalidate_hdp(adev, ring); ++ } + + r = amdgpu_fence_emit(ring, f); + if (r) { +-- +2.7.4 + |