aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3902-drm-amdkfd-Add-an-error-print-if-SDMA-RLC-is-not-idl.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3902-drm-amdkfd-Add-an-error-print-if-SDMA-RLC-is-not-idl.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3902-drm-amdkfd-Add-an-error-print-if-SDMA-RLC-is-not-idl.patch162
1 files changed, 162 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3902-drm-amdkfd-Add-an-error-print-if-SDMA-RLC-is-not-idl.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3902-drm-amdkfd-Add-an-error-print-if-SDMA-RLC-is-not-idl.patch
new file mode 100644
index 00000000..8d8d2853
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3902-drm-amdkfd-Add-an-error-print-if-SDMA-RLC-is-not-idl.patch
@@ -0,0 +1,162 @@
+From 36b74818cd50f8e1dc5601cbc8fd7a4eada372ba Mon Sep 17 00:00:00 2001
+From: Yong Zhao <Yong.Zhao@amd.com>
+Date: Thu, 19 Sep 2019 12:42:34 -0400
+Subject: [PATCH 3902/4256] drm/amdkfd: Add an error print if SDMA RLC is not
+ idle
+
+The message will be useful when troubleshooting the issues.
+
+Change-Id: Id82bbe80810dccff67c5b1275e9779f6a945dc7a
+Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c | 8 ++++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c | 8 ++++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c | 8 ++++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c | 8 ++++++--
+ drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c | 8 ++++++--
+ 5 files changed, 30 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
+index 7ef62f62abf9..ada4662a0842 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
+@@ -153,8 +153,10 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
+ data = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (data & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+ data = RREG32(sdmax_gfx_context_cntl);
+@@ -272,8 +274,10 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
+ temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
+index 3aff2b5758e0..3b164c071f37 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
+@@ -511,8 +511,10 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
+ data = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (data & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+ data = RREG32(sdmax_gfx_context_cntl);
+@@ -763,8 +765,10 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
+ temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+index c73aac88d0ab..7eedb5c9fd1d 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
+@@ -429,8 +429,10 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
+ data = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (data & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+ if (m->sdma_engine_id) {
+@@ -662,8 +664,10 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
+ temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+index 930b45b863cd..fafb42175656 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
+@@ -421,8 +421,10 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
+ data = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (data & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+ if (m->sdma_engine_id) {
+@@ -666,8 +668,10 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
+ temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+index 63c71a010865..e8d6d2dc19e7 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c
+@@ -427,8 +427,10 @@ static int kgd_hqd_sdma_load(struct kgd_dev *kgd, void *mqd,
+ data = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (data & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+ data = RREG32(sdmax_gfx_context_cntl);
+@@ -618,8 +620,10 @@ static int kgd_hqd_sdma_destroy(struct kgd_dev *kgd, void *mqd,
+ temp = RREG32(sdma_base_addr + mmSDMA0_RLC0_CONTEXT_STATUS);
+ if (temp & SDMA0_RLC0_CONTEXT_STATUS__IDLE_MASK)
+ break;
+- if (time_after(jiffies, end_jiffies))
++ if (time_after(jiffies, end_jiffies)) {
++ pr_err("SDMA RLC not idle in %s\n", __func__);
+ return -ETIME;
++ }
+ usleep_range(500, 1000);
+ }
+
+--
+2.17.1
+