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