diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0031-drm-amdgpu-split-VM-PD-and-PT-handling-during-CS.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0031-drm-amdgpu-split-VM-PD-and-PT-handling-during-CS.patch | 190 |
1 files changed, 0 insertions, 190 deletions
diff --git a/common/recipes-kernel/linux/files/0031-drm-amdgpu-split-VM-PD-and-PT-handling-during-CS.patch b/common/recipes-kernel/linux/files/0031-drm-amdgpu-split-VM-PD-and-PT-handling-during-CS.patch deleted file mode 100644 index 4f646fee..00000000 --- a/common/recipes-kernel/linux/files/0031-drm-amdgpu-split-VM-PD-and-PT-handling-during-CS.patch +++ /dev/null @@ -1,190 +0,0 @@ -From e80b9ea2005233764ff7bac3ed1ef49732bdaa05 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Fri, 11 Dec 2015 15:16:32 +0100 -Subject: [PATCH 0031/1110] drm/amdgpu: split VM PD and PT handling during CS -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This way we avoid the extra allocation for the page directory entry. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> -Signed-off-by: Kalyan Alle <kalyan.alle@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 6 +++++ - drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c | 9 ++++++-- - drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 16 +++++++++----- - drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 39 ++++++++++++++++++++++++--------- - 4 files changed, 52 insertions(+), 18 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index 1447a5e..638b089 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -986,6 +986,11 @@ struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev, - struct amdgpu_vm *vm, - struct list_head *validated, - struct list_head *duplicates); -+void amdgpu_vm_get_pd_bo(struct amdgpu_vm *vm, -+ struct list_head *validated, -+ struct amdgpu_bo_list_entry *entry); -+struct amdgpu_bo_list_entry *amdgpu_vm_get_pt_bos(struct amdgpu_vm *vm, -+ struct list_head *duplicates); - 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, -@@ -1255,6 +1260,7 @@ struct amdgpu_cs_parser { - unsigned nchunks; - struct amdgpu_cs_chunk *chunks; - /* relocations */ -+ struct amdgpu_bo_list_entry vm_pd; - struct amdgpu_bo_list_entry *vm_bos; - struct list_head validated; - struct fence *fence; -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -index 1d52144..1ff138e 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cs.c -@@ -407,8 +407,7 @@ static int amdgpu_cs_parser_relocs(struct amdgpu_cs_parser *p) - } - - INIT_LIST_HEAD(&duplicates); -- p->vm_bos = amdgpu_vm_get_bos(p->adev, &fpriv->vm, -- &p->validated, &duplicates); -+ amdgpu_vm_get_pd_bo(&fpriv->vm, &p->validated, &p->vm_pd); - - if (p->uf.bo) - list_add(&p->uf_entry.tv.head, &p->validated); -@@ -420,6 +419,12 @@ static int amdgpu_cs_parser_relocs(struct amdgpu_cs_parser *p) - if (unlikely(r != 0)) - goto error_reserve; - -+ p->vm_bos = amdgpu_vm_get_pt_bos(&fpriv->vm, &duplicates); -+ if (!p->vm_bos) { -+ r = -ENOMEM; -+ goto error_validate; -+ } -+ - r = amdgpu_cs_list_validate(p->adev, &fpriv->vm, &p->validated); - if (r) - goto error_validate; -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c -index df0444f..b1d44ce 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c -@@ -449,6 +449,7 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev, - { - struct ttm_validate_buffer tv, *entry; - struct amdgpu_bo_list_entry *vm_bos; -+ struct amdgpu_bo_list_entry vm_pd; - struct ww_acquire_ctx ticket; - struct list_head list, duplicates; - unsigned domain; -@@ -461,14 +462,18 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev, - tv.shared = true; - list_add(&tv.head, &list); - -- vm_bos = amdgpu_vm_get_bos(adev, bo_va->vm, &list, &duplicates); -- if (!vm_bos) -- return; -+ amdgpu_vm_get_pd_bo(bo_va->vm, &list, &vm_pd); - - /* Provide duplicates to avoid -EALREADY */ - r = ttm_eu_reserve_buffers(&ticket, &list, true, &duplicates); - if (r) -- goto error_free; -+ goto error_print; -+ -+ vm_bos = amdgpu_vm_get_pt_bos(bo_va->vm, &duplicates); -+ if (!vm_bos) { -+ r = -ENOMEM; -+ goto error_unreserve; -+ } - - list_for_each_entry(entry, &list, head) { - domain = amdgpu_mem_type_to_domain(entry->bo->mem.mem_type); -@@ -498,10 +503,9 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev, - - error_unreserve: - ttm_eu_backoff_reservation(&ticket, &list); -- --error_free: - drm_free_large(vm_bos); - -+error_print: - if (r && r != -ERESTARTSYS) - DRM_ERROR("Couldn't update BO_VA (%d)\n", r); - } -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -index 3c3404f..396ab85 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -@@ -75,27 +75,46 @@ static unsigned amdgpu_vm_directory_size(struct amdgpu_device *adev) - } - - /** -- * amdgpu_vm_get_bos - add the vm BOs to a validation list -- * -+ * amdgpu_vm_get_pd_bo - add the VM PD to a validation list - * @vm: vm providing the BOs - * @validated: head of validation list -+ * @entry: entry to add -+ * -+ * Add the page directory to the list of BOs to -+ * validate for command submission. -+ */ -+void amdgpu_vm_get_pd_bo(struct amdgpu_vm *vm, -+ struct list_head *validated, -+ struct amdgpu_bo_list_entry *entry) -+{ -+ entry->robj = vm->page_directory; -+ entry->prefered_domains = AMDGPU_GEM_DOMAIN_VRAM; -+ entry->allowed_domains = AMDGPU_GEM_DOMAIN_VRAM; -+ entry->priority = 0; -+ entry->tv.bo = &vm->page_directory->tbo; -+ entry->tv.shared = true; -+ list_add(&entry->tv.head, validated); -+} -+ -+/** -++ * amdgpu_vm_get_bos - add the vm BOs to a validation list -++ * -++ * @vm: vm providing the BOs - * @duplicates: head of duplicates list - -- * - * Add the page directory to the list of BOs to - * validate for command submission (cayman+). - */ --struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev, -- struct amdgpu_vm *vm, -- struct list_head *validated, -- struct list_head *duplicates) -+struct amdgpu_bo_list_entry *amdgpu_vm_get_pt_bos(struct amdgpu_vm *vm, -+ struct list_head *duplicates) -+ - { - struct amdgpu_bo_list_entry *list; - unsigned i, idx; - -- list = drm_malloc_ab(vm->max_pde_used + 2, -+ list = drm_malloc_ab(vm->max_pde_used + 1, - sizeof(struct amdgpu_bo_list_entry)); -- if (!list) { -+ if (!list) - return NULL; - } - -@@ -108,7 +127,7 @@ struct amdgpu_bo_list_entry *amdgpu_vm_get_bos(struct amdgpu_device *adev, - list[0].tv.shared = true; - list_add(&list[0].tv.head, validated); - -- for (i = 0, idx = 1; i <= vm->max_pde_used; i++) { -+ for (i = 0, idx = 0; i <= vm->max_pde_used; i++) { - if (!vm->page_tables[i].bo) - continue; - --- -2.7.4 - |