Module Name: src
Committed By: riastradh
Date: Sun Dec 19 11:58:41 UTC 2021
Modified Files:
src/sys/external/bsd/drm2/dist/drm/i915: i915_request.c
src/sys/external/bsd/drm2/dist/drm/i915/gem: i915_gem_mman.c
i915_gem_object.c
Log Message:
i915: Must unmake vma nodes we have made.
To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 \
src/sys/external/bsd/drm2/dist/drm/i915/i915_request.c
cvs rdiff -u -r1.10 -r1.11 \
src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_mman.c
cvs rdiff -u -r1.5 -r1.6 \
src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_object.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/external/bsd/drm2/dist/drm/i915/i915_request.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/i915_request.c:1.6 src/sys/external/bsd/drm2/dist/drm/i915/i915_request.c:1.7
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_request.c:1.6 Sun Dec 19 11:58:32 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_request.c Sun Dec 19 11:58:41 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_request.c,v 1.6 2021/12/19 11:58:32 riastradh Exp $ */
+/* $NetBSD: i915_request.c,v 1.7 2021/12/19 11:58:41 riastradh Exp $ */
/*
* Copyright © 2008-2015 Intel Corporation
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_request.c,v 1.6 2021/12/19 11:58:32 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_request.c,v 1.7 2021/12/19 11:58:41 riastradh Exp $");
#include <linux/dma-fence-array.h>
#include <linux/irq_work.h>
@@ -1597,15 +1597,18 @@ long i915_request_wait(struct i915_reque
if (dma_fence_add_callback(&rq->fence, &wait.cb, request_wait_wake))
goto out;
spin_lock(rq->fence.lock);
+#define C (i915_request_completed(rq) ? 1 : \
+ (intel_engine_flush_submission(rq->engine), 0))
if (flags & I915_WAIT_INTERRUPTIBLE) {
DRM_SPIN_TIMED_WAIT_UNTIL(timeout, &wait.wq,
rq->fence.lock, timeout,
- i915_request_completed(rq));
+ C);
} else {
DRM_SPIN_TIMED_WAIT_NOINTR_UNTIL(timeout, &wait.wq,
rq->fence.lock, timeout,
- i915_request_completed(rq));
+ C);
}
+#undef C
if (timeout > 0) /* succeeded before timeout */
dma_fence_signal_locked(&rq->fence);
spin_unlock(rq->fence.lock);
Index: src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_mman.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_mman.c:1.10 src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_mman.c:1.11
--- src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_mman.c:1.10 Sun Dec 19 11:58:16 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_mman.c Sun Dec 19 11:58:41 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_gem_mman.c,v 1.10 2021/12/19 11:58:16 riastradh Exp $ */
+/* $NetBSD: i915_gem_mman.c,v 1.11 2021/12/19 11:58:41 riastradh Exp $ */
/*
* SPDX-License-Identifier: MIT
@@ -7,7 +7,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_mman.c,v 1.10 2021/12/19 11:58:16 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_mman.c,v 1.11 2021/12/19 11:58:41 riastradh Exp $");
#include <linux/anon_inodes.h>
#include <linux/mman.h>
@@ -785,8 +785,6 @@ insert_mmo(struct drm_i915_gem_object *o
spin_lock(&obj->mmo.lock);
if (obj->mmo.offsets[mmo->mmap_type]) {
- drm_vma_offset_remove(obj->base.dev->vma_offset_manager,
- &mmo->vma_node);
to_free = mmo;
mmo = obj->mmo.offsets[mmo->mmap_type];
} else {
@@ -794,8 +792,12 @@ insert_mmo(struct drm_i915_gem_object *o
}
spin_unlock(&obj->mmo.lock);
- if (to_free)
+ if (to_free) {
+ drm_vma_offset_remove(obj->base.dev->vma_offset_manager,
+ &to_free->vma_node);
+ drm_vma_node_destroy(&to_free->vma_node);
kfree(to_free);
+ }
return mmo;
#else
Index: src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_object.c
diff -u src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_object.c:1.5 src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_object.c:1.6
--- src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_object.c:1.5 Sun Dec 19 11:37:41 2021
+++ src/sys/external/bsd/drm2/dist/drm/i915/gem/i915_gem_object.c Sun Dec 19 11:58:41 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: i915_gem_object.c,v 1.5 2021/12/19 11:37:41 riastradh Exp $ */
+/* $NetBSD: i915_gem_object.c,v 1.6 2021/12/19 11:58:41 riastradh Exp $ */
/*
* Copyright © 2017 Intel Corporation
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: i915_gem_object.c,v 1.5 2021/12/19 11:37:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: i915_gem_object.c,v 1.6 2021/12/19 11:58:41 riastradh Exp $");
#include <linux/bitmap.h>
#include <linux/sched/mm.h>
@@ -228,6 +228,7 @@ static void __i915_gem_free_objects(stru
continue;
drm_vma_offset_remove(obj->base.dev->vma_offset_manager,
&mmo->vma_node);
+ drm_vma_node_destroy(&mmo->vma_node);
kfree(mmo);
}
memset(obj->mmo.offsets, 0, sizeof(obj->mmo.offsets));