[Intel-gfx] [PATCH 03/11] drm/i915/tdr: Update reset_in_progress to account for engine reset

Chris Wilson chris at chris-wilson.co.uk
Tue Jul 26 21:52:42 UTC 2016


On Tue, Jul 26, 2016 at 05:40:49PM +0100, Arun Siluvery wrote:
> Now that we track reset progress using separate set of flags, update it to
> account for engine reset as well.
> 
> A bit corresponding engine->id is set if reset is in progress for that
> engine. Bit0 is for full gpu reset.
> 
> Signed-off-by: Arun Siluvery <arun.siluvery at linux.intel.com>
> ---
>  drivers/gpu/drm/i915/i915_drv.h | 16 +++++++++++++++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 11436e7..125fafa 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1403,6 +1403,8 @@ struct i915_gpu_error {
>  #define I915_RESET_IN_PROGRESS	0
>  #define I915_WEDGED		(BITS_PER_LONG-1)
>  
> +	unsigned long engine_reset_count[I915_NUM_ENGINES];
> +
>  	/**
>  	 * Waitqueue to signal when a hang is detected. Used to for waiters
>  	 * to release the struct_mutex for the reset to procede.
> @@ -3194,9 +3196,10 @@ i915_gem_find_active_request(struct intel_engine_cs *engine);
>  void i915_gem_retire_requests(struct drm_i915_private *dev_priv);
>  void i915_gem_retire_requests_ring(struct intel_engine_cs *engine);
>  
> +/* indicates the progress of engine reset or full gpu reset */
>  static inline bool i915_reset_in_progress(struct i915_gpu_error *error)
>  {
> -	return test_bit(I915_RESET_IN_PROGRESS, &error->flags);
> +	return unlikely(READ_ONCE(error->flags) & ~BIT(I915_WEDGED));
>  }
>  
>  static inline bool i915_terminally_wedged(struct i915_gpu_error *error)
> @@ -3214,6 +3217,17 @@ static inline u32 i915_reset_count(struct i915_gpu_error *error)
>  	return READ_ONCE(error->reset_count);
>  }
>  
> +static inline bool i915_full_gpu_reset_in_progress(struct i915_gpu_error *error)
> +{
> +	return test_bit(I915_RESET_IN_PROGRESS, &error->flags);
> +}
> +
> +static inline bool i915_engine_reset_in_progress(struct i915_gpu_error *error,
> +						 struct intel_engine_cs *engine)
> +{
> +	return test_bit(engine->id + 1, &error->flags);
> +}

?

A totally unexplained change. If it is because you think to want to break
waiters on struct_mutex, try again.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre


More information about the Intel-gfx mailing list