diff options
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.patch | 162 |
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 + |