drm/amdgpu/sdma5: fix wptr overwritten in ->get_wptr()
authorXiaojie Yuan <xiaojie.yuan@amd.com>
Tue, 14 Jul 2020 07:47:31 +0000 (15:47 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Jul 2020 07:34:27 +0000 (09:34 +0200)
commit7c7df36732772d4f68e0ed50667ced18440bb2ad
treeadd7153fd4761249363a56df7df15ab93f4cc8d2
parentb22a2501543e9ebe88b8375652ad41715f1e765d
drm/amdgpu/sdma5: fix wptr overwritten in ->get_wptr()

commit 05051496b2622e4d12e2036b35165969aa502f89 upstream.

"u64 *wptr" points to the the wptr value in write back buffer and
"*wptr = (*wptr) >> 2;" results in the value being overwritten each time
when ->get_wptr() is called.

umr uses /sys/kernel/debug/dri/0/amdgpu_ring_sdma0 to get rptr/wptr and
decode ring content and it is affected by this issue.

fix and simplify the logic similar as sdma_v4_0_ring_get_wptr().

v2: fix for sdma5.2 as well
v3: drop sdma 5.2 changes for 5.8 and stable

Suggested-by: Le Ma <le.ma@amd.com>
Signed-off-by: Xiaojie Yuan <xiaojie.yuan@amd.com>
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/amdgpu/sdma_v5_0.c