[Intel-gfx] [PATCH] drm/i915: Use GEM suspend when aborting initialisation

Michał Winiarski michal.winiarski at intel.com
Thu Jun 7 07:39:39 UTC 2018


On Wed, Jun 06, 2018 at 03:54:41PM +0100, Chris Wilson wrote:
> As part of our GEM initialisation now, we send a request to the hardware
> in order to record the initial GPU state. This coupled with deferred
> idle workers, makes aborting on error tricky. We already have the
> mechanism in place to wait on the GPU and cancel all the deferred
> workers for suspend, so let's reuse it during the error teardown. It is
> already used in places for later init error handling, but doing so at
> this point is slightly ugly due to the mutex dance (it's ok, the module
> load is still single threaded).
> 
> Testcase: igt/drv_module_reload/basic-reload-inject
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Michał Winiarski <michal.winiarski at intel.com>

Reviewed-by: Michał Winiarski <michal.winiarski at intel.com>

-Michał

> ---
>  drivers/gpu/drm/i915/i915_gem.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 86f1f9aaa119..1074f47e6cda 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -5514,8 +5514,12 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
>  	 * driver doesn't explode during runtime.
>  	 */
>  err_init_hw:
> -	i915_gem_wait_for_idle(dev_priv, I915_WAIT_LOCKED);
> -	i915_gem_contexts_lost(dev_priv);
> +	mutex_unlock(&dev_priv->drm.struct_mutex);
> +
> +	WARN_ON(i915_gem_suspend(dev_priv));
> +	i915_gem_suspend_late(dev_priv);
> +
> +	mutex_lock(&dev_priv->drm.struct_mutex);
>  	intel_uc_fini_hw(dev_priv);
>  err_uc_init:
>  	intel_uc_fini(dev_priv);
> -- 
> 2.17.1
> 


More information about the Intel-gfx mailing list