[Intel-gfx] [PATCH v3 1/2] drm/i915/uc: Start preparing GuC/HuC for reset

Michal Wajdeczko michal.wajdeczko at intel.com
Thu Mar 8 10:06:29 UTC 2018


On Thu, 08 Mar 2018 06:47:35 +0100, Sagar Arun Kamble  
<sagar.a.kamble at intel.com> wrote:

>
>
> On 3/5/2018 8:13 PM, Chris Wilson wrote:
>> Quoting Michal Wajdeczko (2018-03-05 14:29:16)
>>> Right after GPU reset there will be a small window of time during which
>>> some of GuC/HuC fields will still show state before reset. Let's start
>>> to fix that by sanitizing firmware status as we will use it shortly.
>>>
>>> v2: s/reset_prepare/prepare_to_reset (Michel)
>>>      don't forget about gem_sanitize path (Daniele)
>>> v3: rebased
>>>
>>> Suggested-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
>>> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>>> Cc: Sagar Arun Kamble <sagar.a.kamble at intel.com>
>>> Cc: Chris Wilson <chris at chris-wilson.co.uk>
>>> Cc: Michel Thierry <michel.thierry at intel.com>
>>> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>>> ---
>>>   drivers/gpu/drm/i915/i915_gem.c    |  5 ++++-
>>>   drivers/gpu/drm/i915/intel_guc.h   |  5 +++++
>>>   drivers/gpu/drm/i915/intel_huc.h   |  5 +++++
>>>   drivers/gpu/drm/i915/intel_uc.c    | 14 ++++++++++++++
>>>   drivers/gpu/drm/i915/intel_uc.h    |  1 +
>>>   drivers/gpu/drm/i915/intel_uc_fw.h |  6 ++++++
>>>   6 files changed, 35 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/i915_gem.c  
>>> b/drivers/gpu/drm/i915/i915_gem.c
>>> index a5bd073..aedb17d 100644
>>> --- a/drivers/gpu/drm/i915/i915_gem.c
>>> +++ b/drivers/gpu/drm/i915/i915_gem.c
>>> @@ -2981,6 +2981,7 @@ int i915_gem_reset_prepare(struct  
>>> drm_i915_private *dev_priv)
>>>          }
>>>            i915_gem_revoke_fences(dev_priv);
>>> +       intel_uc_prepare_to_reset(dev_priv);
>>>            return err;
>>>   }
>>> @@ -4882,8 +4883,10 @@ void i915_gem_sanitize(struct drm_i915_private  
>>> *i915)
>>>           * it may impact the display and we are uncertain about the  
>>> stability
>>>           * of the reset, so this could be applied to even earlier gen.
>>>           */
>>> -       if (INTEL_GEN(i915) >= 5 && intel_has_gpu_reset(i915))
>>> +       if (INTEL_GEN(i915) >= 5 && intel_has_gpu_reset(i915)) {
>>> +               intel_uc_prepare_to_reset(i915);
>>>                  WARN_ON(intel_gpu_reset(i915, ALL_ENGINES));
>> This still feels wrong. If we accept that we will have to reload the fw
>> on resume, why are we not just sanitzing the uc state and forcing the
>> reload?
> Hi Chris,
>
> intel_uc_prepare_to_reset() is sanitizing uc state and reload is  
> happening through gem_init_hw in resume path.
> what are we missing?

Maybe to make everyone happy, I'll introduce intel_uc_sanitize()
leaving to doubt how we will handle reset/suspend/resume scenarios.
And then uc_resume will likely be nop as we will do full reload on
gem_init_hw.

/Michal


More information about the Intel-gfx mailing list