aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1832-drm-amdgpu-sdma3-set-wptr-shadow-atomically.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1832-drm-amdgpu-sdma3-set-wptr-shadow-atomically.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1832-drm-amdgpu-sdma3-set-wptr-shadow-atomically.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1832-drm-amdgpu-sdma3-set-wptr-shadow-atomically.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1832-drm-amdgpu-sdma3-set-wptr-shadow-atomically.patch
new file mode 100644
index 00000000..2478869a
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/1832-drm-amdgpu-sdma3-set-wptr-shadow-atomically.patch
@@ -0,0 +1,32 @@
+From 4c8ef550cc3b02c7c783364ae8006c3c3d75b244 Mon Sep 17 00:00:00 2001
+From: "Xiangliang.Yu" <Xiangliang.Yu@amd.com>
+Date: Wed, 13 Sep 2017 10:58:19 +0800
+Subject: [PATCH 1832/4131] drm/amdgpu/sdma3: set wptr shadow atomically
+
+Port it from sdma4 for wptr polling usage.
+
+Signed-off-by: Xiangliang.Yu <Xiangliang.Yu@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+index 7b97ce8..10a0ceb 100644
+--- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
++++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c
+@@ -379,8 +379,10 @@ 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 *)&adev->wb.wb[ring->wptr_offs];
++
+ /* XXX check if swapping is necessary on BE */
+- adev->wb.wb[ring->wptr_offs] = lower_32_bits(ring->wptr) << 2;
++ WRITE_ONCE(*wb, (lower_32_bits(ring->wptr) << 2));
+ WDOORBELL32(ring->doorbell_index, lower_32_bits(ring->wptr) << 2);
+ } else {
+ int me = (ring == &ring->adev->sdma.instance[0].ring) ? 0 : 1;
+--
+2.7.4
+