aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0283-drm-amdgpu-reset-wptr-at-cp-compute-resume-v2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0283-drm-amdgpu-reset-wptr-at-cp-compute-resume-v2.patch')
-rw-r--r--common/recipes-kernel/linux/files/0283-drm-amdgpu-reset-wptr-at-cp-compute-resume-v2.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0283-drm-amdgpu-reset-wptr-at-cp-compute-resume-v2.patch b/common/recipes-kernel/linux/files/0283-drm-amdgpu-reset-wptr-at-cp-compute-resume-v2.patch
new file mode 100644
index 00000000..2dfe5e9c
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0283-drm-amdgpu-reset-wptr-at-cp-compute-resume-v2.patch
@@ -0,0 +1,38 @@
+From 845253e78a7871ae87cdc5c135a914c58d6d4f64 Mon Sep 17 00:00:00 2001
+From: Sonny Jiang <sonny.jiang@amd.com>
+Date: Tue, 23 Jun 2015 11:59:55 -0400
+Subject: [PATCH 0283/1050] drm/amdgpu: reset wptr at cp compute resume (v2)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This patch is to resolve compute hang at resume time.
+
+v2: (agd5f) squash in second fix
+
+Signed-off-by: Sonny Jiang <sonny.jiang@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+index 7683d7f..7b683fb 100644
+--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+@@ -3144,6 +3144,12 @@ static int gfx_v8_0_cp_compute_resume(struct amdgpu_device *adev)
+ WREG32(mmCP_HQD_PQ_DOORBELL_CONTROL,
+ mqd->cp_hqd_pq_doorbell_control);
+
++ /* reset read and write pointers, similar to CP_RB0_WPTR/_RPTR */
++ ring->wptr = 0;
++ mqd->cp_hqd_pq_wptr = ring->wptr;
++ WREG32(mmCP_HQD_PQ_WPTR, mqd->cp_hqd_pq_wptr);
++ mqd->cp_hqd_pq_rptr = RREG32(mmCP_HQD_PQ_RPTR);
++
+ /* set the vmid for the queue */
+ mqd->cp_hqd_vmid = 0;
+ WREG32(mmCP_HQD_VMID, mqd->cp_hqd_vmid);
+--
+1.9.1
+