[PATCH] drm/amdgpu: correct wptr initialization for sdma

Christian König deathsimple at vodafone.de
Fri May 12 11:46:35 UTC 2017


Am 12.05.2017 um 11:18 schrieb Yintian Tao:
> If doorbell is used for wptr update, we also need to use it
> to initialize wptr to 0.
>
> Change-Id: Ieb31a6726a9ac8d45e51f0370ef5f77dc5ec7c06
> Signed-off-by: Yintian Tao <yttao at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 6 ++----
>   1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
> index cfd968e..7b6d3e9 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
> @@ -643,8 +643,9 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
>   		WREG32(mmSDMA0_GFX_RB_CNTL + sdma_offsets[i], rb_cntl);
>   
>   		/* Initialize the ring buffer's read and write pointers */
> +		ring->wptr = 0;
>   		WREG32(mmSDMA0_GFX_RB_RPTR + sdma_offsets[i], 0);
> -		WREG32(mmSDMA0_GFX_RB_WPTR + sdma_offsets[i], 0);
> +		sdma_v3_0_ring_set_wptr(ring);
>   		WREG32(mmSDMA0_GFX_IB_RPTR + sdma_offsets[i], 0);
>   		WREG32(mmSDMA0_GFX_IB_OFFSET + sdma_offsets[i], 0);
>   
> @@ -659,9 +660,6 @@ static int sdma_v3_0_gfx_resume(struct amdgpu_device *adev)
>   		WREG32(mmSDMA0_GFX_RB_BASE + sdma_offsets[i], ring->gpu_addr >> 8);
>   		WREG32(mmSDMA0_GFX_RB_BASE_HI + sdma_offsets[i], ring->gpu_addr >> 40);
>   
> -		ring->wptr = 0;
> -		WREG32(mmSDMA0_GFX_RB_WPTR + sdma_offsets[i], lower_32_bits(ring->wptr) << 2);
> -
>   		doorbell = RREG32(mmSDMA0_GFX_DOORBELL + sdma_offsets[i]);
>   
>   		if (ring->use_doorbell) {




More information about the amd-gfx mailing list