aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3333-drm-amdgpu-replace-readq-writeq-with-atomic64-operat.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3333-drm-amdgpu-replace-readq-writeq-with-atomic64-operat.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3333-drm-amdgpu-replace-readq-writeq-with-atomic64-operat.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3333-drm-amdgpu-replace-readq-writeq-with-atomic64-operat.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3333-drm-amdgpu-replace-readq-writeq-with-atomic64-operat.patch
new file mode 100644
index 00000000..8613a9ca
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/3333-drm-amdgpu-replace-readq-writeq-with-atomic64-operat.patch
@@ -0,0 +1,47 @@
+From 0e0db070470423c2bf31c24f4664003d34881680 Mon Sep 17 00:00:00 2001
+From: Tao Zhou <tao.zhou1@amd.com>
+Date: Wed, 7 Aug 2019 10:28:54 +0800
+Subject: [PATCH 3333/4256] drm/amdgpu: replace readq/writeq with atomic64
+ operations
+
+what we really want is a read or write that is guaranteed to be 64 bits
+at a time, atomic64 operations are supported on all architectures
+
+Signed-off-by: Tao Zhou <tao.zhou1@amd.com>
+Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+index 1f88222d007d..5bfc5391155b 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+@@ -272,14 +272,10 @@ void amdgpu_mm_wreg(struct amdgpu_device *adev, uint32_t reg, uint32_t v,
+ */
+ uint64_t amdgpu_mm_rreg64(struct amdgpu_device *adev, uint32_t reg)
+ {
+- uint64_t ret;
+-
+ if ((reg * 4) < adev->rmmio_size)
+- ret = readq(((void __iomem *)adev->rmmio) + (reg * 4));
++ return atomic64_read((atomic64_t *)(adev->rmmio + (reg * 4)));
+ else
+ BUG();
+-
+- return ret;
+ }
+
+ /**
+@@ -294,7 +290,7 @@ uint64_t amdgpu_mm_rreg64(struct amdgpu_device *adev, uint32_t reg)
+ void amdgpu_mm_wreg64(struct amdgpu_device *adev, uint32_t reg, uint64_t v)
+ {
+ if ((reg * 4) < adev->rmmio_size)
+- writeq(v, ((void __iomem *)adev->rmmio) + (reg * 4));
++ atomic64_set((atomic64_t *)(adev->rmmio + (reg * 4)), v);
+ else
+ BUG();
+ }
+--
+2.17.1
+