aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0887-drm-amdgpu-move-VM-page-tables-to-the-LRU-end-on-CS-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/files/0887-drm-amdgpu-move-VM-page-tables-to-the-LRU-end-on-CS-.patch')
-rw-r--r--common/recipes-kernel/linux/files/0887-drm-amdgpu-move-VM-page-tables-to-the-LRU-end-on-CS-.patch104
1 files changed, 0 insertions, 104 deletions
diff --git a/common/recipes-kernel/linux/files/0887-drm-amdgpu-move-VM-page-tables-to-the-LRU-end-on-CS-.patch b/common/recipes-kernel/linux/files/0887-drm-amdgpu-move-VM-page-tables-to-the-LRU-end-on-CS-.patch
deleted file mode 100644
index adf7bbfb..00000000
--- a/common/recipes-kernel/linux/files/0887-drm-amdgpu-move-VM-page-tables-to-the-LRU-end-on-CS-.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 5cf468f0d91070a1813c5805e15068f756281cd4 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Mon, 11 Jan 2016 15:35:21 +0100
-Subject: [PATCH 0887/1565] drm/amdgpu: move VM page tables to the LRU end on
- CS v2
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This makes it less likely to run into an ENOMEM because
-VM page tables are evicted last.
-
-v2: move the BOs in the LRU tail after validation
-
-Signed-off-by: Christian König <christian.koenig@amd.com>
-Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
----
- drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++
- drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 7 ++++++-
- drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 27 +++++++++++++++++++++++++++
- 3 files changed, 35 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-index 003959f..313b0cc 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
-@@ -987,6 +987,8 @@ void amdgpu_vm_get_pd_bo(struct amdgpu_vm *vm,
- struct list_head *validated,
- struct amdgpu_bo_list_entry *entry);
- void amdgpu_vm_get_pt_bos(struct amdgpu_vm *vm, struct list_head *duplicates);
-+void amdgpu_vm_move_pt_bos_in_lru(struct amdgpu_device *adev,
-+ struct amdgpu_vm *vm);
- int amdgpu_vm_grab_id(struct amdgpu_vm *vm, struct amdgpu_ring *ring,
- struct amdgpu_sync *sync);
- void amdgpu_vm_flush(struct amdgpu_ring *ring,
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
-index ce0254d..1fffc33 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c
-@@ -428,8 +428,10 @@ static int amdgpu_cs_parser_relocs(struct amdgpu_cs_parser *p)
- r = amdgpu_cs_list_validate(p->adev, &fpriv->vm, &duplicates);
-
- error_validate:
-- if (r)
-+ if (r) {
-+ amdgpu_vm_move_pt_bos_in_lru(p->adev, &fpriv->vm);
- ttm_eu_backoff_reservation(&p->ticket, &p->validated);
-+ }
-
- error_reserve:
- if (need_mmap_lock)
-@@ -473,8 +475,11 @@ static int cmp_size_smaller_first(void *priv, struct list_head *a,
- **/
- static void amdgpu_cs_parser_fini(struct amdgpu_cs_parser *parser, int error, bool backoff)
- {
-+ struct amdgpu_fpriv *fpriv = parser->filp->driver_priv;
- unsigned i;
-
-+ amdgpu_vm_move_pt_bos_in_lru(parser->adev, &fpriv->vm);
-+
- if (!error) {
- /* Sort the buffer list from the smallest to largest buffer,
- * which affects the order of buffers in the LRU list.
-diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-index 8f7688e..aefc668 100644
---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
-@@ -119,6 +119,33 @@ void amdgpu_vm_get_pt_bos(struct amdgpu_vm *vm, struct list_head *duplicates)
-
- list_add(&entry->tv.head, duplicates);
- }
-+
-+}
-+
-+/**
-+ * amdgpu_vm_move_pt_bos_in_lru - move the PT BOs to the LRU tail
-+ *
-+ * @adev: amdgpu device instance
-+ * @vm: vm providing the BOs
-+ *
-+ * Move the PT BOs to the tail of the LRU.
-+ */
-+void amdgpu_vm_move_pt_bos_in_lru(struct amdgpu_device *adev,
-+ struct amdgpu_vm *vm)
-+{
-+ struct ttm_bo_global *glob = adev->mman.bdev.glob;
-+ unsigned i;
-+
-+ spin_lock(&glob->lru_lock);
-+ for (i = 0; i <= vm->max_pde_used; ++i) {
-+ struct amdgpu_bo_list_entry *entry = &vm->page_tables[i].entry;
-+
-+ if (!entry->robj)
-+ continue;
-+
-+ ttm_bo_move_to_lru_tail(&entry->robj->tbo);
-+ }
-+ spin_unlock(&glob->lru_lock);
- }
-
- /**
---
-1.9.1
-