After using direct submission from the irq handler, it is very likely that the ENGINE_IRQ_EXECLISTS bit is unset and so we do not need to test it first. It also follows that we then want to do a direct submission evertime the irq_posted bit is set, and can use that as our boolean rather than a separate local. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/i915_irq.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c index e1b3a7575fe7..034c603867e6 100644 --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -1459,31 +1459,21 @@ static void snb_gt_irq_handler(struct drm_i915_private *dev_priv, ivybridge_parity_error_irq_handler(dev_priv, gt_iir); } -static void -gen8_cs_irq_handler(struct intel_engine_cs *engine, u32 iir) +static void gen8_cs_irq_handler(struct intel_engine_cs *engine, u32 iir) { struct intel_engine_execlists * const execlists = &engine->execlists; - bool tasklet = false; if (iir & GT_CONTEXT_SWITCH_INTERRUPT && READ_ONCE(execlists->active)) - tasklet = !test_and_set_bit(ENGINE_IRQ_EXECLIST, - &engine->irq_posted); + set_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted); if (iir & GT_RENDER_USER_INTERRUPT) { + if (USES_GUC_SUBMISSION(engine->i915)) + set_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted); + notify_ring(engine); - /* - * notify_ring() may trigger direct submission onto this - * engine, clearing the ENGINE_IRQ_EXECLIST bit. In that - * case, we don't want to resubmit and so clear the tasklet - * boolean. GuC never sets the ENGINE_IRQ_EXECLIST bit and - * so when using the GuC this equates to an unconditional - * setting of tasklet to true. - */ - if (!test_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted)) - tasklet = USES_GUC_SUBMISSION(engine->i915); } - if (tasklet) + if (engine && test_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted)) i915_tasklet(&execlists->tasklet); } -- 2.17.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx