On 17/07/2019 08:46, Chris Wilson wrote:
> Remove the outer layer cleanup of engine stubs; it no longer tries to

Who is "it"?

> preallocate and so is not responsible for either the allocation or free.
> By the time we call the cleanup function, we already have cleaned up the
> engines.

I see:

i915_driver_probe
{
...
        ret = i915_driver_early_probe(dev_priv);
...
        i915_driver_mmio_probe -> intel_engines_init_mmio -> allocates engines
...
        <later step fails> -> who frees the engines?
}

Regards,

Tvrtko

> 
> Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
> ---
>   drivers/gpu/drm/i915/i915_drv.c | 14 +-------------
>   1 file changed, 1 insertion(+), 13 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 7c209743e478..e1d62ba30612 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -848,15 +848,6 @@ static int i915_workqueues_init(struct drm_i915_private 
> *dev_priv)
>       return -ENOMEM;
>   }
>   
> -static void i915_engines_cleanup(struct drm_i915_private *i915)
> -{
> -     struct intel_engine_cs *engine;
> -     enum intel_engine_id id;
> -
> -     for_each_engine(engine, i915, id)
> -             kfree(engine);
> -}
> -
>   static void i915_workqueues_cleanup(struct drm_i915_private *dev_priv)
>   {
>       destroy_workqueue(dev_priv->hotplug.dp_wq);
> @@ -928,7 +919,7 @@ static int i915_driver_early_probe(struct 
> drm_i915_private *dev_priv)
>   
>       ret = i915_workqueues_init(dev_priv);
>       if (ret < 0)
> -             goto err_engines;
> +             return ret;
>   
>       intel_gt_init_early(&dev_priv->gt, dev_priv);
>   
> @@ -961,8 +952,6 @@ static int i915_driver_early_probe(struct 
> drm_i915_private *dev_priv)
>       i915_gem_cleanup_early(dev_priv);
>   err_workqueues:
>       i915_workqueues_cleanup(dev_priv);
> -err_engines:
> -     i915_engines_cleanup(dev_priv);
>       return ret;
>   }
>   
> @@ -978,7 +967,6 @@ static void i915_driver_late_release(struct 
> drm_i915_private *dev_priv)
>       intel_uc_cleanup_early(&dev_priv->gt.uc);
>       i915_gem_cleanup_early(dev_priv);
>       i915_workqueues_cleanup(dev_priv);
> -     i915_engines_cleanup(dev_priv);
>   
>       pm_qos_remove_request(&dev_priv->sb_qos);
>       mutex_destroy(&dev_priv->sb_lock);
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to