diff options
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.patch | 47 |
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 + |