@@ -291,6 +291,19 @@ static void __i915_schedule(struct i915_sched_node *node,
if (prio > READ_ONCE(p->signaler->attr.priority))
list_move_tail(&p->dfs_link, &dfs);
}
+
+ /*
+ * A weak dependency is used for submit-fence, which while
+ * not strongly coupled, we do need to treat as a coordinated
+ * set of co-operating requests that need to be run
+ * concurrently. So if one request of that set receives a
+ * priority boost, they all receive a priority boost.
+ */
+ list_for_each_entry(p, &node->waiters_list, wait_link) {
+ if (p->flags & I915_DEPENDENCY_WEAK &&
+ prio > READ_ONCE(p->waiter->attr.priority))
+ list_move_tail(&p->dfs_link, &dfs);
+ }
}
/*