[Intel-gfx] [PATCH v2] drm/i915: Also perform gpu reset under execlist mode.

Chris Wilson chris at chris-wilson.co.uk
Tue Jul 7 05:00:05 PDT 2015


On Tue, Jul 07, 2015 at 04:23:13AM +0800, Zhi Wang wrote:
> Hi Chris:
> 
> How about this one? :)
> 
> diff --git a/drivers/gpu/drm/i915/i915_dma.c
> b/drivers/gpu/drm/i915/i915_dma.c
> index c5349fa..013039e 100644
> --- a/drivers/gpu/drm/i915/i915_dma.c
> +++ b/drivers/gpu/drm/i915/i915_dma.c
> @@ -1134,6 +1134,21 @@ int i915_driver_unload(struct drm_device *dev)
> 
>         i915_global_gtt_cleanup(dev);
> 
> +       /*
> +        * The only known way to stop the gpu from accessing the hw
> context in
> +        * graphics memory space is to reset it. Do this as the very last
> +        * operation to avoid confusing other code, leading to
> spurious errors.
> +        *
> +        * Besides, we also need to restore HW workload submission mode back
> +        * to default mode when shutdown i915.
> +        *
> +        * It makes i915 module loading/unloading be able to switch between
> +        * different workload submission mode on gen8+. And
> according to B-spec,
> +        * the only way to reset HW workload submission mode to
> default mod is GPU reset.
> +        */
> +       if (INTEL_INFO(dev)->gen >= 5)
> +               intel_gpu_reset(dev);
> +
>         intel_uncore_fini(dev);
>         if (dev_priv->regs != NULL)
>                 pci_iounmap(dev->pdev, dev_priv->regs);
> diff --git a/drivers/gpu/drm/i915/i915_gem_context.c
> b/drivers/gpu/drm/i915/i915_gem_context.c
> index a7e58a8..376ee6b 100644
> --- a/drivers/gpu/drm/i915/i915_gem_context.c
> +++ b/drivers/gpu/drm/i915/i915_gem_context.c
> @@ -373,11 +373,6 @@ void i915_gem_context_fini(struct drm_device *dev)
>         int i;
> 
>         if (dctx->legacy_hw_ctx.rcs_state) {
> -               /* The only known way to stop the gpu from accessing
> the hw context is
> -                * to reset it. Do this as the very last operation
> to avoid confusing
> -                * other code, leading to spurious errors. */
> -               intel_gpu_reset(dev);
> -
>                 /* When default context is created and switched to,
> base object refcount
>                  * will be 2 (+1 from object creation and +1 from
> do_switch()).
>                  * i915_gem_context_fini() will be called after
> gpu_idle() has switched

I'd be happy to r-b that. Having a verbose comment explaining why we put
the shotgun to our head is definitely required, thanks.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list