tasklet_disable(&engine->irq_tasklet);
                tasklet_kill(&engine->irq_tasklet);
 
+               if (engine->irq_seqno_barrier)
+                       engine->irq_seqno_barrier(engine);
+
                if (engine_stalled(engine)) {
                        request = i915_gem_find_active_request(engine);
                        if (request && request->fence.error == -EIO)
 {
        struct drm_i915_gem_request *request;
 
-       if (engine->irq_seqno_barrier)
-               engine->irq_seqno_barrier(engine);
-
        request = i915_gem_find_active_request(engine);
        if (request && i915_gem_reset_request(request)) {
                DRM_DEBUG_DRIVER("resetting %s to restart from tail of request 0x%x\n",