Am 27.02.2018 um 09:47 schrieb Monk Liu: > From: Emily Deng <Emily.Deng at amd.com> > > the original method will change the wptr value in wb. > v2: > furthur cleanup > > Change-Id: I984fabca35d9dcf1f5fa8ef7779b2afb7f7d7370 > Signed-off-by: Emily Deng <Emily.Deng at amd.com> > Signed-off-by: Monk Liu <Monk.Liu at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > index 3d5385d..04e9cb0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c > @@ -238,15 +238,14 @@ static uint64_t sdma_v4_0_ring_get_rptr(struct amdgpu_ring *ring) > static uint64_t sdma_v4_0_ring_get_wptr(struct amdgpu_ring *ring) > { > struct amdgpu_device *adev = ring->adev; > - u64 *wptr = NULL; > + u64 wptr; > uint64_t local_wptr = 0; > + u64 tmp = 0; As far as I can see local_wptr and tmp are now unused and can be dropped as well. With that fixed the patch is Reviewed-by: Christian König <christian.koenig at amd.com> Regards, Christian. > > if (ring->use_doorbell) { > /* XXX check if swapping is necessary on BE */ > - wptr = ((u64 *)&adev->wb.wb[ring->wptr_offs]); > - DRM_DEBUG("wptr/doorbell before shift == 0x%016llx\n", *wptr); > - *wptr = (*wptr) >> 2; > - DRM_DEBUG("wptr/doorbell after shift == 0x%016llx\n", *wptr); > + wptr = READ_ONCE(*((u64 *)&adev->wb.wb[ring->wptr_offs])); > + DRM_DEBUG("wptr/doorbell before shift == 0x%016llx\n", wptr); > } else { > u32 lowbit, highbit; > int me = (ring == &adev->sdma.instance[0].ring) ? 0 : 1; > @@ -257,12 +256,12 @@ static uint64_t sdma_v4_0_ring_get_wptr(struct amdgpu_ring *ring) > > DRM_DEBUG("wptr [%i]high== 0x%08x low==0x%08x\n", > me, highbit, lowbit); > - *wptr = highbit; > - *wptr = (*wptr) << 32; > - *wptr |= lowbit; > + wptr = highbit; > + wptr = wptr << 32; > + wptr |= lowbit; > } > > - return *wptr; > + return wptr >> 2; > } > > /**