All of lore.kernel.org
 help / color / mirror / Atom feed
From: Michal Wajdeczko <michal.wajdeczko@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH v8 01/12] drm/i915: Park before resetting the submission backend
Date: Mon,  9 Apr 2018 12:23:21 +0000	[thread overview]
Message-ID: <20180409122332.24788-1-michal.wajdeczko@intel.com> (raw)

From: Chris Wilson <chris@chris-wilson.co.uk>

As different backends may have different park/unpark callbacks, we
should only ever switch backends (reset_default_submission on wedge
recovery, or on enabling the guc) while parked.

v2: Remove the assert from the guc code, as we are currently trying to
modify the engine vfuncs pointer on a live system after reset (not just
wedging). We will just have to hope that the system is balanced.
v3: Rebase onto __i915_gem_park and improve grammar.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c        | 15 ++++++++++++---
 drivers/gpu/drm/i915/intel_engine_cs.c |  3 +++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 28ab0be..dd3e292 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -144,8 +144,6 @@ static u32 __i915_gem_park(struct drm_i915_private *i915)
 	if (!i915->gt.awake)
 		return I915_EPOCH_INVALID;
 
-	GEM_BUG_ON(i915->gt.epoch == I915_EPOCH_INVALID);
-
 	/*
 	 * Be paranoid and flush a concurrent interrupt to make sure
 	 * we don't reactivate any irq tasklets after parking.
@@ -173,6 +171,7 @@ static u32 __i915_gem_park(struct drm_i915_private *i915)
 
 	intel_runtime_pm_put(i915);
 
+	GEM_BUG_ON(i915->gt.epoch == I915_EPOCH_INVALID);
 	return i915->gt.epoch;
 }
 
@@ -3435,7 +3434,17 @@ bool i915_gem_unset_wedged(struct drm_i915_private *i915)
 		}
 	}
 	i915_retire_requests(i915);
-	GEM_BUG_ON(i915->gt.active_requests);
+
+	/*
+	 * Park before disengaging the old submit mechanism as different
+	 * backends may have different park/unpack callbacks.
+	 *
+	 * We are idle; the idle-worker will be queued, but we need to run
+	 * it now. As we already hold the struct mutex, we can park the GPU
+	 * right away, letting the lazy worker see that we are already active
+	 * again by the time it acquires the mutex.
+	 */
+	__i915_gem_park(i915);
 
 	/*
 	 * Undo nop_submit_request. We prevent all new i915 requests from
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index 12486d8..b4ea77a 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -1651,6 +1651,9 @@ void intel_engines_reset_default_submission(struct drm_i915_private *i915)
 	struct intel_engine_cs *engine;
 	enum intel_engine_id id;
 
+	/* Must be parked first! */
+	GEM_BUG_ON(i915->gt.awake);
+
 	for_each_engine(engine, i915, id)
 		engine->set_default_submission(engine);
 }
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

             reply	other threads:[~2018-04-09 12:23 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-09 12:23 Michal Wajdeczko [this message]
2018-04-09 12:23 ` [PATCH v8 02/12] drm/i915: Correctly handle error path in i915_gem_init_hw Michal Wajdeczko
2018-04-09 12:23 ` [PATCH v8 03/12] drm/i915: Move i915_gem_fini to i915_gem.c Michal Wajdeczko
2018-04-09 14:50   ` Sagar Arun Kamble
2018-04-09 12:23 ` [PATCH v8 04/12] drm/i915: Introduce i915_gem_fini_hw for symmetry with i915_gem_init_hw Michal Wajdeczko
2018-04-09 15:01   ` Sagar Arun Kamble
2018-04-09 12:23 ` [PATCH v8 05/12] drm/i915: Add i915_gem_fini_hw to i915_gem_suspend Michal Wajdeczko
2018-04-09 15:02   ` Sagar Arun Kamble
2018-04-09 12:23 ` [PATCH v8 06/12] drm/i915: Add i915_gem_fini_hw to i915_reset Michal Wajdeczko
2018-04-09 12:30   ` Chris Wilson
2018-04-09 12:23 ` [PATCH v8 07/12] drm/i915/guc: Restore symmetric doorbell cleanup Michal Wajdeczko
2018-04-09 12:23 ` [PATCH v8 08/12] drm/i915/uc: Fully sanitize uC within intel_uc_fini_hw Michal Wajdeczko
2018-04-09 12:47   ` Chris Wilson
2018-04-09 14:10     ` Michal Wajdeczko
2018-04-09 16:01   ` Sagar Arun Kamble
2018-04-09 12:23 ` [PATCH v8 09/12] drm/i915/uc: Use correct error code for GuC initialization failure Michal Wajdeczko
2018-04-09 12:23 ` [PATCH v8 10/12] drm/i915/uc: Use helper functions to detect fw load status Michal Wajdeczko
2018-04-09 12:23 ` [PATCH v8 11/12] drm/i915/uc: Trivial s/dev_priv/i915 in intel_uc.c Michal Wajdeczko
2018-04-09 12:23 ` [PATCH v8 12/12] HAX: Enable GuC for CI Michal Wajdeczko
2018-04-09 12:51 ` ✓ Fi.CI.BAT: success for series starting with [v8,01/12] drm/i915: Park before resetting the submission backend Patchwork
2018-04-09 15:09 ` ✗ Fi.CI.IGT: failure " Patchwork
2018-04-09 15:32   ` Michal Wajdeczko
2018-04-10  5:32     ` Sagar Arun Kamble
2018-04-10  9:21       ` Chris Wilson

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=20180409122332.24788-1-michal.wajdeczko@intel.com \
    --to=michal.wajdeczko@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /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.