aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3089-drm-amdgpu-adjust-HDP-write-queue-flushing-for-tlb-i.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3089-drm-amdgpu-adjust-HDP-write-queue-flushing-for-tlb-i.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3089-drm-amdgpu-adjust-HDP-write-queue-flushing-for-tlb-i.patch121
1 files changed, 121 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3089-drm-amdgpu-adjust-HDP-write-queue-flushing-for-tlb-i.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3089-drm-amdgpu-adjust-HDP-write-queue-flushing-for-tlb-i.patch
new file mode 100644
index 00000000..0ecfe60f
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3089-drm-amdgpu-adjust-HDP-write-queue-flushing-for-tlb-i.patch
@@ -0,0 +1,121 @@
+From 56a8c30247482a2c787a6a8b0f1b5dc933092778 Mon Sep 17 00:00:00 2001
+From: Alex Deucher <alexander.deucher@amd.com>
+Date: Fri, 5 Jan 2018 10:25:57 -0500
+Subject: [PATCH 3089/4131] drm/amdgpu: adjust HDP write queue flushing for tlb
+ invalidation
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Separate tlb invalidation and hdp flushing and move the HDP
+flush to the caller.
+
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 2 ++
+ drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 ++
+ drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 2 --
+ drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 3 ---
+ drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 3 ---
+ drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c | 3 ---
+ 6 files changed, 4 insertions(+), 11 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
+index 0a4f34a..d0617f1 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
+@@ -247,6 +247,7 @@ int amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset,
+ }
+ }
+ mb();
++ amdgpu_asic_flush_hdp(adev);
+ amdgpu_gart_flush_gpu_tlb(adev, 0);
+ return 0;
+ }
+@@ -329,6 +330,7 @@ int amdgpu_gart_bind(struct amdgpu_device *adev, uint64_t offset,
+ return r;
+
+ mb();
++ amdgpu_asic_flush_hdp(adev);
+ amdgpu_gart_flush_gpu_tlb(adev, 0);
+ return 0;
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+index 1b94caa..ea5f4e8 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+@@ -861,6 +861,7 @@ int amdgpu_vm_update_directories(struct amdgpu_device *adev,
+ if (vm->use_cpu_for_update) {
+ /* Flush HDP */
+ mb();
++ amdgpu_asic_flush_hdp(adev);
+ amdgpu_gart_flush_gpu_tlb(adev, 0);
+ } else if (params.ib->length_dw == 0) {
+ amdgpu_job_free(job);
+@@ -1484,6 +1485,7 @@ int amdgpu_vm_bo_update(struct amdgpu_device *adev,
+ if (vm->use_cpu_for_update) {
+ /* Flush HDP */
+ mb();
++ amdgpu_asic_flush_hdp(adev);
+ amdgpu_gart_flush_gpu_tlb(adev, 0);
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+index 86ba1e7..ee2e2a8 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c
+@@ -361,8 +361,6 @@ static int gmc_v6_0_mc_init(struct amdgpu_device *adev)
+ static void gmc_v6_0_gart_flush_gpu_tlb(struct amdgpu_device *adev,
+ uint32_t vmid)
+ {
+- WREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 0);
+-
+ WREG32(mmVM_INVALIDATE_REQUEST, 1 << vmid);
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+index bda5f72..1d5d1c5 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+@@ -434,9 +434,6 @@ static int gmc_v7_0_mc_init(struct amdgpu_device *adev)
+ static void gmc_v7_0_gart_flush_gpu_tlb(struct amdgpu_device *adev,
+ uint32_t vmid)
+ {
+- /* flush hdp cache */
+- WREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 0);
+-
+ /* bits 0-15 are the VM contexts0-15 */
+ WREG32(mmVM_INVALIDATE_REQUEST, 1 << vmid);
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+index ec7ce94..f663f88 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+@@ -613,9 +613,6 @@ static int gmc_v8_0_mc_init(struct amdgpu_device *adev)
+ static void gmc_v8_0_gart_flush_gpu_tlb(struct amdgpu_device *adev,
+ uint32_t vmid)
+ {
+- /* flush hdp cache */
+- WREG32(mmHDP_MEM_COHERENCY_FLUSH_CNTL, 0);
+-
+ /* bits 0-15 are the VM contexts0-15 */
+ WREG32(mmVM_INVALIDATE_REQUEST, 1 << vmid);
+ }
+diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+index 5c95680..a669a6e 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+@@ -329,9 +329,6 @@ static void gmc_v9_0_gart_flush_gpu_tlb(struct amdgpu_device *adev,
+ const unsigned eng = 17;
+ unsigned i, j;
+
+- /* flush hdp cache */
+- adev->nbio_funcs->hdp_flush(adev);
+-
+ spin_lock(&adev->mc.invalidate_lock);
+
+ for (i = 0; i < AMDGPU_MAX_VMHUBS; ++i) {
+--
+2.7.4
+