[Intel-gfx] [PATCH] drm/i915: Clear local engine-needs-reset bit if in progress elsewhere
Michel Thierry
michel.thierry at intel.com
Mon Aug 28 19:41:58 UTC 2017
On 28/08/17 12:25, jeff.mcgee at intel.com wrote:
> From: Jeff McGee <jeff.mcgee at intel.com>
>
> If someone else is resetting the engine we should clear our own bit as
> part of skipping that engine. Otherwise we will later believe that it
> has not been reset successfully and then trigger full gpu reset. If the
> other guy's reset actually fails, he will trigger the full gpu reset.
>
Did you hit this by manually setting wedged to 'x' ring repeatedly?
> Signed-off-by: Jeff McGee <jeff.mcgee at intel.com>
> ---
> drivers/gpu/drm/i915/i915_irq.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 5d391e689070..575d618ccdbf 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -2711,8 +2711,10 @@ void i915_handle_error(struct drm_i915_private *dev_priv,
> for_each_engine_masked(engine, dev_priv, engine_mask, tmp) {
> BUILD_BUG_ON(I915_RESET_MODESET >= I915_RESET_ENGINE);
> if (test_and_set_bit(I915_RESET_ENGINE + engine->id,
> - &dev_priv->gpu_error.flags))
> + &dev_priv->gpu_error.flags)) {
> + engine_mask &= ~intel_engine_flag(engine);
> continue;
> + }
>
> if (i915_reset_engine(engine, 0) == 0)
> engine_mask &= ~intel_engine_flag(engine);
>
Reviewed-by: Michel Thierry <michel.thierry at intel.com>
More information about the Intel-gfx
mailing list