Lines Matching defs:sched_engine
39 static void assert_priolists(struct i915_sched_engine * const sched_engine)
47 GEM_BUG_ON(rb_first_cached(&sched_engine->queue) !=
48 rb_first(&sched_engine->queue.rb_root));
51 for (rb = rb_first_cached(&sched_engine->queue); rb; rb = rb_next(rb)) {
60 i915_sched_lookup_priolist(struct i915_sched_engine *sched_engine, int prio)
66 lockdep_assert_held(&sched_engine->lock);
67 assert_priolists(sched_engine);
69 if (unlikely(sched_engine->no_priolist))
75 parent = &sched_engine->queue.rb_root.rb_node;
90 p = &sched_engine->default_priolist;
109 sched_engine->no_priolist = true;
118 rb_insert_color_cached(&p->node, &sched_engine->queue, first);
142 struct i915_sched_engine *sched_engine;
152 while (locked != (sched_engine = READ_ONCE(rq->engine)->sched_engine)) {
155 spin_lock(&sched_engine->lock);
156 locked = sched_engine;
159 GEM_BUG_ON(locked != sched_engine);
167 struct i915_sched_engine *sched_engine;
242 sched_engine = node_to_request(node)->engine->sched_engine;
243 spin_lock(&sched_engine->lock);
246 sched_engine = lock_sched_engine(node, sched_engine, &cache);
254 sched_engine = lock_sched_engine(node, sched_engine, &cache);
255 lockdep_assert_held(&sched_engine->lock);
261 GEM_BUG_ON(node_to_request(node)->engine->sched_engine !=
262 sched_engine);
265 if (sched_engine->bump_inflight_request_prio)
266 sched_engine->bump_inflight_request_prio(from, prio);
284 i915_sched_lookup_priolist(sched_engine,
290 if (sched_engine->kick_backend)
291 sched_engine->kick_backend(node_to_request(node), prio);
294 spin_unlock(&sched_engine->lock);
455 struct i915_sched_engine *sched_engine =
456 container_of(kref, typeof(*sched_engine), ref);
458 tasklet_kill(&sched_engine->tasklet); /* flush the callback */
459 kfree(sched_engine);
462 static bool default_disabled(struct i915_sched_engine *sched_engine)
470 struct i915_sched_engine *sched_engine;
472 sched_engine = kzalloc(sizeof(*sched_engine), GFP_KERNEL);
473 if (!sched_engine)
476 kref_init(&sched_engine->ref);
478 sched_engine->queue = RB_ROOT_CACHED;
479 sched_engine->queue_priority_hint = INT_MIN;
480 sched_engine->destroy = default_destroy;
481 sched_engine->disabled = default_disabled;
483 INIT_LIST_HEAD(&sched_engine->requests);
484 INIT_LIST_HEAD(&sched_engine->hold);
486 mtx_init(&sched_engine->lock, IPL_TTY);
487 lockdep_set_subclass(&sched_engine->lock, subclass);
496 lock_map_acquire(&sched_engine->lock.dep_map);
497 lock_map_release(&sched_engine->lock.dep_map);
501 return sched_engine;