aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0458-drm-amdgpu-fix-type-mismatch-error.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0458-drm-amdgpu-fix-type-mismatch-error.patch')
-rw-r--r--common/recipes-kernel/linux/files/0458-drm-amdgpu-fix-type-mismatch-error.patch46
1 files changed, 46 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/files/0458-drm-amdgpu-fix-type-mismatch-error.patch b/common/recipes-kernel/linux/files/0458-drm-amdgpu-fix-type-mismatch-error.patch
new file mode 100644
index 00000000..68bf8559
--- /dev/null
+++ b/common/recipes-kernel/linux/files/0458-drm-amdgpu-fix-type-mismatch-error.patch
@@ -0,0 +1,46 @@
+From a8f5bf0b220c28b1b600a5ff3cae0b53c5c2079b Mon Sep 17 00:00:00 2001
+From: "monk.liu" <monk.liu@amd.com>
+Date: Wed, 12 Aug 2015 17:56:52 +0800
+Subject: [PATCH 0458/1050] drm/amdgpu: fix type mismatch error
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+remaining timeout returned by amdgpu_fence_wait_any can be larger than
+max int value, thus the truncated 32 bit value in r ends up being
+negative while its original long value is positive.
+
+Signed-off-by: monk.liu <monk.liu@amd.com>
+Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
+Reviewed-by: Christian König <christian.koenig@amd.com>
+Reviewed-by: Jammy Zhou <jammy.zhou@amd.com>
+---
+ drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
+index c5b1726..d6398cf 100644
+--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sa.c
+@@ -318,6 +318,7 @@ int amdgpu_sa_bo_new(struct amdgpu_device *adev,
+ struct amdgpu_fence *fences[AMDGPU_MAX_RINGS];
+ unsigned tries[AMDGPU_MAX_RINGS];
+ int i, r;
++ signed long t;
+
+ BUG_ON(align > sa_manager->align);
+ BUG_ON(size > sa_manager->size);
+@@ -351,8 +352,8 @@ int amdgpu_sa_bo_new(struct amdgpu_device *adev,
+ } while (amdgpu_sa_bo_next_hole(sa_manager, fences, tries));
+
+ spin_unlock(&sa_manager->wq.lock);
+- r = amdgpu_fence_wait_any(adev, fences, false, MAX_SCHEDULE_TIMEOUT);
+- r = (r > 0) ? 0 : r;
++ t = amdgpu_fence_wait_any(adev, fences, false, MAX_SCHEDULE_TIMEOUT);
++ r = (t > 0) ? 0 : t;
+ spin_lock(&sa_manager->wq.lock);
+ /* if we have nothing to wait for block */
+ if (r == -ENOENT) {
+--
+1.9.1
+