aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-07-05 09:53:07 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-07-14 16:46:05 -0400
commit6d44565d5331ae283683d750477f15c2cb690589 (patch)
treeb47c63f0084e897802ddd12ec5bc3e9b8c5b8560
parent22a77cf6d87e0cfadf91bf7d09bae71359bc85f6 (diff)
drm/amdgpu: remove usec timeout loop from IB tests
We already waited for the fence, so waiting for the registers is completely pointless and just copy & pasted from the ring test. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/amdgpu/cik_sdma.c17
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c14
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c14
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c14
-rw-r--r--drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c14
5 files changed, 17 insertions, 56 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
index 5d8e7a1f53e3..6507a7ee75e4 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
@@ -622,7 +622,6 @@ static int cik_sdma_ring_test_ib(struct amdgpu_ring *ring)
622 struct amdgpu_device *adev = ring->adev; 622 struct amdgpu_device *adev = ring->adev;
623 struct amdgpu_ib ib; 623 struct amdgpu_ib ib;
624 struct fence *f = NULL; 624 struct fence *f = NULL;
625 unsigned i;
626 unsigned index; 625 unsigned index;
627 int r; 626 int r;
628 u32 tmp = 0; 627 u32 tmp = 0;
@@ -644,7 +643,8 @@ static int cik_sdma_ring_test_ib(struct amdgpu_ring *ring)
644 goto err0; 643 goto err0;
645 } 644 }
646 645
647 ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0); 646 ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE,
647 SDMA_WRITE_SUB_OPCODE_LINEAR, 0);
648 ib.ptr[1] = lower_32_bits(gpu_addr); 648 ib.ptr[1] = lower_32_bits(gpu_addr);
649 ib.ptr[2] = upper_32_bits(gpu_addr); 649 ib.ptr[2] = upper_32_bits(gpu_addr);
650 ib.ptr[3] = 1; 650 ib.ptr[3] = 1;
@@ -659,16 +659,9 @@ static int cik_sdma_ring_test_ib(struct amdgpu_ring *ring)
659 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 659 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r);
660 goto err1; 660 goto err1;
661 } 661 }
662 for (i = 0; i < adev->usec_timeout; i++) { 662 tmp = le32_to_cpu(adev->wb.wb[index]);
663 tmp = le32_to_cpu(adev->wb.wb[index]); 663 if (tmp == 0xDEADBEEF) {
664 if (tmp == 0xDEADBEEF) 664 DRM_INFO("ib test on ring %d succeeded\n", ring->idx);
665 break;
666 DRM_UDELAY(1);
667 }
668 if (i < adev->usec_timeout) {
669 DRM_INFO("ib test on ring %d succeeded in %u usecs\n",
670 ring->idx, i);
671 goto err1;
672 } else { 665 } else {
673 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp); 666 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp);
674 r = -EINVAL; 667 r = -EINVAL;
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index ff7a5794b819..1ac5ad01bf58 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -2112,7 +2112,6 @@ static int gfx_v7_0_ring_test_ib(struct amdgpu_ring *ring)
2112 struct fence *f = NULL; 2112 struct fence *f = NULL;
2113 uint32_t scratch; 2113 uint32_t scratch;
2114 uint32_t tmp = 0; 2114 uint32_t tmp = 0;
2115 unsigned i;
2116 int r; 2115 int r;
2117 2116
2118 r = amdgpu_gfx_scratch_get(adev, &scratch); 2117 r = amdgpu_gfx_scratch_get(adev, &scratch);
@@ -2141,16 +2140,9 @@ static int gfx_v7_0_ring_test_ib(struct amdgpu_ring *ring)
2141 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 2140 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r);
2142 goto err2; 2141 goto err2;
2143 } 2142 }
2144 for (i = 0; i < adev->usec_timeout; i++) { 2143 tmp = RREG32(scratch);
2145 tmp = RREG32(scratch); 2144 if (tmp == 0xDEADBEEF) {
2146 if (tmp == 0xDEADBEEF) 2145 DRM_INFO("ib test on ring %d succeeded\n", ring->idx);
2147 break;
2148 DRM_UDELAY(1);
2149 }
2150 if (i < adev->usec_timeout) {
2151 DRM_INFO("ib test on ring %d succeeded in %u usecs\n",
2152 ring->idx, i);
2153 goto err2;
2154 } else { 2146 } else {
2155 DRM_ERROR("amdgpu: ib test failed (scratch(0x%04X)=0x%08X)\n", 2147 DRM_ERROR("amdgpu: ib test failed (scratch(0x%04X)=0x%08X)\n",
2156 scratch, tmp); 2148 scratch, tmp);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index e3beb67186b9..3ed9150cbf15 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -784,7 +784,6 @@ static int gfx_v8_0_ring_test_ib(struct amdgpu_ring *ring)
784 struct fence *f = NULL; 784 struct fence *f = NULL;
785 uint32_t scratch; 785 uint32_t scratch;
786 uint32_t tmp = 0; 786 uint32_t tmp = 0;
787 unsigned i;
788 int r; 787 int r;
789 788
790 r = amdgpu_gfx_scratch_get(adev, &scratch); 789 r = amdgpu_gfx_scratch_get(adev, &scratch);
@@ -813,16 +812,9 @@ static int gfx_v8_0_ring_test_ib(struct amdgpu_ring *ring)
813 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 812 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r);
814 goto err2; 813 goto err2;
815 } 814 }
816 for (i = 0; i < adev->usec_timeout; i++) { 815 tmp = RREG32(scratch);
817 tmp = RREG32(scratch); 816 if (tmp == 0xDEADBEEF) {
818 if (tmp == 0xDEADBEEF) 817 DRM_INFO("ib test on ring %d succeeded\n", ring->idx);
819 break;
820 DRM_UDELAY(1);
821 }
822 if (i < adev->usec_timeout) {
823 DRM_INFO("ib test on ring %d succeeded in %u usecs\n",
824 ring->idx, i);
825 goto err2;
826 } else { 818 } else {
827 DRM_ERROR("amdgpu: ib test failed (scratch(0x%04X)=0x%08X)\n", 819 DRM_ERROR("amdgpu: ib test failed (scratch(0x%04X)=0x%08X)\n",
828 scratch, tmp); 820 scratch, tmp);
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
index f41e28d6c5fc..b2469ffb10ea 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
@@ -671,7 +671,6 @@ static int sdma_v2_4_ring_test_ib(struct amdgpu_ring *ring)
671 struct amdgpu_device *adev = ring->adev; 671 struct amdgpu_device *adev = ring->adev;
672 struct amdgpu_ib ib; 672 struct amdgpu_ib ib;
673 struct fence *f = NULL; 673 struct fence *f = NULL;
674 unsigned i;
675 unsigned index; 674 unsigned index;
676 int r; 675 int r;
677 u32 tmp = 0; 676 u32 tmp = 0;
@@ -713,16 +712,9 @@ static int sdma_v2_4_ring_test_ib(struct amdgpu_ring *ring)
713 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 712 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r);
714 goto err1; 713 goto err1;
715 } 714 }
716 for (i = 0; i < adev->usec_timeout; i++) { 715 tmp = le32_to_cpu(adev->wb.wb[index]);
717 tmp = le32_to_cpu(adev->wb.wb[index]); 716 if (tmp == 0xDEADBEEF) {
718 if (tmp == 0xDEADBEEF) 717 DRM_INFO("ib test on ring %d succeeded\n", ring->idx);
719 break;
720 DRM_UDELAY(1);
721 }
722 if (i < adev->usec_timeout) {
723 DRM_INFO("ib test on ring %d succeeded in %u usecs\n",
724 ring->idx, i);
725 goto err1;
726 } else { 718 } else {
727 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp); 719 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp);
728 r = -EINVAL; 720 r = -EINVAL;
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
index 93e63816b06c..2b8ce5808a14 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
@@ -901,7 +901,6 @@ static int sdma_v3_0_ring_test_ib(struct amdgpu_ring *ring)
901 struct amdgpu_device *adev = ring->adev; 901 struct amdgpu_device *adev = ring->adev;
902 struct amdgpu_ib ib; 902 struct amdgpu_ib ib;
903 struct fence *f = NULL; 903 struct fence *f = NULL;
904 unsigned i;
905 unsigned index; 904 unsigned index;
906 int r; 905 int r;
907 u32 tmp = 0; 906 u32 tmp = 0;
@@ -943,16 +942,9 @@ static int sdma_v3_0_ring_test_ib(struct amdgpu_ring *ring)
943 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 942 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r);
944 goto err1; 943 goto err1;
945 } 944 }
946 for (i = 0; i < adev->usec_timeout; i++) { 945 tmp = le32_to_cpu(adev->wb.wb[index]);
947 tmp = le32_to_cpu(adev->wb.wb[index]); 946 if (tmp == 0xDEADBEEF) {
948 if (tmp == 0xDEADBEEF) 947 DRM_INFO("ib test on ring %d succeeded\n", ring->idx);
949 break;
950 DRM_UDELAY(1);
951 }
952 if (i < adev->usec_timeout) {
953 DRM_INFO("ib test on ring %d succeeded in %u usecs\n",
954 ring->idx, i);
955 goto err1;
956 } else { 948 } else {
957 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp); 949 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp);
958 r = -EINVAL; 950 r = -EINVAL;