[Intel-gfx] [PATCH] drm/i915: Assert we idle in the kernel context
Mika Kuoppala
mika.kuoppala at linux.intel.com
Fri Jun 1 09:13:12 UTC 2018
Chris Wilson <chris at chris-wilson.co.uk> writes:
> Now that we always switch to the kernel context upon idling, we can
> make that assertion.
>
> References: 4dfacb0bcbee ("drm/i915: Switch to kernel context before idling at runtime")
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_gem.c | 31 ++++++++++++++++++-------------
> 1 file changed, 18 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index f5c4ef052001..66bb81cd43cd 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -3498,6 +3498,22 @@ new_requests_since_last_retire(const struct drm_i915_private *i915)
> work_pending(&i915->gt.idle_work.work));
> }
>
> +static void assert_kernel_context_is_current(struct drm_i915_private *i915)
> +{
> + struct intel_engine_cs *engine;
> + enum intel_engine_id id;
> +
> + if (i915_terminally_wedged(&i915->gpu_error))
> + return;
> +
> + GEM_BUG_ON(i915->gt.active_requests);
> + for_each_engine(engine, i915, id) {
> + GEM_BUG_ON(__i915_gem_active_peek(&engine->timeline.last_request));
> + GEM_BUG_ON(engine->last_retired_context !=
> + to_intel_context(i915->kernel_context, engine));
> + }
> +}
> +
> static void
> i915_gem_idle_work_handler(struct work_struct *work)
> {
> @@ -3558,6 +3574,8 @@ i915_gem_idle_work_handler(struct work_struct *work)
> if (new_requests_since_last_retire(dev_priv))
> goto out_unlock;
>
> + assert_kernel_context_is_current(dev_priv);
> +
> epoch = __i915_gem_park(dev_priv);
>
> rearm_hangcheck = false;
> @@ -4944,19 +4962,6 @@ void __i915_gem_object_release_unless_active(struct drm_i915_gem_object *obj)
> i915_gem_object_put(obj);
> }
>
> -static void assert_kernel_context_is_current(struct drm_i915_private *i915)
> -{
> - struct i915_gem_context *kctx = i915->kernel_context;
> - struct intel_engine_cs *engine;
> - enum intel_engine_id id;
> -
> - GEM_BUG_ON(i915->gt.active_requests);
> - for_each_engine(engine, i915, id) {
> - GEM_BUG_ON(__i915_gem_active_peek(&engine->timeline.last_request));
> - GEM_BUG_ON(engine->last_retired_context->gem_context != kctx);
> - }
> -}
> -
> void i915_gem_sanitize(struct drm_i915_private *i915)
> {
> struct intel_engine_cs *engine;
> --
> 2.17.1
More information about the Intel-gfx
mailing list