return container_of(node, const struct i915_request, sched);
 }
 
+static inline bool node_started(const struct i915_sched_node *node)
+{
+       return i915_request_started(node_to_request(node));
+}
+
 static inline bool node_signaled(const struct i915_sched_node *node)
 {
        return i915_request_completed(node_to_request(node));
        list_for_each_entry(dep, &dfs, dfs_link) {
                struct i915_sched_node *node = dep->signaler;
 
+               /* If we are already flying, we know we have no signalers */
+               if (node_started(node))
+                       continue;
+
                /*
                 * Within an engine, there can be no cycle, but we may
                 * refer to the same dependency chain multiple times