[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