diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 668939a..7a7a25b 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h @@ -2194,12 +2194,14 @@ static inline struct amdgpu_fence *to_amdgpu_fence(struct fence *f) */ static inline void amdgpu_ring_write(struct amdgpu_ring *ring, uint32_t v) { + wmb(); if (ring->count_dw <= 0) DRM_ERROR("amdgpu: writing more dwords to the ring than expected!\n"); ring->ring[ring->wptr++] = v; ring->wptr &= ring->ptr_mask; ring->count_dw--; ring->ring_free_dw--; + wmb(); } static inline struct amdgpu_sdma * amdgpu_get_sdma_instance(struct amdgpu_ring *ring) diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index f03b7eb..f15b92a 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h @@ -2698,10 +2698,12 @@ static inline void radeon_ring_write(struct radeon_ring *ring, uint32_t v) if (ring->count_dw <= 0) DRM_ERROR("radeon: writing more dwords to the ring than expected!\n"); + wmb(); ring->ring[ring->wptr++] = v; ring->wptr &= ring->ptr_mask; ring->count_dw--; ring->ring_free_dw--; + wmb(); } /*