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));