diff options
author | Christian König <christian.koenig@amd.com> | 2016-07-05 09:53:07 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2016-07-14 16:46:05 -0400 |
commit | 6d44565d5331ae283683d750477f15c2cb690589 (patch) | |
tree | b47c63f0084e897802ddd12ec5bc3e9b8c5b8560 | |
parent | 22a77cf6d87e0cfadf91bf7d09bae71359bc85f6 (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.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 14 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 14 |
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; |