i915_gem_object_retire__read(obj, engine->id);
        }
 
+       /* Mark all pending requests as complete so that any concurrent
+        * (lockless) lookup doesn't try and wait upon the request as we
+        * reset it.
+        */
+       intel_ring_init_seqno(engine, engine->last_submitted_seqno);
+
        /*
         * Clear the execlists queue up before freeing the requests, as those
         * are the ones that keep the context and ringbuffer backing objects
                intel_ring_update_space(buffer);
        }
 
-       intel_ring_init_seqno(engine, engine->last_submitted_seqno);
-
        engine->i915->gt.active_engines &= ~intel_engine_flag(engine);
 }