[PATCH v2 5/5] Revert "drm/i915: Release GT resources on driver remove"
Janusz Krzysztofik
janusz.krzysztofik at linux.intel.com
Sun Jun 7 16:57:28 UTC 2020
This reverts commit f681e880dd022336407a7d277c152df85d369ad2.
---
drivers/gpu/drm/i915/gt/intel_gt.c | 38 ++++++++++++++----------------
drivers/gpu/drm/i915/gt/intel_gt.h | 1 +
drivers/gpu/drm/i915/i915_gem.c | 2 ++
3 files changed, 21 insertions(+), 20 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c
index 5829a5b61318..ebc29b6ee86c 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.c
+++ b/drivers/gpu/drm/i915/gt/intel_gt.c
@@ -592,24 +592,6 @@ int intel_gt_init(struct intel_gt *gt)
return err;
}
-static void intel_gt_driver_release(struct intel_gt *gt)
-{
- struct i915_address_space *vm;
- intel_wakeref_t wakeref;
-
- /* Scrub all HW state upon release */
- with_intel_runtime_pm(gt->uncore->rpm, wakeref)
- __intel_gt_reset(gt, ALL_ENGINES);
-
- vm = fetch_and_zero(>->vm);
- if (!GEM_WARN_ON(!vm))
- i915_vm_put(vm);
-
- intel_gt_pm_fini(gt);
- intel_gt_fini_scratch(gt);
- intel_gt_fini_buffer_pool(gt);
-}
-
void intel_gt_driver_remove(struct intel_gt *gt)
{
__intel_gt_disable(gt);
@@ -617,8 +599,6 @@ void intel_gt_driver_remove(struct intel_gt *gt)
intel_uc_driver_remove(>->uc);
intel_engines_release(gt);
-
- intel_gt_driver_release(gt);
}
void intel_gt_driver_unregister(struct intel_gt *gt)
@@ -633,6 +613,24 @@ void intel_gt_driver_unregister(struct intel_gt *gt)
intel_gt_set_wedged(gt);
}
+void intel_gt_driver_release(struct intel_gt *gt)
+{
+ struct i915_address_space *vm;
+ intel_wakeref_t wakeref;
+
+ /* Scrub all HW state upon release */
+ with_intel_runtime_pm(gt->uncore->rpm, wakeref)
+ __intel_gt_reset(gt, ALL_ENGINES);
+
+ vm = fetch_and_zero(>->vm);
+ if (vm) /* FIXME being called twice on error paths :( */
+ i915_vm_put(vm);
+
+ intel_gt_pm_fini(gt);
+ intel_gt_fini_scratch(gt);
+ intel_gt_fini_buffer_pool(gt);
+}
+
void intel_gt_driver_late_release(struct intel_gt *gt)
{
/* We need to wait for inflight RCU frees to release their grip */
diff --git a/drivers/gpu/drm/i915/gt/intel_gt.h b/drivers/gpu/drm/i915/gt/intel_gt.h
index 9d6a88fffcba..4fac043750aa 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt.h
@@ -41,6 +41,7 @@ void intel_gt_driver_register(struct intel_gt *gt);
void intel_gt_driver_unregister(struct intel_gt *gt);
void intel_gt_driver_remove(struct intel_gt *gt);
+void intel_gt_driver_release(struct intel_gt *gt);
void intel_gt_driver_late_release(struct intel_gt *gt);
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 26de1d824d0c..f578b823e2cc 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1247,6 +1247,8 @@ void i915_gem_driver_release(struct drm_i915_private *dev_priv)
{
i915_gem_driver_release__contexts(dev_priv);
+ intel_gt_driver_release(&dev_priv->gt);
+
intel_wa_list_free(&dev_priv->gt_wa_list);
i915_gem_cleanup_userptr(dev_priv);
--
2.21.1
More information about the Intel-gfx-trybot
mailing list