[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