]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/amdkfd: Add an error print if SDMA RLC is not idle
authorYong Zhao <Yong.Zhao@amd.com>
Thu, 19 Sep 2019 16:42:34 +0000 (12:42 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 3 Oct 2019 14:11:00 +0000 (09:11 -0500)
The message will be useful when troubleshooting the issues.

Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_arcturus.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v10.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v7.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v8.c
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gfx_v9.c

index c79aaebeeaf03fbd4f4aaa3500914bbdc4aa55af..20e0ccd079e9ba3b446309164fd19f533ec89b66 100644 (file)
@@ -152,8 +152,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);
@@ -271,8 +273,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);
        }
 
index d10f483f5e2735a88fd77d84874a786933620e25..1e1cacd660c17a7f2027a747b8ec3023b9e682d0 100644 (file)
@@ -510,8 +510,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);
@@ -762,8 +764,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);
        }
 
index 5f459bf5f6222b71030eff48282e31a8c7dce138..1d2f9d8457d1b23f556d7ce6fb244e51057296c5 100644 (file)
@@ -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);
        }
        if (m->sdma_engine_id) {
@@ -660,8 +662,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);
        }
 
index 6d2f6144960667c296f636fcb112517887b4e07c..d9be175931dcba1f85857562e5843f6854e0092a 100644 (file)
@@ -411,8 +411,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) {
@@ -656,8 +658,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);
        }
 
index e262f2ac07a3590e6360960e60248d932c71ad00..4f9e109dd85f97e5320862d0d46eaebff206411f 100644 (file)
@@ -409,8 +409,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);
@@ -600,8 +602,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);
        }