Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Christian König and committed by
Alex Deucher
6d44565d 22a77cf6

+17 -56
+5 -12
drivers/gpu/drm/amd/amdgpu/cik_sdma.c
··· 622 622 struct amdgpu_device *adev = ring->adev; 623 623 struct amdgpu_ib ib; 624 624 struct fence *f = NULL; 625 - unsigned i; 626 625 unsigned index; 627 626 int r; 628 627 u32 tmp = 0; ··· 643 644 goto err0; 644 645 } 645 646 646 - ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE, SDMA_WRITE_SUB_OPCODE_LINEAR, 0); 647 + ib.ptr[0] = SDMA_PACKET(SDMA_OPCODE_WRITE, 648 + SDMA_WRITE_SUB_OPCODE_LINEAR, 0); 647 649 ib.ptr[1] = lower_32_bits(gpu_addr); 648 650 ib.ptr[2] = upper_32_bits(gpu_addr); 649 651 ib.ptr[3] = 1; ··· 659 659 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 660 660 goto err1; 661 661 } 662 - for (i = 0; i < adev->usec_timeout; i++) { 663 - tmp = le32_to_cpu(adev->wb.wb[index]); 664 - if (tmp == 0xDEADBEEF) 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; 662 + tmp = le32_to_cpu(adev->wb.wb[index]); 663 + if (tmp == 0xDEADBEEF) { 664 + DRM_INFO("ib test on ring %d succeeded\n", ring->idx); 672 665 } else { 673 666 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp); 674 667 r = -EINVAL;
+3 -11
drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
··· 2112 2112 struct fence *f = NULL; 2113 2113 uint32_t scratch; 2114 2114 uint32_t tmp = 0; 2115 - unsigned i; 2116 2115 int r; 2117 2116 2118 2117 r = amdgpu_gfx_scratch_get(adev, &scratch); ··· 2140 2141 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 2141 2142 goto err2; 2142 2143 } 2143 - for (i = 0; i < adev->usec_timeout; i++) { 2144 - tmp = RREG32(scratch); 2145 - if (tmp == 0xDEADBEEF) 2146 - break; 2147 - DRM_UDELAY(1); 2148 - } 2149 - if (i < adev->usec_timeout) { 2150 - DRM_INFO("ib test on ring %d succeeded in %u usecs\n", 2151 - ring->idx, i); 2152 - goto err2; 2144 + tmp = RREG32(scratch); 2145 + if (tmp == 0xDEADBEEF) { 2146 + DRM_INFO("ib test on ring %d succeeded\n", ring->idx); 2153 2147 } else { 2154 2148 DRM_ERROR("amdgpu: ib test failed (scratch(0x%04X)=0x%08X)\n", 2155 2149 scratch, tmp);
+3 -11
drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
··· 784 784 struct fence *f = NULL; 785 785 uint32_t scratch; 786 786 uint32_t tmp = 0; 787 - unsigned i; 788 787 int r; 789 788 790 789 r = amdgpu_gfx_scratch_get(adev, &scratch); ··· 812 813 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 813 814 goto err2; 814 815 } 815 - for (i = 0; i < adev->usec_timeout; i++) { 816 - tmp = RREG32(scratch); 817 - if (tmp == 0xDEADBEEF) 818 - break; 819 - DRM_UDELAY(1); 820 - } 821 - if (i < adev->usec_timeout) { 822 - DRM_INFO("ib test on ring %d succeeded in %u usecs\n", 823 - ring->idx, i); 824 - goto err2; 816 + tmp = RREG32(scratch); 817 + if (tmp == 0xDEADBEEF) { 818 + DRM_INFO("ib test on ring %d succeeded\n", ring->idx); 825 819 } else { 826 820 DRM_ERROR("amdgpu: ib test failed (scratch(0x%04X)=0x%08X)\n", 827 821 scratch, tmp);
+3 -11
drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
··· 671 671 struct amdgpu_device *adev = ring->adev; 672 672 struct amdgpu_ib ib; 673 673 struct fence *f = NULL; 674 - unsigned i; 675 674 unsigned index; 676 675 int r; 677 676 u32 tmp = 0; ··· 712 713 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 713 714 goto err1; 714 715 } 715 - for (i = 0; i < adev->usec_timeout; i++) { 716 - tmp = le32_to_cpu(adev->wb.wb[index]); 717 - if (tmp == 0xDEADBEEF) 718 - break; 719 - DRM_UDELAY(1); 720 - } 721 - if (i < adev->usec_timeout) { 722 - DRM_INFO("ib test on ring %d succeeded in %u usecs\n", 723 - ring->idx, i); 724 - goto err1; 716 + tmp = le32_to_cpu(adev->wb.wb[index]); 717 + if (tmp == 0xDEADBEEF) { 718 + DRM_INFO("ib test on ring %d succeeded\n", ring->idx); 725 719 } else { 726 720 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp); 727 721 r = -EINVAL;
+3 -11
drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
··· 901 901 struct amdgpu_device *adev = ring->adev; 902 902 struct amdgpu_ib ib; 903 903 struct fence *f = NULL; 904 - unsigned i; 905 904 unsigned index; 906 905 int r; 907 906 u32 tmp = 0; ··· 942 943 DRM_ERROR("amdgpu: fence wait failed (%d).\n", r); 943 944 goto err1; 944 945 } 945 - for (i = 0; i < adev->usec_timeout; i++) { 946 - tmp = le32_to_cpu(adev->wb.wb[index]); 947 - if (tmp == 0xDEADBEEF) 948 - break; 949 - DRM_UDELAY(1); 950 - } 951 - if (i < adev->usec_timeout) { 952 - DRM_INFO("ib test on ring %d succeeded in %u usecs\n", 953 - ring->idx, i); 954 - goto err1; 946 + tmp = le32_to_cpu(adev->wb.wb[index]); 947 + if (tmp == 0xDEADBEEF) { 948 + DRM_INFO("ib test on ring %d succeeded\n", ring->idx); 955 949 } else { 956 950 DRM_ERROR("amdgpu: ib test failed (0x%08X)\n", tmp); 957 951 r = -EINVAL;