Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Auld <matthew.auld@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: Andrzej Hajda <andrzej.hajda@intel.com>,
	Rodrigo Vivi <rodrigo.vivi@intel.com>
Subject: [PATCH 05/20] drm/xe/ggtt: use drm_dev_enter to mark device section
Date: Fri, 10 May 2024 19:12:18 +0100	[thread overview]
Message-ID: <20240510181212.264622-27-matthew.auld@intel.com> (raw)
In-Reply-To: <20240510181212.264622-22-matthew.auld@intel.com>

Device can be hotunplugged before we start destroying gem objects. In
such a case don't touch the GGTT entries, trigger any invalidations or
mess around with rpm.  This should already be taken care of when
removing the device, we just need to take care of dealing with the
software state, like removing the mm node.

v2: (Andrzej)
  - Avoid some duplication by tracking the bound status and checking
    that instead.

References: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/1717
Signed-off-by: Matthew Auld <matthew.auld@intel.com>
Cc: Andrzej Hajda <andrzej.hajda@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
 drivers/gpu/drm/xe/xe_ggtt.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_ggtt.c b/drivers/gpu/drm/xe/xe_ggtt.c
index 0d541f55b4fc..17e5066763db 100644
--- a/drivers/gpu/drm/xe/xe_ggtt.c
+++ b/drivers/gpu/drm/xe/xe_ggtt.c
@@ -8,6 +8,7 @@
 #include <linux/io-64-nonatomic-lo-hi.h>
 #include <linux/sizes.h>
 
+#include <drm/drm_drv.h>
 #include <drm/drm_managed.h>
 #include <drm/i915_drm.h>
 
@@ -433,18 +434,29 @@ int xe_ggtt_insert_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
 void xe_ggtt_remove_node(struct xe_ggtt *ggtt, struct drm_mm_node *node,
 			 bool invalidate)
 {
-	xe_pm_runtime_get_noresume(tile_to_xe(ggtt->tile));
+	struct xe_device *xe = tile_to_xe(ggtt->tile);
+	bool bound;
+	int idx;
+
+	bound = drm_dev_enter(&xe->drm, &idx);
+	if (bound)
+		xe_pm_runtime_get_noresume(xe);
 
 	mutex_lock(&ggtt->lock);
-	xe_ggtt_clear(ggtt, node->start, node->size);
+	if (bound)
+		xe_ggtt_clear(ggtt, node->start, node->size);
 	drm_mm_remove_node(node);
 	node->size = 0;
 	mutex_unlock(&ggtt->lock);
 
+	if (!bound)
+		return;
+
 	if (invalidate)
 		xe_ggtt_invalidate(ggtt);
 
-	xe_pm_runtime_put(tile_to_xe(ggtt->tile));
+	xe_pm_runtime_put(xe);
+	drm_dev_exit(idx);
 }
 
 void xe_ggtt_remove_bo(struct xe_ggtt *ggtt, struct xe_bo *bo)
-- 
2.45.0


  parent reply	other threads:[~2024-05-10 18:12 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-10 18:12 [PATCH 00/20] core_hotunplug improvements Matthew Auld
2024-05-10 18:12 ` [PATCH 01/20] drm/drm_managed: try to improve the drmm DOC Matthew Auld
2024-05-13  7:06   ` Andrzej Hajda
2024-05-13 15:38   ` Rodrigo Vivi
2024-05-10 18:12 ` [PATCH 02/20] drm/amdgpu: don't trample pdev drvdata Matthew Auld
2024-05-13 11:54   ` Christian König
2024-05-10 18:12 ` [PATCH 03/20] drm/xe/pci: remove broken driver_release Matthew Auld
2024-05-13  7:14   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 04/20] drm/xe: covert sysfs over to devm Matthew Auld
2024-05-10 18:12 ` Matthew Auld [this message]
2024-05-13  7:16   ` [PATCH 05/20] drm/xe/ggtt: use drm_dev_enter to mark device section Andrzej Hajda
2024-05-13 19:34   ` Randhawa, Jagmeet
2024-05-10 18:12 ` [PATCH 06/20] drm/xe/guc: move guc_fini over to devm Matthew Auld
2024-05-10 18:12 ` [PATCH 07/20] drm/xe/guc: s/guc_fini/guc_fini_hw/ Matthew Auld
2024-05-13  7:30   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 08/20] drm/xe/guc_pc: move pc_fini to devm Matthew Auld
2024-05-10 18:12 ` [PATCH 09/20] drm/xe/guc_pc: s/pc_fini/pc_fini_hw/ Matthew Auld
2024-05-11  9:19   ` kernel test robot
2024-05-13  7:37   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 10/20] drm/xe/irq: move irq_uninstall over to devm Matthew Auld
2024-05-10 18:12 ` [PATCH 11/20] drm/xe/device: move flr " Matthew Auld
2024-05-10 18:12 ` [PATCH 12/20] drm/xe/device: move xe_device_sanitize over " Matthew Auld
2024-05-10 18:12 ` [PATCH 13/20] drm/xe/coredump: move " Matthew Auld
2024-05-13  7:38   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 14/20] drm/xe/gt: break out gt_fini into sw vs hw state Matthew Auld
2024-05-13  7:50   ` Andrzej Hajda
2024-05-13  8:37     ` Matthew Auld
2024-05-13  9:19       ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 15/20] drm/xe: make gt_remove use devm Matthew Auld
2024-05-13  7:58   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 16/20] drm/xe/mmio: move mmio_fini over to devm Matthew Auld
2024-05-13  8:00   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 17/20] drm/xe: reset mmio mappings with devm Matthew Auld
2024-05-13  8:12   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 18/20] drm/xe/display: move display fini stuff to devm Matthew Auld
2024-05-13  8:13   ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 19/20] drm/xe/display: stop calling domains_driver_remove twice Matthew Auld
2024-05-13  8:19   ` Andrzej Hajda
2024-05-13  8:27     ` Matthew Auld
2024-05-13  9:17       ` Andrzej Hajda
2024-05-10 18:12 ` [PATCH 20/20] drm/xe/display: move device_remove over to drmm Matthew Auld
2024-05-11 10:33   ` kernel test robot
2024-05-11 10:43   ` kernel test robot
2024-05-13  8:22   ` Andrzej Hajda
2024-05-10 18:17 ` ✓ CI.Patch_applied: success for core_hotunplug improvements Patchwork
2024-05-10 18:18 ` ✗ CI.checkpatch: warning " Patchwork
2024-05-10 18:18 ` ✗ CI.KUnit: 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=20240510181212.264622-27-matthew.auld@intel.com \
    --to=matthew.auld@intel.com \
    --cc=andrzej.hajda@intel.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=rodrigo.vivi@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox