aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/files/0546-drm-amdgpu-use-only-one-reservation-object-for-each-.patch
diff options
context:
space:
mode:
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-.patch121
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
-