aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0934-drm-amdgpu-fix-issue-with-overlapping-userptrs.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0934-drm-amdgpu-fix-issue-with-overlapping-userptrs.patch')
-rw-r--r--common/recipes-kernel/linux/files/0934-drm-amdgpu-fix-issue-with-overlapping-userptrs.patch80
1 files changed, 0 insertions, 80 deletions
diff --git a/common/recipes-kernel/linux/files/0934-drm-amdgpu-fix-issue-with-overlapping-userptrs.patch b/common/recipes-kernel/linux/files/0934-drm-amdgpu-fix-issue-with-overlapping-userptrs.patch
deleted file mode 100644
index 260cbb44..00000000
--- a/common/recipes-kernel/linux/files/0934-drm-amdgpu-fix-issue-with-overlapping-userptrs.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 5620c84b36d29b1186b9179290bbfeab343ec7d2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Mon, 8 Feb 2016 10:57:22 +0100
-Subject: [PATCH 0934/1565] drm/amdgpu: fix issue with overlapping userptrs
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Otherwise we could try to evict overlapping userptr BOs in get_user_pages(),
-leading to a possible circular locking dependency.
-
-Signed-off-by: Christian König <christian.koenig@amd.com>
-Acked-by: Alex Deucher <alexander.deucher@amd.com>
-Cc: stable@vger.kernel.org
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++
- drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c | 3 ++-
- drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 19 +++++++++++++++++++
- 3 files changed, 23 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index 43e7ed1..5e7770f 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -2319,6 +2319,8 @@ bool amdgpu_ttm_bo_is_amdgpu_bo(struct ttm_buffer_object *bo);
- int amdgpu_ttm_tt_set_userptr(struct ttm_tt *ttm, uint64_t addr,
- uint32_t flags);
- bool amdgpu_ttm_tt_has_userptr(struct ttm_tt *ttm);
-+bool amdgpu_ttm_tt_affect_userptr(struct ttm_tt *ttm, unsigned long start,
-+ unsigned long end);
- bool amdgpu_ttm_tt_is_readonly(struct ttm_tt *ttm);
- uint32_t amdgpu_ttm_tt_pte_flags(struct amdgpu_device *adev, struct ttm_tt *ttm,
- struct ttm_mem_reg *mem);
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
-index b1969f2..d4e2780 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
-@@ -142,7 +142,8 @@ static void amdgpu_mn_invalidate_range_start(struct mmu_notifier *mn,
-
- list_for_each_entry(bo, &node->bos, mn_list) {
-
-- if (!bo->tbo.ttm || bo->tbo.ttm->state != tt_bound)
-+ if (!amdgpu_ttm_tt_affect_userptr(bo->tbo.ttm, start,
-+ end))
- continue;
-
- r = amdgpu_bo_reserve(bo, true);
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
-index 55cf05e..6442a06 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
-@@ -783,6 +783,25 @@ bool amdgpu_ttm_tt_has_userptr(struct ttm_tt *ttm)
- return !!gtt->userptr;
- }
-
-+bool amdgpu_ttm_tt_affect_userptr(struct ttm_tt *ttm, unsigned long start,
-+ unsigned long end)
-+{
-+ struct amdgpu_ttm_tt *gtt = (void *)ttm;
-+ unsigned long size;
-+
-+ if (gtt == NULL)
-+ return false;
-+
-+ if (gtt->ttm.ttm.state != tt_bound || !gtt->userptr)
-+ return false;
-+
-+ size = (unsigned long)gtt->ttm.ttm.num_pages * PAGE_SIZE;
-+ if (gtt->userptr > end || gtt->userptr + size <= start)
-+ return false;
-+
-+ return true;
-+}
-+
- bool amdgpu_ttm_tt_is_readonly(struct ttm_tt *ttm)
- {
- struct amdgpu_ttm_tt *gtt = (void *)ttm;
---
-1.9.1
-