Convert the ring writeback users that already operate on 32-bit slots to
the new typed helper accessors.

These call sites currently use open-coded pointer dereferences for
32-bit rptr and wptr writeback slots. Switch them to the helper wrappers
so the slot width is explicit and the remaining 64-bit users are
separated more clearly from the 32-bit ones.

This is a preparatory cleanup for the later ring writeback type cleanup
and the MES reset fix. No functional change is intended.

Signed-off-by: Runyu Xiao <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c |  6 +++---
 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c |  5 +++--
 drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h |  2 +-
 drivers/gpu/drm/amd/amdgpu/cik_sdma.c    |  2 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c    |  2 +-
 drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c    |  6 +++---
 drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c    | 10 +++++-----
 drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c   |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c   |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c   |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c   |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c |  5 ++---
 drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c |  4 ++--
 drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c |  4 ++--
 drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c   |  2 +-
 drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c   | 11 ++++-------
 drivers/gpu/drm/amd/amdgpu/si_dma.c      |  2 +-
 drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c    |  6 +++---
 drivers/gpu/drm/amd/amdgpu/vce_v4_0.c    |  6 +++---
 drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c    | 12 ++++++------
 drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c    | 12 ++++++------
 drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c    | 12 ++++++------
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c    |  4 ++--
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c  |  4 ++--
 drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c  |  4 ++--
 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c  |  4 ++--
 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c  |  4 ++--
 drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c  |  4 ++--
 31 files changed, 79 insertions(+), 82 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c
index 004edc28d..a9fa502d6 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c
@@ -500,7 +500,7 @@ void amdgpu_cper_ring_write(struct amdgpu_ring *ring, void 
*src, int count)
        mutex_lock(&ring->adev->cper.ring_lock);
 
        wptr_old = ring->wptr;
-       rptr = *ring->rptr_cpu_addr & ring->ptr_mask;
+       rptr = amdgpu_ring_wb_read32(ring->rptr_cpu_addr) & ring->ptr_mask;
 
        while (count) {
                ent_sz = amdgpu_cper_ring_get_ent_sz(ring, ring->wptr);
@@ -528,7 +528,7 @@ void amdgpu_cper_ring_write(struct amdgpu_ring *ring, void 
*src, int count)
 
                        rptr += (ent_sz >> 2);
                        rptr &= ring->ptr_mask;
-                       *ring->rptr_cpu_addr = rptr;
+                       amdgpu_ring_wb_write32(ring->rptr_cpu_addr, rptr);
 
                        pos = rptr;
                } while (!amdgpu_cper_is_hdr(ring, rptr));
@@ -541,7 +541,7 @@ void amdgpu_cper_ring_write(struct amdgpu_ring *ring, void 
*src, int count)
 
 static u64 amdgpu_cper_ring_get_rptr(struct amdgpu_ring *ring)
 {
-       return *(ring->rptr_cpu_addr);
+       return amdgpu_ring_wb_read32(ring->rptr_cpu_addr);
 }
 
 static u64 amdgpu_cper_ring_get_wptr(struct amdgpu_ring *ring)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
index 80fbbcbe2..b0c44d8a2 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
@@ -320,7 +320,7 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct 
amdgpu_ring *ring,
                amdgpu_ring_get_cpu_addr(ring, ring->cond_exe_offs);
 
        /* always set cond_exec_polling to CONTINUE */
-       *ring->cond_exe_cpu_addr = 1;
+       amdgpu_ring_wb_write32(ring->cond_exe_cpu_addr, 1);
 
        if (ring->funcs->type != AMDGPU_RING_TYPE_CPER) {
                r = amdgpu_fence_driver_start_ring(ring, irq_src, irq_type);
@@ -341,7 +341,8 @@ int amdgpu_ring_init(struct amdgpu_device *adev, struct 
amdgpu_ring *ring,
                ring->ring_size = roundup_pow_of_two(max_dw * 4);
                ring->count_dw = (ring->ring_size - 4) >> 2;
                /* ring buffer is empty now */
-               ring->wptr = *ring->rptr_cpu_addr = 0;
+               ring->wptr = 0;
+               amdgpu_ring_wb_write32(ring->rptr_cpu_addr, 0);
        }
 
        ring->buf_mask = (ring->ring_size / 4) - 1;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
index cdc855285..82c6bc782 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.h
@@ -503,7 +503,7 @@ bool amdgpu_ring_soft_recovery(struct amdgpu_ring *ring, 
unsigned int vmid,
 static inline void amdgpu_ring_set_preempt_cond_exec(struct amdgpu_ring *ring,
                                                        bool cond_exec)
 {
-       *ring->cond_exe_cpu_addr = cond_exec;
+       amdgpu_ring_wb_write32(ring->cond_exe_cpu_addr, cond_exec);
 }
 
 static inline void amdgpu_ring_clear_ring(struct amdgpu_ring *ring)
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c 
b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
index 120da838a..e68b1a03f 100644
--- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
+++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c
@@ -161,7 +161,7 @@ static uint64_t cik_sdma_ring_get_rptr(struct amdgpu_ring 
*ring)
 {
        u32 rptr;
 
-       rptr = *ring->rptr_cpu_addr;
+       rptr = amdgpu_ring_wb_read32(ring->rptr_cpu_addr);
 
        return (rptr & 0x3fffc) >> 2;
 }
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
index ac90d8e9d..40a99ca6b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c
@@ -2188,7 +2188,7 @@ static int gfx_v6_0_cp_gfx_resume(struct amdgpu_device 
*adev)
 
 static u64 gfx_v6_0_ring_get_rptr(struct amdgpu_ring *ring)
 {
-       return *ring->rptr_cpu_addr;
+       return amdgpu_ring_wb_read32(ring->rptr_cpu_addr);
 }
 
 static u64 gfx_v6_0_ring_get_wptr(struct amdgpu_ring *ring)
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index 65b8497ad..1a335691b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -2586,7 +2586,7 @@ static int gfx_v7_0_cp_gfx_resume(struct amdgpu_device 
*adev)
 
 static u64 gfx_v7_0_ring_get_rptr(struct amdgpu_ring *ring)
 {
-       return *ring->rptr_cpu_addr;
+       return amdgpu_ring_wb_read32(ring->rptr_cpu_addr);
 }
 
 static u64 gfx_v7_0_ring_get_wptr_gfx(struct amdgpu_ring *ring)
@@ -2607,7 +2607,7 @@ static void gfx_v7_0_ring_set_wptr_gfx(struct amdgpu_ring 
*ring)
 static u64 gfx_v7_0_ring_get_wptr_compute(struct amdgpu_ring *ring)
 {
        /* XXX check if swapping is necessary on BE */
-       return *ring->wptr_cpu_addr;
+       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
 }
 
 static void gfx_v7_0_ring_set_wptr_compute(struct amdgpu_ring *ring)
@@ -2615,7 +2615,7 @@ static void gfx_v7_0_ring_set_wptr_compute(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        /* XXX check if swapping is necessary on BE */
-       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, lower_32_bits(ring->wptr));
        WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index 130196859..64511ee05 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -6009,7 +6009,7 @@ static int gfx_v8_0_set_clockgating_state(struct 
amdgpu_ip_block *ip_block,
 
 static u64 gfx_v8_0_ring_get_rptr(struct amdgpu_ring *ring)
 {
-       return *ring->rptr_cpu_addr;
+       return amdgpu_ring_wb_read32(ring->rptr_cpu_addr);
 }
 
 static u64 gfx_v8_0_ring_get_wptr_gfx(struct amdgpu_ring *ring)
@@ -6018,7 +6018,7 @@ static u64 gfx_v8_0_ring_get_wptr_gfx(struct amdgpu_ring 
*ring)
 
        if (ring->use_doorbell)
                /* XXX check if swapping is necessary on BE */
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32(mmCP_RB0_WPTR);
 }
@@ -6029,7 +6029,7 @@ static void gfx_v8_0_ring_set_wptr_gfx(struct amdgpu_ring 
*ring)
 
        if (ring->use_doorbell) {
                /* XXX check if swapping is necessary on BE */
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32(mmCP_RB0_WPTR, lower_32_bits(ring->wptr));
@@ -6220,7 +6220,7 @@ static void gfx_v8_0_ring_emit_vm_flush(struct 
amdgpu_ring *ring,
 
 static u64 gfx_v8_0_ring_get_wptr_compute(struct amdgpu_ring *ring)
 {
-       return *ring->wptr_cpu_addr;
+       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
 }
 
 static void gfx_v8_0_ring_set_wptr_compute(struct amdgpu_ring *ring)
@@ -6228,7 +6228,7 @@ static void gfx_v8_0_ring_set_wptr_compute(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        /* XXX check if swapping is necessary on BE */
-       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, lower_32_bits(ring->wptr));
        WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
 }
 
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
index cffb1e6ba..8f1a2f3ff 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_0.c
@@ -430,7 +430,7 @@ static uint64_t jpeg_v2_0_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(JPEG, 0, mmUVD_JRBC_RB_WPTR);
 }
@@ -447,7 +447,7 @@ static void jpeg_v2_0_dec_ring_set_wptr(struct amdgpu_ring 
*ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(JPEG, 0, mmUVD_JRBC_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c
index 5208312e7..d34670dc9 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v2_5.c
@@ -458,7 +458,7 @@ static uint64_t jpeg_v2_5_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(JPEG, ring->me, mmUVD_JRBC_RB_WPTR);
 }
@@ -475,7 +475,7 @@ static void jpeg_v2_5_dec_ring_set_wptr(struct amdgpu_ring 
*ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(JPEG, ring->me, mmUVD_JRBC_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c
index d0445df39..77a32e2a4 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v3_0.c
@@ -449,7 +449,7 @@ static uint64_t jpeg_v3_0_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(JPEG, 0, mmUVD_JRBC_RB_WPTR);
 }
@@ -466,7 +466,7 @@ static void jpeg_v3_0_dec_ring_set_wptr(struct amdgpu_ring 
*ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(JPEG, 0, mmUVD_JRBC_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c
index 6fd4238a8..4142341bb 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0.c
@@ -609,7 +609,7 @@ static uint64_t jpeg_v4_0_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(JPEG, 0, regUVD_JRBC_RB_WPTR);
 }
@@ -626,7 +626,7 @@ static void jpeg_v4_0_dec_ring_set_wptr(struct amdgpu_ring 
*ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(JPEG, 0, regUVD_JRBC_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c
index 0c746580d..1f5a9ddd3 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_3.c
@@ -693,7 +693,7 @@ static uint64_t jpeg_v4_0_3_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return adev->wb.wb[ring->wptr_offs];
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
 
        return RREG32_SOC15_OFFSET(JPEG, GET_INST(JPEG, ring->me), 
regUVD_JRBC0_UVD_JRBC_RB_WPTR,
                                   jpeg_v4_0_3_core_reg_offset(ring->pipe));
@@ -718,7 +718,7 @@ static void jpeg_v4_0_3_dec_ring_set_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               adev->wb.wb[ring->wptr_offs] = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15_OFFSET(JPEG, GET_INST(JPEG, ring->me), 
regUVD_JRBC0_UVD_JRBC_RB_WPTR,
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c
index a43582b9c..ffcf70969 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v4_0_5.c
@@ -625,7 +625,7 @@ static uint64_t jpeg_v4_0_5_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(JPEG, ring->me, regUVD_JRBC_RB_WPTR);
 }
@@ -642,7 +642,7 @@ static void jpeg_v4_0_5_dec_ring_set_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(JPEG, ring->me, regUVD_JRBC_RB_WPTR, 
lower_32_bits(ring->wptr));
@@ -870,4 +870,3 @@ const struct amdgpu_ip_block_version jpeg_v4_0_5_ip_block = 
{
        .rev = 5,
        .funcs = &jpeg_v4_0_5_ip_funcs,
 };
-
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
index 72a4b2d06..3b7c1144b 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_0.c
@@ -535,7 +535,7 @@ static uint64_t jpeg_v5_0_0_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(JPEG, 0, regUVD_JRBC_RB_WPTR);
 }
@@ -552,7 +552,7 @@ static void jpeg_v5_0_0_dec_ring_set_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(JPEG, 0, regUVD_JRBC_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c
index 250316704..d0e9e792a 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c
@@ -626,7 +626,7 @@ static uint64_t jpeg_v5_0_1_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return adev->wb.wb[ring->wptr_offs];
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
 
        return RREG32_SOC15_OFFSET(JPEG, GET_INST(JPEG, ring->me), 
regUVD_JRBC_RB_WPTR,
                                   ring->pipe ? 
jpeg_v5_0_1_core_reg_offset(ring->pipe) : 0);
@@ -644,7 +644,7 @@ static void jpeg_v5_0_1_dec_ring_set_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               adev->wb.wb[ring->wptr_offs] = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15_OFFSET(JPEG, GET_INST(JPEG, ring->me),
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c
index 7a4ecea6b..6286fdb29 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_2.c
@@ -469,7 +469,7 @@ static uint64_t jpeg_v5_0_2_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return adev->wb.wb[ring->wptr_offs];
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
 
        return RREG32_SOC15_OFFSET(JPEG, GET_INST(JPEG, ring->me), 
regUVD_JRBC_RB_WPTR,
                                   ring->pipe ? 
jpeg_v5_0_2_core_reg_offset(ring->pipe) : 0);
@@ -487,7 +487,7 @@ static void jpeg_v5_0_2_dec_ring_set_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               adev->wb.wb[ring->wptr_offs] = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15_OFFSET(JPEG, GET_INST(JPEG, ring->me),
diff --git a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c 
b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c
index e7546816b..a1671e9b9 100644
--- a/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/jpeg_v5_3_0.c
@@ -518,7 +518,7 @@ static uint64_t jpeg_v5_3_0_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(JPEG, 0, regUVD_JRBC0_UVD_JRBC_RB_WPTR);
 }
@@ -535,7 +535,7 @@ static void jpeg_v5_3_0_dec_ring_set_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(JPEG, 0, regUVD_JRBC0_UVD_JRBC_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c 
b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
index 93ec52c1f..22cb3c262 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c
@@ -188,7 +188,7 @@ static int sdma_v2_4_init_microcode(struct amdgpu_device 
*adev)
 static uint64_t sdma_v2_4_ring_get_rptr(struct amdgpu_ring *ring)
 {
        /* XXX check if swapping is necessary on BE */
-       return *ring->rptr_cpu_addr >> 2;
+       return amdgpu_ring_wb_read32(ring->rptr_cpu_addr) >> 2;
 }
 
 /**
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c 
b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
index 3fde9be74..321fc87d7 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
@@ -346,7 +346,7 @@ static int sdma_v3_0_init_microcode(struct amdgpu_device 
*adev)
 static uint64_t sdma_v3_0_ring_get_rptr(struct amdgpu_ring *ring)
 {
        /* XXX check if swapping is necessary on BE */
-       return *ring->rptr_cpu_addr >> 2;
+       return amdgpu_ring_wb_read32(ring->rptr_cpu_addr) >> 2;
 }
 
 /**
@@ -363,7 +363,7 @@ static uint64_t sdma_v3_0_ring_get_wptr(struct amdgpu_ring 
*ring)
 
        if (ring->use_doorbell || ring->use_pollmem) {
                /* XXX check if swapping is necessary on BE */
-               wptr = *ring->wptr_cpu_addr >> 2;
+               wptr = amdgpu_ring_wb_read32(ring->wptr_cpu_addr) >> 2;
        } else {
                wptr = RREG32(mmSDMA0_GFX_RB_WPTR + sdma_offsets[ring->me]) >> 
2;
        }
@@ -383,14 +383,11 @@ static void sdma_v3_0_ring_set_wptr(struct amdgpu_ring 
*ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               u32 *wb = (u32 *)ring->wptr_cpu_addr;
                /* XXX check if swapping is necessary on BE */
-               WRITE_ONCE(*wb, ring->wptr << 2);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, ring->wptr << 2);
                WDOORBELL32(ring->doorbell_index, ring->wptr << 2);
        } else if (ring->use_pollmem) {
-               u32 *wb = (u32 *)ring->wptr_cpu_addr;
-
-               WRITE_ONCE(*wb, ring->wptr << 2);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, ring->wptr << 2);
        } else {
                WREG32(mmSDMA0_GFX_RB_WPTR + sdma_offsets[ring->me], ring->wptr 
<< 2);
        }
diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c 
b/drivers/gpu/drm/amd/amdgpu/si_dma.c
index 549708075..a4ac288df 100644
--- a/drivers/gpu/drm/amd/amdgpu/si_dma.c
+++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c
@@ -48,7 +48,7 @@ static void si_dma_set_irq_funcs(struct amdgpu_device *adev);
  */
 static uint64_t si_dma_ring_get_rptr(struct amdgpu_ring *ring)
 {
-       return *ring->rptr_cpu_addr;
+       return amdgpu_ring_wb_read32(ring->rptr_cpu_addr);
 }
 
 /**
diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c 
b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
index df2c83348..6979f6816 100644
--- a/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/uvd_v7_0.c
@@ -118,7 +118,7 @@ static uint64_t uvd_v7_0_enc_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
 
        if (ring == &adev->uvd.inst[ring->me].ring_enc[0])
                return RREG32_SOC15(UVD, ring->me, mmUVD_RB_WPTR);
@@ -153,7 +153,7 @@ static void uvd_v7_0_enc_ring_set_wptr(struct amdgpu_ring 
*ring)
 
        if (ring->use_doorbell) {
                /* XXX check if swapping is necessary on BE */
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
                return;
        }
@@ -760,7 +760,7 @@ static int uvd_v7_0_mmsch_start(struct amdgpu_device *adev,
                if (adev->uvd.harvest_config & (1 << i))
                        continue;
                WDOORBELL32(adev->uvd.inst[i].ring_enc[0].doorbell_index, 0);
-               *adev->uvd.inst[i].ring_enc[0].wptr_cpu_addr = 0;
+               
amdgpu_ring_wb_write32(adev->uvd.inst[i].ring_enc[0].wptr_cpu_addr, 0);
                adev->uvd.inst[i].ring_enc[0].wptr = 0;
                adev->uvd.inst[i].ring_enc[0].wptr_old = 0;
        }
diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c 
b/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
index ee445d8ab..afb128312 100644
--- a/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vce_v4_0.c
@@ -83,7 +83,7 @@ static uint64_t vce_v4_0_ring_get_wptr(struct amdgpu_ring 
*ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
 
        if (ring->me == 0)
                return RREG32(SOC15_REG_OFFSET(VCE, 0, mmVCE_RB_WPTR));
@@ -106,7 +106,7 @@ static void vce_v4_0_ring_set_wptr(struct amdgpu_ring *ring)
 
        if (ring->use_doorbell) {
                /* XXX check if swapping is necessary on BE */
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
                return;
        }
@@ -177,7 +177,7 @@ static int vce_v4_0_mmsch_start(struct amdgpu_device *adev,
        WREG32(SOC15_REG_OFFSET(VCE, 0, mmVCE_MMSCH_VF_MAILBOX_RESP), 0);
 
        WDOORBELL32(adev->vce.ring[0].doorbell_index, 0);
-       *adev->vce.ring[0].wptr_cpu_addr = 0;
+       amdgpu_ring_wb_write32(adev->vce.ring[0].wptr_cpu_addr, 0);
        adev->vce.ring[0].wptr = 0;
        adev->vce.ring[0].wptr_old = 0;
 
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
index 0442bfcfd..830c02af9 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v2_0.c
@@ -1441,7 +1441,7 @@ static uint64_t vcn_v2_0_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(UVD, 0, mmUVD_RBC_RB_WPTR);
 }
@@ -1462,7 +1462,7 @@ static void vcn_v2_0_dec_ring_set_wptr(struct amdgpu_ring 
*ring)
                        lower_32_bits(ring->wptr) | 0x80000000);
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(UVD, 0, mmUVD_RBC_RB_WPTR, 
lower_32_bits(ring->wptr));
@@ -1670,12 +1670,12 @@ static uint64_t vcn_v2_0_enc_ring_get_wptr(struct 
amdgpu_ring *ring)
 
        if (ring == &adev->vcn.inst->ring_enc[0]) {
                if (ring->use_doorbell)
-                       return *ring->wptr_cpu_addr;
+                       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
                else
                        return RREG32_SOC15(UVD, 0, mmUVD_RB_WPTR);
        } else {
                if (ring->use_doorbell)
-                       return *ring->wptr_cpu_addr;
+                       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
                else
                        return RREG32_SOC15(UVD, 0, mmUVD_RB_WPTR2);
        }
@@ -1694,14 +1694,14 @@ static void vcn_v2_0_enc_ring_set_wptr(struct 
amdgpu_ring *ring)
 
        if (ring == &adev->vcn.inst->ring_enc[0]) {
                if (ring->use_doorbell) {
-                       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+                       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                        WDOORBELL32(ring->doorbell_index, 
lower_32_bits(ring->wptr));
                } else {
                        WREG32_SOC15(UVD, 0, mmUVD_RB_WPTR, 
lower_32_bits(ring->wptr));
                }
        } else {
                if (ring->use_doorbell) {
-                       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+                       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                        WDOORBELL32(ring->doorbell_index, 
lower_32_bits(ring->wptr));
                } else {
                        WREG32_SOC15(UVD, 0, mmUVD_RB_WPTR2, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c
index 8b8184fe6..f55d488dc 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v2_5.c
@@ -1751,7 +1751,7 @@ static uint64_t vcn_v2_5_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, ring->me, mmUVD_RBC_RB_WPTR);
 }
@@ -1768,7 +1768,7 @@ static void vcn_v2_5_dec_ring_set_wptr(struct amdgpu_ring 
*ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, ring->me, mmUVD_RBC_RB_WPTR, 
lower_32_bits(ring->wptr));
@@ -1837,12 +1837,12 @@ static uint64_t vcn_v2_5_enc_ring_get_wptr(struct 
amdgpu_ring *ring)
 
        if (ring == &adev->vcn.inst[ring->me].ring_enc[0]) {
                if (ring->use_doorbell)
-                       return *ring->wptr_cpu_addr;
+                       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
                else
                        return RREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR);
        } else {
                if (ring->use_doorbell)
-                       return *ring->wptr_cpu_addr;
+                       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
                else
                        return RREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR2);
        }
@@ -1861,14 +1861,14 @@ static void vcn_v2_5_enc_ring_set_wptr(struct 
amdgpu_ring *ring)
 
        if (ring == &adev->vcn.inst[ring->me].ring_enc[0]) {
                if (ring->use_doorbell) {
-                       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+                       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                        WDOORBELL32(ring->doorbell_index, 
lower_32_bits(ring->wptr));
                } else {
                        WREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR, 
lower_32_bits(ring->wptr));
                }
        } else {
                if (ring->use_doorbell) {
-                       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+                       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                        WDOORBELL32(ring->doorbell_index, 
lower_32_bits(ring->wptr));
                } else {
                        WREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR2, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
index 81bba3ec2..1c589b455 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v3_0.c
@@ -1819,7 +1819,7 @@ static uint64_t vcn_v3_0_dec_ring_get_wptr(struct 
amdgpu_ring *ring)
        struct amdgpu_device *adev = ring->adev;
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, ring->me, mmUVD_RBC_RB_WPTR);
 }
@@ -1845,7 +1845,7 @@ static void vcn_v3_0_dec_ring_set_wptr(struct amdgpu_ring 
*ring)
        }
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, ring->me, mmUVD_RBC_RB_WPTR, 
lower_32_bits(ring->wptr));
@@ -2099,12 +2099,12 @@ static uint64_t vcn_v3_0_enc_ring_get_wptr(struct 
amdgpu_ring *ring)
 
        if (ring == &adev->vcn.inst[ring->me].ring_enc[0]) {
                if (ring->use_doorbell)
-                       return *ring->wptr_cpu_addr;
+                       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
                else
                        return RREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR);
        } else {
                if (ring->use_doorbell)
-                       return *ring->wptr_cpu_addr;
+                       return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
                else
                        return RREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR2);
        }
@@ -2123,14 +2123,14 @@ static void vcn_v3_0_enc_ring_set_wptr(struct 
amdgpu_ring *ring)
 
        if (ring == &adev->vcn.inst[ring->me].ring_enc[0]) {
                if (ring->use_doorbell) {
-                       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+                       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                        WDOORBELL32(ring->doorbell_index, 
lower_32_bits(ring->wptr));
                } else {
                        WREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR, 
lower_32_bits(ring->wptr));
                }
        } else {
                if (ring->use_doorbell) {
-                       *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+                       amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                        WDOORBELL32(ring->doorbell_index, 
lower_32_bits(ring->wptr));
                } else {
                        WREG32_SOC15(VCN, ring->me, mmUVD_RB_WPTR2, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
index ff7269baf..ec4b2372a 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0.c
@@ -1770,7 +1770,7 @@ static uint64_t vcn_v4_0_unified_ring_get_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, ring->me, regUVD_RB_WPTR);
 }
@@ -1790,7 +1790,7 @@ static void vcn_v4_0_unified_ring_set_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, ring->me, regUVD_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c
index 7f001c32e..ce33ba358 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_3.c
@@ -1580,7 +1580,7 @@ static uint64_t vcn_v4_0_3_unified_ring_get_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, GET_INST(VCN, ring->me),
                                    regUVD_RB_WPTR);
@@ -1646,7 +1646,7 @@ static void vcn_v4_0_3_unified_ring_set_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, GET_INST(VCN, ring->me), regUVD_RB_WPTR,
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c
index 1571cc5a1..41d4b5ac6 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c
@@ -1434,7 +1434,7 @@ static uint64_t vcn_v4_0_5_unified_ring_get_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, ring->me, regUVD_RB_WPTR);
 }
@@ -1454,7 +1454,7 @@ static void vcn_v4_0_5_unified_ring_set_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, ring->me, regUVD_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c
index d5f49fa33..f8c3cd250 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_0.c
@@ -1158,7 +1158,7 @@ static uint64_t vcn_v5_0_0_unified_ring_get_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, ring->me, regUVD_RB_WPTR);
 }
@@ -1178,7 +1178,7 @@ static void vcn_v5_0_0_unified_ring_set_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, ring->me, regUVD_RB_WPTR, 
lower_32_bits(ring->wptr));
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c
index d3db04943..33e63ca12 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c
@@ -1273,7 +1273,7 @@ static uint64_t vcn_v5_0_1_unified_ring_get_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, GET_INST(VCN, ring->me), 
regUVD_RB_WPTR);
 }
@@ -1293,7 +1293,7 @@ static void vcn_v5_0_1_unified_ring_set_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, GET_INST(VCN, ring->me), regUVD_RB_WPTR,
diff --git a/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c 
b/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c
index bbc172db9..6b943a27e 100644
--- a/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c
+++ b/drivers/gpu/drm/amd/amdgpu/vcn_v5_0_2.c
@@ -962,7 +962,7 @@ static uint64_t vcn_v5_0_2_unified_ring_get_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell)
-               return *ring->wptr_cpu_addr;
+               return amdgpu_ring_wb_read32(ring->wptr_cpu_addr);
        else
                return RREG32_SOC15(VCN, GET_INST(VCN, ring->me), 
regUVD_RB_WPTR);
 }
@@ -982,7 +982,7 @@ static void vcn_v5_0_2_unified_ring_set_wptr(struct 
amdgpu_ring *ring)
                DRM_ERROR("wrong ring id is identified in %s", __func__);
 
        if (ring->use_doorbell) {
-               *ring->wptr_cpu_addr = lower_32_bits(ring->wptr);
+               amdgpu_ring_wb_write32(ring->wptr_cpu_addr, 
lower_32_bits(ring->wptr));
                WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr));
        } else {
                WREG32_SOC15(VCN, GET_INST(VCN, ring->me), regUVD_RB_WPTR,
-- 
2.34.1


Reply via email to