aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch797
1 files changed, 797 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/0690-drm-amdgpu-further-ring-test-cleanups.patch
new file mode 100644
index 00000000..0b558f94
--- /dev/null
+++ b/common/recipes-kernel/linux/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
+