[PATCH v2 5/5] Revert "drm/i915: Drop user contexts on driver remove"

Janusz Krzysztofik janusz.krzysztofik at linux.intel.com
Sun Jun 7 18:25:08 UTC 2020


This reverts commit 4a9767354d4227be60df06a33b8bad37a2d5de88.
---
 drivers/gpu/drm/i915/gem/i915_gem_context.c | 37 +++++----------------
 drivers/gpu/drm/i915/gem/i915_gem_context.h |  1 -
 drivers/gpu/drm/i915/i915_gem.c             |  3 --
 3 files changed, 8 insertions(+), 33 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
index 7203adfb2973..f5d59d18cd5b 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
@@ -927,33 +927,6 @@ void i915_gem_driver_release__contexts(struct drm_i915_private *i915)
 	rcu_barrier(); /* and flush the left over RCU frees */
 }
 
-static void remove_file_contexts(struct drm_i915_file_private *file_priv)
-{
-	struct i915_address_space *vm;
-	struct i915_gem_context *ctx;
-	unsigned long idx;
-
-	xa_for_each(&file_priv->context_xa, idx, ctx) {
-		xa_erase(&file_priv->context_xa, idx);
-		context_close(ctx);
-	}
-
-	xa_for_each(&file_priv->vm_xa, idx, vm) {
-		xa_erase(&file_priv->vm_xa, idx);
-		i915_vm_put(vm);
-	}
-}
-
-void i915_gem_driver_remove__contexts(struct drm_i915_private *i915)
-{
-	struct drm_file *file_priv, *fn;
-
-	list_for_each_entry_safe(file_priv, fn, &i915->drm.filelist, lhead)
-		remove_file_contexts(file_priv->driver_priv);
-
-	i915_gem_driver_release__contexts(i915);
-}
-
 static int gem_context_register(struct i915_gem_context *ctx,
 				struct drm_i915_file_private *fpriv,
 				u32 *id)
@@ -1019,10 +992,16 @@ void i915_gem_context_close(struct drm_file *file)
 {
 	struct drm_i915_file_private *file_priv = file->driver_priv;
 	struct drm_i915_private *i915 = file_priv->dev_priv;
+	struct i915_address_space *vm;
+	struct i915_gem_context *ctx;
+	unsigned long idx;
 
-	remove_file_contexts(file_priv);
-
+	xa_for_each(&file_priv->context_xa, idx, ctx)
+		context_close(ctx);
 	xa_destroy(&file_priv->context_xa);
+
+	xa_for_each(&file_priv->vm_xa, idx, vm)
+		i915_vm_put(vm);
 	xa_destroy(&file_priv->vm_xa);
 
 	contexts_flush_free(&i915->gem.contexts);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.h b/drivers/gpu/drm/i915/gem/i915_gem_context.h
index 62808bea9239..3702b2fb27ab 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_context.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_context.h
@@ -110,7 +110,6 @@ i915_gem_context_clear_user_engines(struct i915_gem_context *ctx)
 
 /* i915_gem_context.c */
 void i915_gem_init__contexts(struct drm_i915_private *i915);
-void i915_gem_driver_remove__contexts(struct drm_i915_private *i915);
 void i915_gem_driver_release__contexts(struct drm_i915_private *i915);
 
 int i915_gem_context_open(struct drm_i915_private *i915,
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 26de1d824d0c..4ef88d715a19 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1229,9 +1229,6 @@ void i915_gem_driver_remove(struct drm_i915_private *dev_priv)
 	intel_wakeref_auto_fini(&dev_priv->ggtt.userfault_wakeref);
 
 	i915_gem_suspend_late(dev_priv);
-
-	i915_gem_driver_remove__contexts(dev_priv);
-
 	intel_gt_driver_remove(&dev_priv->gt);
 	dev_priv->uabi_engines = RB_ROOT;
 
-- 
2.21.1



More information about the Intel-gfx-trybot mailing list