diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch | 797 |
1 files changed, 797 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch new file mode 100644 index 00000000..0b558f94 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux-4.19/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch @@ -0,0 +1,797 @@ +From 217245b4059a7377384d78911732e1931565cae5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Mon, 29 Oct 2018 10:48:31 +0100 +Subject: [PATCH 0690/2940] drm/amdgpu: further ring test cleanups +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Move all error messages from IP specific code into the common helper. +This way we now uses the ring name in the messages instead of the index +and note which device is affected as well. + +Also cleanup error handling in the IP specific code and consequently use +ETIMEDOUT when the ring test timed out. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 8 ++++- + drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c | 14 ++------ + drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c | 46 ++++++------------------ + drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 24 +++++-------- + drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 25 ++++++------- + drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 24 +++++-------- + drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 27 ++++++-------- + drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 27 ++++++-------- + drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 23 ++++-------- + drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 23 ++++-------- + drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 23 ++++-------- + drivers/gpu/drm/amd/amdgpu/si_dma.c | 23 ++++-------- + drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 17 +++------ + drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | 16 +++------ + drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 13 ++----- + drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c | 30 ++++------------ + 16 files changed, 114 insertions(+), 249 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +index 3c89c8aa33d8..5b75bdc8dc28 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c +@@ -512,11 +512,17 @@ static void amdgpu_debugfs_ring_fini(struct amdgpu_ring *ring) + */ + int amdgpu_ring_test_helper(struct amdgpu_ring *ring) + { ++ struct amdgpu_device *adev = ring->adev; + int r; + + r = amdgpu_ring_test_ring(ring); ++ if (r) ++ DRM_DEV_ERROR(adev->dev, "ring %s test failed (%d)\n", ++ ring->name, r); ++ else ++ DRM_DEV_DEBUG(adev->dev, "ring test on %s succeeded\n", ++ ring->name); + + ring->sched.ready = !r; +- + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +index 5f3f54073818..7b999ee3defb 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vce.c +@@ -1079,11 +1079,9 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring) + return 0; + + r = amdgpu_ring_alloc(ring, 16); +- if (r) { +- DRM_ERROR("amdgpu: vce failed to lock ring %d (%d).\n", +- ring->idx, r); ++ if (r) + return r; +- } ++ + amdgpu_ring_write(ring, VCE_CMD_END); + amdgpu_ring_commit(ring); + +@@ -1093,14 +1091,8 @@ int amdgpu_vce_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed\n", +- ring->idx); ++ if (i >= timeout) + r = -ETIMEDOUT; +- } + + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +index 27da13df2f11..4b7f52e68457 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vcn.c +@@ -425,11 +425,9 @@ int amdgpu_vcn_dec_ring_test_ring(struct amdgpu_ring *ring) + + WREG32(SOC15_REG_OFFSET(UVD, 0, mmUVD_SCRATCH9), 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", +- ring->idx, r); ++ if (r) + return r; +- } ++ + amdgpu_ring_write(ring, + PACKET0(SOC15_REG_OFFSET(UVD, 0, mmUVD_SCRATCH9), 0)); + amdgpu_ring_write(ring, 0xDEADBEEF); +@@ -441,14 +439,9 @@ int amdgpu_vcn_dec_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ + return r; + } + +@@ -606,11 +599,9 @@ int amdgpu_vcn_enc_ring_test_ring(struct amdgpu_ring *ring) + int r; + + r = amdgpu_ring_alloc(ring, 16); +- if (r) { +- DRM_ERROR("amdgpu: vcn enc failed to lock ring %d (%d).\n", +- ring->idx, r); ++ if (r) + return r; +- } ++ + amdgpu_ring_write(ring, VCN_ENC_CMD_END); + amdgpu_ring_commit(ring); + +@@ -620,14 +611,8 @@ int amdgpu_vcn_enc_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed\n", +- ring->idx); ++ if (i >= adev->usec_timeout) + r = -ETIMEDOUT; +- } + + return r; + } +@@ -778,11 +763,8 @@ int amdgpu_vcn_jpeg_ring_test_ring(struct amdgpu_ring *ring) + WREG32(SOC15_REG_OFFSET(UVD, 0, mmUVD_SCRATCH9), 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); + +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", +- ring->idx, r); ++ if (r) + return r; +- } + + amdgpu_ring_write(ring, + PACKETJ(SOC15_REG_OFFSET(UVD, 0, mmUVD_SCRATCH9), 0, 0, 0)); +@@ -796,14 +778,8 @@ int amdgpu_vcn_jpeg_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; + + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +index 561406a1cf88..5eb15bf9ec7c 100644 +--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c ++++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +@@ -616,21 +616,17 @@ static int cik_sdma_ring_test_ring(struct amdgpu_ring *ring) + u64 gpu_addr; + + r = amdgpu_device_wb_get(adev, &index); +- if (r) { +- dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); ++ if (r) + return r; +- } + + gpu_addr = adev->wb.gpu_addr + (index * 4); + tmp = 0xCAFEDEAD; + adev->wb.wb[index] = cpu_to_le32(tmp); + + r = amdgpu_ring_alloc(ring, 5); +- if (r) { +- DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); +- amdgpu_device_wb_free(adev, index); +- return r; +- } ++ if (r) ++ goto error_free_wb; ++ + amdgpu_ring_write(ring, SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0)); + amdgpu_ring_write(ring, lower_32_bits(gpu_addr)); + amdgpu_ring_write(ring, upper_32_bits(gpu_addr)); +@@ -645,15 +641,11 @@ static int cik_sdma_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } +- amdgpu_device_wb_free(adev, index); ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; + ++error_free_wb: ++ amdgpu_device_wb_free(adev, index); + return r; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c +index c8f038136af0..0f36bb08fe1c 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c +@@ -1775,18 +1775,15 @@ static int gfx_v6_0_ring_test_ring(struct amdgpu_ring *ring) + int r; + + r = amdgpu_gfx_scratch_get(adev, &scratch); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to get scratch reg (%d).\n", r); ++ if (r) + return r; +- } ++ + WREG32(scratch, 0xCAFEDEAD); + + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", ring->idx, r); +- amdgpu_gfx_scratch_free(adev, scratch); +- return r; +- } ++ if (r) ++ goto error_free_scratch; ++ + amdgpu_ring_write(ring, PACKET3(PACKET3_SET_CONFIG_REG, 1)); + amdgpu_ring_write(ring, (scratch - PACKET3_SET_CONFIG_REG_START)); + amdgpu_ring_write(ring, 0xDEADBEEF); +@@ -1798,13 +1795,11 @@ static int gfx_v6_0_ring_test_ring(struct amdgpu_ring *ring) + break; + DRM_UDELAY(1); + } +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (scratch(0x%04X)=0x%08X)\n", +- ring->idx, scratch, tmp); +- r = -EINVAL; +- } ++ ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ ++error_free_scratch: + amdgpu_gfx_scratch_free(adev, scratch); + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +index 6de6bb18bdfa..742ec4425ca1 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +@@ -2064,17 +2064,14 @@ static int gfx_v7_0_ring_test_ring(struct amdgpu_ring *ring) + int r; + + r = amdgpu_gfx_scratch_get(adev, &scratch); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to get scratch reg (%d).\n", r); ++ if (r) + return r; +- } ++ + WREG32(scratch, 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", ring->idx, r); +- amdgpu_gfx_scratch_free(adev, scratch); +- return r; +- } ++ if (r) ++ goto error_free_scratch; ++ + amdgpu_ring_write(ring, PACKET3(PACKET3_SET_UCONFIG_REG, 1)); + amdgpu_ring_write(ring, (scratch - PACKET3_SET_UCONFIG_REG_START)); + amdgpu_ring_write(ring, 0xDEADBEEF); +@@ -2086,13 +2083,10 @@ static int gfx_v7_0_ring_test_ring(struct amdgpu_ring *ring) + break; + DRM_UDELAY(1); + } +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (scratch(0x%04X)=0x%08X)\n", +- ring->idx, scratch, tmp); +- r = -EINVAL; +- } ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ ++error_free_scratch: + amdgpu_gfx_scratch_free(adev, scratch); + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +index 1b2a05077f4d..9e4aaecd3f23 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c +@@ -839,18 +839,14 @@ static int gfx_v8_0_ring_test_ring(struct amdgpu_ring *ring) + int r; + + r = amdgpu_gfx_scratch_get(adev, &scratch); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to get scratch reg (%d).\n", r); ++ if (r) + return r; +- } ++ + WREG32(scratch, 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", +- ring->idx, r); +- amdgpu_gfx_scratch_free(adev, scratch); +- return r; +- } ++ if (r) ++ goto error_free_scratch; ++ + amdgpu_ring_write(ring, PACKET3(PACKET3_SET_UCONFIG_REG, 1)); + amdgpu_ring_write(ring, (scratch - PACKET3_SET_UCONFIG_REG_START)); + amdgpu_ring_write(ring, 0xDEADBEEF); +@@ -862,14 +858,11 @@ static int gfx_v8_0_ring_test_ring(struct amdgpu_ring *ring) + break; + DRM_UDELAY(1); + } +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (scratch(0x%04X)=0x%08X)\n", +- ring->idx, scratch, tmp); +- r = -EINVAL; +- } ++ ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ ++error_free_scratch: + amdgpu_gfx_scratch_free(adev, scratch); + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +index dbae16072ff6..e0f159062490 100644 +--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c +@@ -397,18 +397,14 @@ static int gfx_v9_0_ring_test_ring(struct amdgpu_ring *ring) + int r; + + r = amdgpu_gfx_scratch_get(adev, &scratch); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to get scratch reg (%d).\n", r); ++ if (r) + return r; +- } ++ + WREG32(scratch, 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", +- ring->idx, r); +- amdgpu_gfx_scratch_free(adev, scratch); +- return r; +- } ++ if (r) ++ goto error_free_scratch; ++ + amdgpu_ring_write(ring, PACKET3(PACKET3_SET_UCONFIG_REG, 1)); + amdgpu_ring_write(ring, (scratch - PACKET3_SET_UCONFIG_REG_START)); + amdgpu_ring_write(ring, 0xDEADBEEF); +@@ -420,14 +416,11 @@ static int gfx_v9_0_ring_test_ring(struct amdgpu_ring *ring) + break; + DRM_UDELAY(1); + } +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (scratch(0x%04X)=0x%08X)\n", +- ring->idx, scratch, tmp); +- r = -EINVAL; +- } ++ ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ ++error_free_scratch: + amdgpu_gfx_scratch_free(adev, scratch); + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +index fa2f6bea1d60..4fded77e4ae0 100644 +--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c ++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +@@ -548,21 +548,16 @@ static int sdma_v2_4_ring_test_ring(struct amdgpu_ring *ring) + u64 gpu_addr; + + r = amdgpu_device_wb_get(adev, &index); +- if (r) { +- dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); ++ if (r) + return r; +- } + + gpu_addr = adev->wb.gpu_addr + (index * 4); + tmp = 0xCAFEDEAD; + adev->wb.wb[index] = cpu_to_le32(tmp); + + r = amdgpu_ring_alloc(ring, 5); +- if (r) { +- DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); +- amdgpu_device_wb_free(adev, index); +- return r; +- } ++ if (r) ++ goto error_free_wb; + + amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_WRITE) | + SDMA_PKT_HEADER_SUB_OP(SDMA_SUBOP_WRITE_LINEAR)); +@@ -579,15 +574,11 @@ static int sdma_v2_4_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } +- amdgpu_device_wb_free(adev, index); ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; + ++error_free_wb: ++ amdgpu_device_wb_free(adev, index); + return r; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +index 942fe3696ef0..5d59b7196da9 100644 +--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c +@@ -820,21 +820,16 @@ static int sdma_v3_0_ring_test_ring(struct amdgpu_ring *ring) + u64 gpu_addr; + + r = amdgpu_device_wb_get(adev, &index); +- if (r) { +- dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); ++ if (r) + return r; +- } + + gpu_addr = adev->wb.gpu_addr + (index * 4); + tmp = 0xCAFEDEAD; + adev->wb.wb[index] = cpu_to_le32(tmp); + + r = amdgpu_ring_alloc(ring, 5); +- if (r) { +- DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); +- amdgpu_device_wb_free(adev, index); +- return r; +- } ++ if (r) ++ goto error_free_wb; + + amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_WRITE) | + SDMA_PKT_HEADER_SUB_OP(SDMA_SUBOP_WRITE_LINEAR)); +@@ -851,15 +846,11 @@ static int sdma_v3_0_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } +- amdgpu_device_wb_free(adev, index); ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; + ++error_free_wb: ++ amdgpu_device_wb_free(adev, index); + return r; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +index 65312897b8ba..01df6cf910b8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c +@@ -1182,21 +1182,16 @@ static int sdma_v4_0_ring_test_ring(struct amdgpu_ring *ring) + u64 gpu_addr; + + r = amdgpu_device_wb_get(adev, &index); +- if (r) { +- dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); ++ if (r) + return r; +- } + + gpu_addr = adev->wb.gpu_addr + (index * 4); + tmp = 0xCAFEDEAD; + adev->wb.wb[index] = cpu_to_le32(tmp); + + r = amdgpu_ring_alloc(ring, 5); +- if (r) { +- DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); +- amdgpu_device_wb_free(adev, index); +- return r; +- } ++ if (r) ++ goto error_free_wb; + + amdgpu_ring_write(ring, SDMA_PKT_HEADER_OP(SDMA_OP_WRITE) | + SDMA_PKT_HEADER_SUB_OP(SDMA_SUBOP_WRITE_LINEAR)); +@@ -1213,15 +1208,11 @@ static int sdma_v4_0_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } +- amdgpu_device_wb_free(adev, index); ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; + ++error_free_wb: ++ amdgpu_device_wb_free(adev, index); + return r; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c b/drivers/gpu/drm/amd/amdgpu/si_dma.c +index 05ce1ca4c789..f051e3d1e988 100644 +--- a/drivers/gpu/drm/amd/amdgpu/si_dma.c ++++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c +@@ -207,21 +207,16 @@ static int si_dma_ring_test_ring(struct amdgpu_ring *ring) + u64 gpu_addr; + + r = amdgpu_device_wb_get(adev, &index); +- if (r) { +- dev_err(adev->dev, "(%d) failed to allocate wb slot\n", r); ++ if (r) + return r; +- } + + gpu_addr = adev->wb.gpu_addr + (index * 4); + tmp = 0xCAFEDEAD; + adev->wb.wb[index] = cpu_to_le32(tmp); + + r = amdgpu_ring_alloc(ring, 4); +- if (r) { +- DRM_ERROR("amdgpu: dma failed to lock ring %d (%d).\n", ring->idx, r); +- amdgpu_device_wb_free(adev, index); +- return r; +- } ++ if (r) ++ goto error_free_wb; + + amdgpu_ring_write(ring, DMA_PACKET(DMA_PACKET_WRITE, 0, 0, 0, 1)); + amdgpu_ring_write(ring, lower_32_bits(gpu_addr)); +@@ -236,15 +231,11 @@ static int si_dma_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } +- amdgpu_device_wb_free(adev, index); ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; + ++error_free_wb: ++ amdgpu_device_wb_free(adev, index); + return r; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c +index 8cabe982a61d..51681eb0dd58 100644 +--- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c ++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c +@@ -481,11 +481,9 @@ static int uvd_v4_2_ring_test_ring(struct amdgpu_ring *ring) + + WREG32(mmUVD_CONTEXT_ID, 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", +- ring->idx, r); ++ if (r) + return r; +- } ++ + amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0)); + amdgpu_ring_write(ring, 0xDEADBEEF); + amdgpu_ring_commit(ring); +@@ -496,14 +494,9 @@ static int uvd_v4_2_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ + return r; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c +index 56b02ee543f9..907afcf8d867 100644 +--- a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c +@@ -497,11 +497,8 @@ static int uvd_v5_0_ring_test_ring(struct amdgpu_ring *ring) + + WREG32(mmUVD_CONTEXT_ID, 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: cp failed to lock ring %d (%d).\n", +- ring->idx, r); ++ if (r) + return r; +- } + amdgpu_ring_write(ring, PACKET0(mmUVD_CONTEXT_ID, 0)); + amdgpu_ring_write(ring, 0xDEADBEEF); + amdgpu_ring_commit(ring); +@@ -512,14 +509,9 @@ static int uvd_v5_0_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed (0x%08X)\n", +- ring->idx, tmp); +- r = -EINVAL; +- } ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ + return r; + } + +diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +index 3027607a187c..c8edd535eae5 100644 +--- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c +@@ -175,11 +175,8 @@ static int uvd_v6_0_enc_ring_test_ring(struct amdgpu_ring *ring) + int r; + + r = amdgpu_ring_alloc(ring, 16); +- if (r) { +- DRM_ERROR("amdgpu: uvd enc failed to lock ring %d (%d).\n", +- ring->idx, r); ++ if (r) + return r; +- } + amdgpu_ring_write(ring, HEVC_ENC_CMD_END); + amdgpu_ring_commit(ring); + +@@ -189,14 +186,8 @@ static int uvd_v6_0_enc_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("ring test on %d succeeded in %d usecs\n", +- ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: ring %d test failed\n", +- ring->idx); ++ if (i >= adev->usec_timeout) + r = -ETIMEDOUT; +- } + + return r; + } +diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c +index 76a7fbef532a..87fd003ff037 100644 +--- a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c ++++ b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c +@@ -183,11 +183,8 @@ static int uvd_v7_0_enc_ring_test_ring(struct amdgpu_ring *ring) + return 0; + + r = amdgpu_ring_alloc(ring, 16); +- if (r) { +- DRM_ERROR("amdgpu: uvd enc failed to lock (%d)ring %d (%d).\n", +- ring->me, ring->idx, r); ++ if (r) + return r; +- } + amdgpu_ring_write(ring, HEVC_ENC_CMD_END); + amdgpu_ring_commit(ring); + +@@ -197,14 +194,8 @@ static int uvd_v7_0_enc_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("(%d)ring test on %d succeeded in %d usecs\n", +- ring->me, ring->idx, i); +- } else { +- DRM_ERROR("amdgpu: (%d)ring %d test failed\n", +- ring->me, ring->idx); ++ if (i >= adev->usec_timeout) + r = -ETIMEDOUT; +- } + + return r; + } +@@ -1229,11 +1220,9 @@ static int uvd_v7_0_ring_test_ring(struct amdgpu_ring *ring) + + WREG32_SOC15(UVD, ring->me, mmUVD_CONTEXT_ID, 0xCAFEDEAD); + r = amdgpu_ring_alloc(ring, 3); +- if (r) { +- DRM_ERROR("amdgpu: (%d)cp failed to lock ring %d (%d).\n", +- ring->me, ring->idx, r); ++ if (r) + return r; +- } ++ + amdgpu_ring_write(ring, + PACKET0(SOC15_REG_OFFSET(UVD, ring->me, mmUVD_CONTEXT_ID), 0)); + amdgpu_ring_write(ring, 0xDEADBEEF); +@@ -1245,14 +1234,9 @@ static int uvd_v7_0_ring_test_ring(struct amdgpu_ring *ring) + DRM_UDELAY(1); + } + +- if (i < adev->usec_timeout) { +- DRM_DEBUG("(%d)ring test on %d succeeded in %d usecs\n", +- ring->me, ring->idx, i); +- } else { +- DRM_ERROR("(%d)amdgpu: ring %d test failed (0x%08X)\n", +- ring->me, ring->idx, tmp); +- r = -EINVAL; +- } ++ if (i >= adev->usec_timeout) ++ r = -ETIMEDOUT; ++ + return r; + } + +-- +2.17.1 + |