summarylogtreecommitdiffstats
path: root/0102-Revert-drmi915-improve_the_catch-all_evict_to_handle_lock_contention.patch
diff options
context:
space:
mode:
authorJeka2023-05-25 10:34:29 +0300
committerJeka2023-05-25 10:34:29 +0300
commit5a7e0c670b288a8eb2262790b8e5b52e23448394 (patch)
tree39b1b84e9daf7033bc1d0d0f137f06859a2dab4c /0102-Revert-drmi915-improve_the_catch-all_evict_to_handle_lock_contention.patch
parent9dae77af2cec22b74aa83256fd084a2198dd6ed6 (diff)
downloadaur-5a7e0c670b288a8eb2262790b8e5b52e23448394.tar.gz
kernel release 6.3.4
Diffstat (limited to '0102-Revert-drmi915-improve_the_catch-all_evict_to_handle_lock_contention.patch')
-rw-r--r--0102-Revert-drmi915-improve_the_catch-all_evict_to_handle_lock_contention.patch228
1 files changed, 0 insertions, 228 deletions
diff --git a/0102-Revert-drmi915-improve_the_catch-all_evict_to_handle_lock_contention.patch b/0102-Revert-drmi915-improve_the_catch-all_evict_to_handle_lock_contention.patch
deleted file mode 100644
index 8c6be4fd22f4..000000000000
--- a/0102-Revert-drmi915-improve_the_catch-all_evict_to_handle_lock_contention.patch
+++ /dev/null
@@ -1,228 +0,0 @@
-From 1635d2bdd74f7ecea0a7cbbdd74f78b2f369a16e Mon Sep 17 00:00:00 2001
-From: "Jan Alexander Steffens (heftig)" <heftig@archlinux.org>
-Date: Wed, 4 Jan 2023 17:25:32 +0100
-Subject: [PATCH] Revert "drm/i915: improve the catch-all evict to handle lock
- contention"
-
-Will be replaced with the revision from mainline, which only adds
-comment changes.
-
-This reverts commit 4b1f2367bcbd0cdb86c71ddbb5fc1041872b6766.
----
- .../gpu/drm/i915/gem/i915_gem_execbuffer.c | 25 ++-----------
- drivers/gpu/drm/i915/gem/i915_gem_mman.c | 2 +-
- drivers/gpu/drm/i915/i915_gem_evict.c | 37 +++++--------------
- drivers/gpu/drm/i915/i915_gem_evict.h | 4 +-
- drivers/gpu/drm/i915/i915_vma.c | 2 +-
- .../gpu/drm/i915/selftests/i915_gem_evict.c | 4 +-
- 6 files changed, 18 insertions(+), 56 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
-index f461e34cc5f076..68f2c3e5065ad6 100644
---- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
-+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
-@@ -759,44 +759,25 @@ static int eb_reserve(struct i915_execbuffer *eb)
- * hopefully unbind (if still bound in the VM). Repeat until the VM is
- * evicted. Finally we should be able bind everything.
- */
-- for (pass = 0; pass <= 3; pass++) {
-+ for (pass = 0; pass <= 2; pass++) {
- int pin_flags = PIN_USER | PIN_VALIDATE;
-
- if (pass == 0)
- pin_flags |= PIN_NONBLOCK;
-
- if (pass >= 1)
-- unpinned = eb_unbind(eb, pass >= 2);
-+ unpinned = eb_unbind(eb, pass == 2);
-
- if (pass == 2) {
- err = mutex_lock_interruptible(&eb->context->vm->mutex);
- if (!err) {
-- err = i915_gem_evict_vm(eb->context->vm, &eb->ww, NULL);
-+ err = i915_gem_evict_vm(eb->context->vm, &eb->ww);
- mutex_unlock(&eb->context->vm->mutex);
- }
- if (err)
- return err;
- }
-
-- if (pass == 3) {
--retry:
-- err = mutex_lock_interruptible(&eb->context->vm->mutex);
-- if (!err) {
-- struct drm_i915_gem_object *busy_bo = NULL;
--
-- err = i915_gem_evict_vm(eb->context->vm, &eb->ww, &busy_bo);
-- mutex_unlock(&eb->context->vm->mutex);
-- if (err && busy_bo) {
-- err = i915_gem_object_lock(busy_bo, &eb->ww);
-- i915_gem_object_put(busy_bo);
-- if (!err)
-- goto retry;
-- }
-- }
-- if (err)
-- return err;
-- }
--
- list_for_each_entry(ev, &eb->unbound, bind_link) {
- err = eb_reserve_vma(eb, ev, pin_flags);
- if (err)
-diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
-index 354c1d6dab8462..e63329bc80659c 100644
---- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
-+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
-@@ -369,7 +369,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
- if (vma == ERR_PTR(-ENOSPC)) {
- ret = mutex_lock_interruptible(&ggtt->vm.mutex);
- if (!ret) {
-- ret = i915_gem_evict_vm(&ggtt->vm, &ww, NULL);
-+ ret = i915_gem_evict_vm(&ggtt->vm, &ww);
- mutex_unlock(&ggtt->vm.mutex);
- }
- if (ret)
-diff --git a/drivers/gpu/drm/i915/i915_gem_evict.c b/drivers/gpu/drm/i915/i915_gem_evict.c
-index a4b4d9b7d26c7a..f025ee4fa52618 100644
---- a/drivers/gpu/drm/i915/i915_gem_evict.c
-+++ b/drivers/gpu/drm/i915/i915_gem_evict.c
-@@ -416,11 +416,6 @@ int i915_gem_evict_for_node(struct i915_address_space *vm,
- * @vm: Address space to cleanse
- * @ww: An optional struct i915_gem_ww_ctx. If not NULL, i915_gem_evict_vm
- * will be able to evict vma's locked by the ww as well.
-- * @busy_bo: Optional pointer to struct drm_i915_gem_object. If not NULL, then
-- * in the event i915_gem_evict_vm() is unable to trylock an object for eviction,
-- * then @busy_bo will point to it. -EBUSY is also returned. The caller must drop
-- * the vm->mutex, before trying again to acquire the contended lock. The caller
-- * also owns a reference to the object.
- *
- * This function evicts all vmas from a vm.
- *
-@@ -430,8 +425,7 @@ int i915_gem_evict_for_node(struct i915_address_space *vm,
- * To clarify: This is for freeing up virtual address space, not for freeing
- * memory in e.g. the shrinker.
- */
--int i915_gem_evict_vm(struct i915_address_space *vm, struct i915_gem_ww_ctx *ww,
-- struct drm_i915_gem_object **busy_bo)
-+int i915_gem_evict_vm(struct i915_address_space *vm, struct i915_gem_ww_ctx *ww)
- {
- int ret = 0;
-
-@@ -463,22 +457,15 @@ int i915_gem_evict_vm(struct i915_address_space *vm, struct i915_gem_ww_ctx *ww,
- * the resv is shared among multiple objects, we still
- * need the object ref.
- */
-- if (!i915_gem_object_get_rcu(vma->obj) ||
-+ if (dying_vma(vma) ||
- (ww && (dma_resv_locking_ctx(vma->obj->base.resv) == &ww->ctx))) {
- __i915_vma_pin(vma);
- list_add(&vma->evict_link, &locked_eviction_list);
- continue;
- }
-
-- if (!i915_gem_object_trylock(vma->obj, ww)) {
-- if (busy_bo) {
-- *busy_bo = vma->obj; /* holds ref */
-- ret = -EBUSY;
-- break;
-- }
-- i915_gem_object_put(vma->obj);
-+ if (!i915_gem_object_trylock(vma->obj, ww))
- continue;
-- }
-
- __i915_vma_pin(vma);
- list_add(&vma->evict_link, &eviction_list);
-@@ -486,29 +473,25 @@ int i915_gem_evict_vm(struct i915_address_space *vm, struct i915_gem_ww_ctx *ww,
- if (list_empty(&eviction_list) && list_empty(&locked_eviction_list))
- break;
-
-+ ret = 0;
- /* Unbind locked objects first, before unlocking the eviction_list */
- list_for_each_entry_safe(vma, vn, &locked_eviction_list, evict_link) {
- __i915_vma_unpin(vma);
-
-- if (ret == 0) {
-+ if (ret == 0)
- ret = __i915_vma_unbind(vma);
-- if (ret != -EINTR) /* "Get me out of here!" */
-- ret = 0;
-- }
-- if (!dying_vma(vma))
-- i915_gem_object_put(vma->obj);
-+ if (ret != -EINTR) /* "Get me out of here!" */
-+ ret = 0;
- }
-
- list_for_each_entry_safe(vma, vn, &eviction_list, evict_link) {
- __i915_vma_unpin(vma);
-- if (ret == 0) {
-+ if (ret == 0)
- ret = __i915_vma_unbind(vma);
-- if (ret != -EINTR) /* "Get me out of here!" */
-- ret = 0;
-- }
-+ if (ret != -EINTR) /* "Get me out of here!" */
-+ ret = 0;
-
- i915_gem_object_unlock(vma->obj);
-- i915_gem_object_put(vma->obj);
- }
- } while (ret == 0);
-
-diff --git a/drivers/gpu/drm/i915/i915_gem_evict.h b/drivers/gpu/drm/i915/i915_gem_evict.h
-index bf0ee0e4fe6088..e593c530f9bd7a 100644
---- a/drivers/gpu/drm/i915/i915_gem_evict.h
-+++ b/drivers/gpu/drm/i915/i915_gem_evict.h
-@@ -11,7 +11,6 @@
- struct drm_mm_node;
- struct i915_address_space;
- struct i915_gem_ww_ctx;
--struct drm_i915_gem_object;
-
- int __must_check i915_gem_evict_something(struct i915_address_space *vm,
- struct i915_gem_ww_ctx *ww,
-@@ -24,7 +23,6 @@ int __must_check i915_gem_evict_for_node(struct i915_address_space *vm,
- struct drm_mm_node *node,
- unsigned int flags);
- int i915_gem_evict_vm(struct i915_address_space *vm,
-- struct i915_gem_ww_ctx *ww,
-- struct drm_i915_gem_object **busy_bo);
-+ struct i915_gem_ww_ctx *ww);
-
- #endif /* __I915_GEM_EVICT_H__ */
-diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
-index c8ad8f37e5cfe2..0fd46ba8954963 100644
---- a/drivers/gpu/drm/i915/i915_vma.c
-+++ b/drivers/gpu/drm/i915/i915_vma.c
-@@ -1569,7 +1569,7 @@ static int __i915_ggtt_pin(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
- * locked objects when called from execbuf when pinning
- * is removed. This would probably regress badly.
- */
-- i915_gem_evict_vm(vm, NULL, NULL);
-+ i915_gem_evict_vm(vm, NULL);
- mutex_unlock(&vm->mutex);
- }
- } while (1);
-diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
-index 37068542aafe7f..8c6517d29b8e0c 100644
---- a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
-+++ b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
-@@ -344,7 +344,7 @@ static int igt_evict_vm(void *arg)
-
- /* Everything is pinned, nothing should happen */
- mutex_lock(&ggtt->vm.mutex);
-- err = i915_gem_evict_vm(&ggtt->vm, NULL, NULL);
-+ err = i915_gem_evict_vm(&ggtt->vm, NULL);
- mutex_unlock(&ggtt->vm.mutex);
- if (err) {
- pr_err("i915_gem_evict_vm on a full GGTT returned err=%d]\n",
-@@ -356,7 +356,7 @@ static int igt_evict_vm(void *arg)
-
- for_i915_gem_ww(&ww, err, false) {
- mutex_lock(&ggtt->vm.mutex);
-- err = i915_gem_evict_vm(&ggtt->vm, &ww, NULL);
-+ err = i915_gem_evict_vm(&ggtt->vm, &ww);
- mutex_unlock(&ggtt->vm.mutex);
- }
-