Lines Matching defs:node

19 node_to_request(const struct i915_sched_node *node)
21 return container_of(node, const struct i915_request, sched);
24 static inline bool node_started(const struct i915_sched_node *node)
26 return i915_request_started(node_to_request(node));
29 static inline bool node_signaled(const struct i915_sched_node *node)
31 return i915_request_completed(node_to_request(node));
36 return rb_entry(rb, struct i915_priolist, node);
117 rb_link_node(&p->node, rb, parent);
118 rb_insert_color_cached(&p->node, &sched_engine->queue, first);
137 lock_sched_engine(struct i915_sched_node *node,
141 const struct i915_request *rq = node_to_request(node);
163 static void __i915_schedule(struct i915_sched_node *node,
166 const int prio = max(attr->priority, node->attr.priority);
177 if (node_signaled(node))
180 stack.signaler = node;
187 * static void update_priorities(struct i915_sched_node *node, prio) {
188 * list_for_each_entry(dep, &node->signalers_list, signal_link)
190 * queue_request(node);
202 struct i915_sched_node *node = dep->signaler;
205 if (node_started(node))
214 list_for_each_entry(p, &node->signalers_list, signal_link) {
231 if (node->attr.priority == I915_PRIORITY_INVALID) {
232 GEM_BUG_ON(!list_empty(&node->link));
233 node->attr = *attr;
242 sched_engine = node_to_request(node)->engine->sched_engine;
246 sched_engine = lock_sched_engine(node, sched_engine, &cache);
253 node = dep->signaler;
254 sched_engine = lock_sched_engine(node, sched_engine, &cache);
258 if (prio <= node->attr.priority || node_signaled(node))
261 GEM_BUG_ON(node_to_request(node)->engine->sched_engine !=
268 WRITE_ONCE(node->attr.priority, prio);
278 if (list_empty(&node->link))
281 if (i915_request_in_priority_queue(node_to_request(node))) {
286 list_move_tail(&node->link, cache.priolist);
291 sched_engine->kick_backend(node_to_request(node), prio);
304 void i915_sched_node_init(struct i915_sched_node *node)
306 INIT_LIST_HEAD(&node->signalers_list);
307 INIT_LIST_HEAD(&node->waiters_list);
308 INIT_LIST_HEAD(&node->link);
310 i915_sched_node_reinit(node);
313 void i915_sched_node_reinit(struct i915_sched_node *node)
315 node->attr.priority = I915_PRIORITY_INVALID;
316 node->semaphores = 0;
317 node->flags = 0;
319 GEM_BUG_ON(!list_empty(&node->signalers_list));
320 GEM_BUG_ON(!list_empty(&node->waiters_list));
321 GEM_BUG_ON(!list_empty(&node->link));
344 bool __i915_sched_node_add_dependency(struct i915_sched_node *node,
356 dep->waiter = node;
360 list_add_rcu(&dep->signal_link, &node->signalers_list);
364 node->flags |= signal->flags;
373 int i915_sched_node_add_dependency(struct i915_sched_node *node,
383 if (!__i915_sched_node_add_dependency(node, signal, dep,
390 void i915_sched_node_fini(struct i915_sched_node *node)
402 list_for_each_entry_safe(dep, tmp, &node->signalers_list, signal_link) {
409 INIT_LIST_HEAD(&node->signalers_list);
412 list_for_each_entry_safe(dep, tmp, &node->waiters_list, wait_link) {
413 GEM_BUG_ON(dep->signaler != node);
420 INIT_LIST_HEAD(&node->waiters_list);