diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0546-drm-amdgpu-use-only-one-reservation-object-for-each-.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0546-drm-amdgpu-use-only-one-reservation-object-for-each-.patch | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/common/recipes-kernel/linux/files/0546-drm-amdgpu-use-only-one-reservation-object-for-each-.patch b/common/recipes-kernel/linux/files/0546-drm-amdgpu-use-only-one-reservation-object-for-each-.patch deleted file mode 100644 index eb30c746..00000000 --- a/common/recipes-kernel/linux/files/0546-drm-amdgpu-use-only-one-reservation-object-for-each-.patch +++ /dev/null @@ -1,121 +0,0 @@ -From bf60efd353f68e5dec1a177b5cbe4da07c819569 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Fri, 4 Sep 2015 10:47:56 +0200 -Subject: [PATCH 0546/1050] drm/amdgpu: use only one reservation object for - each VM v2 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Reduces the locking and fencing overhead. - -v2: add comment why we need the duplicates list in the GEM op. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> -Reviewed-by: Jammy Zhou <Jammy.Zhou@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c | 6 ++++-- - drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 33 +++++---------------------------- - 2 files changed, 9 insertions(+), 30 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c -index b75c3b2..2f39fea 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c -@@ -455,11 +455,12 @@ 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 ww_acquire_ctx ticket; -- struct list_head list; -+ struct list_head list, duplicates; - unsigned domain; - int r; - - INIT_LIST_HEAD(&list); -+ INIT_LIST_HEAD(&duplicates); - - tv.bo = &bo_va->bo->tbo; - tv.shared = true; -@@ -469,7 +470,8 @@ static void amdgpu_gem_va_update_vm(struct amdgpu_device *adev, - if (!vm_bos) - return; - -- r = ttm_eu_reserve_buffers(&ticket, &list, true, NULL); -+ /* Provide duplicates to avoid -EALREADY */ -+ r = ttm_eu_reserve_buffers(&ticket, &list, true, &duplicates); - if (r) - goto error_free; - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -index 8927dc6..d30fbec 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -@@ -686,31 +686,6 @@ static int amdgpu_vm_update_ptes(struct amdgpu_device *adev, - } - - /** -- * amdgpu_vm_fence_pts - fence page tables after an update -- * -- * @vm: requested vm -- * @start: start of GPU address range -- * @end: end of GPU address range -- * @fence: fence to use -- * -- * Fence the page tables in the range @start - @end (cayman+). -- * -- * Global and local mutex must be locked! -- */ --static void amdgpu_vm_fence_pts(struct amdgpu_vm *vm, -- uint64_t start, uint64_t end, -- struct fence *fence) --{ -- unsigned i; -- -- start >>= amdgpu_vm_block_size; -- end >>= amdgpu_vm_block_size; -- -- for (i = start; i <= end; ++i) -- amdgpu_bo_fence(vm->page_tables[i].bo, fence, true); --} -- --/** - * amdgpu_vm_bo_update_mapping - update a mapping in the vm page table - * - * @adev: amdgpu_device pointer -@@ -813,8 +788,7 @@ static int amdgpu_vm_bo_update_mapping(struct amdgpu_device *adev, - if (r) - goto error_free; - -- amdgpu_vm_fence_pts(vm, mapping->it.start, -- mapping->it.last + 1, f); -+ amdgpu_bo_fence(vm->page_directory, f, true); - if (fence) { - fence_put(*fence); - *fence = fence_get(f); -@@ -1089,6 +1063,7 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev, - - /* walk over the address space and allocate the page tables */ - for (pt_idx = saddr; pt_idx <= eaddr; ++pt_idx) { -+ struct reservation_object *resv = vm->page_directory->tbo.resv; - struct amdgpu_bo *pt; - - if (vm->page_tables[pt_idx].bo) -@@ -1097,11 +1072,13 @@ int amdgpu_vm_bo_map(struct amdgpu_device *adev, - /* drop mutex to allocate and clear page table */ - mutex_unlock(&vm->mutex); - -+ ww_mutex_lock(&resv->lock, NULL); - r = amdgpu_bo_create(adev, AMDGPU_VM_PTE_COUNT * 8, - AMDGPU_GPU_PAGE_SIZE, true, - AMDGPU_GEM_DOMAIN_VRAM, - AMDGPU_GEM_CREATE_NO_CPU_ACCESS, -- NULL, NULL, &pt); -+ NULL, resv, &pt); -+ ww_mutex_unlock(&resv->lock); - if (r) - goto error_free; - --- -1.9.1 - |