[PATCH 1/6] drm/i915/guc: Update ggtt invalidate function prior to reset/suspend

Kamble, Sagar A sagar.a.kamble at intel.com
Wed Aug 2 13:58:41 UTC 2017



-----Original Message-----
From: Chris Wilson [mailto:chris at chris-wilson.co.uk] 
Sent: Wednesday, August 2, 2017 7:19 PM
To: Kamble, Sagar A <sagar.a.kamble at intel.com>; Intel-gfx-trybot at lists.freedesktop.org
Cc: Kamble, Sagar A <sagar.a.kamble at intel.com>; Wajdeczko, Michal <Michal.Wajdeczko at intel.com>; Ceraolo Spurio, Daniele <daniele.ceraolospurio at intel.com>; Sarvela, Tomi P <tomi.p.sarvela at intel.com>
Subject: Re: [PATCH 1/6] drm/i915/guc: Update ggtt invalidate function prior to reset/suspend

Quoting Sagar Arun Kamble (2017-08-02 14:29:22)
> drv_hangman at error-state-basic and gem_exec_suspend at basic-s3 caught 
> below kernel bug with GuC.
> 
> kernel BUG at drivers/gpu/drm/i915/i915_gem_gtt.c:3086!
> GEM_BUG_ON(i915->ggtt.invalidate != gen6_ggtt_invalidate);
> 
> This was happening since ggtt_disable_guc was not done prior to reset 
> and suspend.
> 
> Cc: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
> Cc: Tomi Sarvela <tomi.p.sarvela at intel.com>
> Signed-off-by: Sagar Arun Kamble <sagar.a.kamble at intel.com>
> ---
>  drivers/gpu/drm/i915/i915_gem.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_gem.c 
> b/drivers/gpu/drm/i915/i915_gem.c index 000a764..a1c450e 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -2984,6 +2984,9 @@ void i915_gem_reset(struct drm_i915_private *dev_priv)
>                 if (INTEL_GEN(dev_priv) >= 6)
>                         gen6_rps_busy(dev_priv);
>         }
> +
> +       if (i915.enable_guc_loading)
> +               i915_ggtt_disable_guc(dev_priv);

Missing intel_guc_reset() ?

<Sagar> intel_guc_reset is currently managing only hw reset. Ordering of that with ggtt_enable setup is broken. Will have to create guc_interface_reset routine.

>  }
>  
>  void i915_gem_reset_finish_engine(struct intel_engine_cs *engine) @@ 
> -4557,6 +4560,9 @@ int i915_gem_suspend(struct drm_i915_private 
> *dev_priv)
>  
>         intel_guc_suspend(dev_priv);
>  
> +       if (i915.enable_guc_loading)
> +               i915_ggtt_disable_guc(dev_priv);
> +

Then why not part of intel_guc_suspend() ?
-Chris

<Sagar> intel_guc_suspend is being done from RPM path too where we need not change the ggtt_enable setup.
Latest trybot result show ggtt_enable ordering issue in driver_unload now as, unload path does gem_suspend and then touches GuC teardown.
Will need to fix that.


More information about the Intel-gfx-trybot mailing list