All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Auld <matthew.auld@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Subject: [PATCH v3 8/8] drm/i915: Require object lock when freeing pages during destruction
Date: Fri, 29 Oct 2021 11:40:26 +0100	[thread overview]
Message-ID: <20211029104026.3472621-8-matthew.auld@intel.com> (raw)
In-Reply-To: <20211029104026.3472621-1-matthew.auld@intel.com>

From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

TTM already requires this, and we require it for delayed destroy.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_object.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c
index 55b0f1df3192..6e5412e2b5ad 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c
@@ -257,6 +257,8 @@ static void __i915_gem_object_free_mmaps(struct drm_i915_gem_object *obj)
  */
 void __i915_gem_object_pages_fini(struct drm_i915_gem_object *obj)
 {
+	assert_object_held(obj);
+
 	if (!list_empty(&obj->vma.list)) {
 		struct i915_vma *vma;
 
@@ -323,7 +325,10 @@ static void __i915_gem_free_objects(struct drm_i915_private *i915,
 			obj->ops->delayed_free(obj);
 			continue;
 		}
+
+		i915_gem_object_lock(obj, NULL);
 		__i915_gem_object_pages_fini(obj);
+		i915_gem_object_unlock(obj);
 		__i915_gem_free_object(obj);
 
 		/* But keep the pointer alive for RCU-protected lookups */
-- 
2.26.3


WARNING: multiple messages have this Message-ID (diff)
From: Matthew Auld <matthew.auld@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Subject: [Intel-gfx] [PATCH v3 8/8] drm/i915: Require object lock when freeing pages during destruction
Date: Fri, 29 Oct 2021 11:40:26 +0100	[thread overview]
Message-ID: <20211029104026.3472621-8-matthew.auld@intel.com> (raw)
In-Reply-To: <20211029104026.3472621-1-matthew.auld@intel.com>

From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

TTM already requires this, and we require it for delayed destroy.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
---
 drivers/gpu/drm/i915/gem/i915_gem_object.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c b/drivers/gpu/drm/i915/gem/i915_gem_object.c
index 55b0f1df3192..6e5412e2b5ad 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c
@@ -257,6 +257,8 @@ static void __i915_gem_object_free_mmaps(struct drm_i915_gem_object *obj)
  */
 void __i915_gem_object_pages_fini(struct drm_i915_gem_object *obj)
 {
+	assert_object_held(obj);
+
 	if (!list_empty(&obj->vma.list)) {
 		struct i915_vma *vma;
 
@@ -323,7 +325,10 @@ static void __i915_gem_free_objects(struct drm_i915_private *i915,
 			obj->ops->delayed_free(obj);
 			continue;
 		}
+
+		i915_gem_object_lock(obj, NULL);
 		__i915_gem_object_pages_fini(obj);
+		i915_gem_object_unlock(obj);
 		__i915_gem_free_object(obj);
 
 		/* But keep the pointer alive for RCU-protected lookups */
-- 
2.26.3


  parent reply	other threads:[~2021-10-29 10:41 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-29 10:40 [PATCH v3 1/8] drm/i915: Remove gen6_ppgtt_unpin_all Matthew Auld
2021-10-29 10:40 ` [Intel-gfx] " Matthew Auld
2021-10-29 10:40 ` [PATCH v3 2/8] drm/i915: Create a dummy object for gen6 ppgtt Matthew Auld
2021-10-29 10:40   ` [Intel-gfx] " Matthew Auld
2021-10-29 10:40 ` [PATCH v3 3/8] drm/i915: Create a full object for mock_ring, v2 Matthew Auld
2021-10-29 10:40   ` [Intel-gfx] " Matthew Auld
2021-10-29 10:40 ` [PATCH v3 4/8] drm/i915: vma is always backed by an object Matthew Auld
2021-10-29 10:40   ` [Intel-gfx] " Matthew Auld
2021-10-29 10:40 ` [PATCH v3 5/8] drm/i915: Remove resv from i915_vma Matthew Auld
2021-10-29 10:40   ` [Intel-gfx] " Matthew Auld
2021-10-29 10:40 ` [PATCH v3 6/8] drm/i915: Rework context handling in hugepages selftests Matthew Auld
2021-10-29 10:40   ` [Intel-gfx] " Matthew Auld
2021-10-29 10:40 ` [PATCH v3 7/8] drm/i915: Drain the ttm delayed workqueue too Matthew Auld
2021-10-29 10:40   ` [Intel-gfx] " Matthew Auld
2021-10-29 10:40 ` Matthew Auld [this message]
2021-10-29 10:40   ` [Intel-gfx] [PATCH v3 8/8] drm/i915: Require object lock when freeing pages during destruction Matthew Auld
2021-10-29 12:49 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/8] drm/i915: Remove gen6_ppgtt_unpin_all Patchwork
2021-10-29 12:50 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2021-10-29 13:27 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211029104026.3472621-8-matthew.auld@intel.com \
    --to=matthew.auld@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=maarten.lankhorst@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.