[PATCH 1/4] drm/amdgpu/sdma4: set wptr shadow atomically (v2)

Christian König deathsimple at vodafone.de
Sat Jul 29 11:32:26 UTC 2017


Am 28.07.2017 um 22:34 schrieb Alex Deucher:
> No functional change until wptr polling uses this
> location (future patch).
>
> v2: use WRITE_ONCE
>
> Cc: Frank Min <Frank.Min at amd.com>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>

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

> ---
>   drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 5 +++--
>   1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index bca5d8e..660704d 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -293,6 +293,8 @@ static void sdma_v4_0_ring_set_wptr(struct amdgpu_ring *ring)
>   
>   	DRM_DEBUG("Setting write pointer\n");
>   	if (ring->use_doorbell) {
> +		u64 *wb = (u64 *)&adev->wb.wb[ring->wptr_offs];
> +
>   		DRM_DEBUG("Using doorbell -- "
>   				"wptr_offs == 0x%08x "
>   				"lower_32_bits(ring->wptr) << 2 == 0x%08x "
> @@ -301,8 +303,7 @@ static void sdma_v4_0_ring_set_wptr(struct amdgpu_ring *ring)
>   				lower_32_bits(ring->wptr << 2),
>   				upper_32_bits(ring->wptr << 2));
>   		/* XXX check if swapping is necessary on BE */
> -		adev->wb.wb[ring->wptr_offs] = lower_32_bits(ring->wptr << 2);
> -		adev->wb.wb[ring->wptr_offs + 1] = upper_32_bits(ring->wptr << 2);
> +		WRITE_ONCE(*wb, (ring->wptr << 2));
>   		DRM_DEBUG("calling WDOORBELL64(0x%08x, 0x%016llx)\n",
>   				ring->doorbell_index, ring->wptr << 2);
>   




More information about the amd-gfx mailing list