[Intel-gfx] [PATCH v3 3/3] drm/i915: move gen8 irq shifts to intel_lrc.c

Chris Wilson chris at chris-wilson.co.uk
Mon Mar 12 22:03:26 UTC 2018


Quoting Daniele Ceraolo Spurio (2018-03-12 21:51:15)
> @@ -1677,11 +1689,11 @@ static void reset_irq(struct intel_engine_cs *engine)
>          */
>         for (i = 0; i < 2; i++) {
>                 I915_WRITE(GEN8_GT_IIR(gtiir[engine->id]),
> -                          GT_CONTEXT_SWITCH_INTERRUPT << engine->irq_shift);
> +                          GT_CONTEXT_SWITCH_INTERRUPT << irq_shifts[engine->id]);
>                 POSTING_READ(GEN8_GT_IIR(gtiir[engine->id]));
>         }
>         GEM_BUG_ON(I915_READ(GEN8_GT_IIR(gtiir[engine->id])) &
> -                  (GT_CONTEXT_SWITCH_INTERRUPT << engine->irq_shift));
> +                  (GT_CONTEXT_SWITCH_INTERRUPT << irq_shifts[engine->id]));
>  
>         clear_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted);
>  }
> @@ -2114,7 +2126,11 @@ logical_ring_default_vfuncs(struct intel_engine_cs *engine)
>  static inline void
>  logical_ring_default_irqs(struct intel_engine_cs *engine)
>  {
> -       unsigned shift = engine->irq_shift;
> +       unsigned shift = 0;
> +
> +       if (INTEL_GEN(engine->i915) < 11)
> +               shift = irq_shifts[engine->id];
> +
>         engine->irq_enable_mask = GT_RENDER_USER_INTERRUPT << shift;
>         engine->irq_keep_mask = GT_CONTEXT_SWITCH_INTERRUPT << shift;

I think we can safely argue that in reset_irq (for gen8-10) we can just
use engine->irq_keep_mask.

On the one hand, that is orthogonal to this patch; on the other it
greatly simplifies the argument for this patch as then there are no
users of engine->irq_shift left at all.
-Chris


More information about the Intel-gfx mailing list