Lines Matching refs:entity

116 				struct drm_sched_entity *entity)  in drm_sched_can_queue()  argument
120 s_job = drm_sched_entity_queue_peek(entity); in drm_sched_can_queue()
145 static void drm_sched_rq_remove_fifo_locked(struct drm_sched_entity *entity, in drm_sched_rq_remove_fifo_locked() argument
148 if (!RB_EMPTY_NODE(&entity->rb_tree_node)) { in drm_sched_rq_remove_fifo_locked()
149 rb_erase_cached(&entity->rb_tree_node, &rq->rb_tree_root); in drm_sched_rq_remove_fifo_locked()
150 RB_CLEAR_NODE(&entity->rb_tree_node); in drm_sched_rq_remove_fifo_locked()
154 void drm_sched_rq_update_fifo_locked(struct drm_sched_entity *entity, in drm_sched_rq_update_fifo_locked() argument
163 lockdep_assert_held(&entity->lock); in drm_sched_rq_update_fifo_locked()
166 drm_sched_rq_remove_fifo_locked(entity, rq); in drm_sched_rq_update_fifo_locked()
168 entity->oldest_job_waiting = ts; in drm_sched_rq_update_fifo_locked()
170 rb_add_cached(&entity->rb_tree_node, &rq->rb_tree_root, in drm_sched_rq_update_fifo_locked()
201 struct drm_sched_entity *entity) in drm_sched_rq_add_entity() argument
203 lockdep_assert_held(&entity->lock); in drm_sched_rq_add_entity()
206 if (!list_empty(&entity->list)) in drm_sched_rq_add_entity()
210 list_add_tail(&entity->list, &rq->entities); in drm_sched_rq_add_entity()
222 struct drm_sched_entity *entity) in drm_sched_rq_remove_entity() argument
224 lockdep_assert_held(&entity->lock); in drm_sched_rq_remove_entity()
226 if (list_empty(&entity->list)) in drm_sched_rq_remove_entity()
232 list_del_init(&entity->list); in drm_sched_rq_remove_entity()
234 if (rq->current_entity == entity) in drm_sched_rq_remove_entity()
238 drm_sched_rq_remove_fifo_locked(entity, rq); in drm_sched_rq_remove_entity()
259 struct drm_sched_entity *entity; in drm_sched_rq_select_entity_rr() local
263 entity = rq->current_entity; in drm_sched_rq_select_entity_rr()
264 if (entity) { in drm_sched_rq_select_entity_rr()
265 list_for_each_entry_continue(entity, &rq->entities, list) { in drm_sched_rq_select_entity_rr()
266 if (drm_sched_entity_is_ready(entity)) in drm_sched_rq_select_entity_rr()
271 list_for_each_entry(entity, &rq->entities, list) { in drm_sched_rq_select_entity_rr()
272 if (drm_sched_entity_is_ready(entity)) in drm_sched_rq_select_entity_rr()
275 if (entity == rq->current_entity) in drm_sched_rq_select_entity_rr()
284 if (!drm_sched_can_queue(sched, entity)) { in drm_sched_rq_select_entity_rr()
289 entity = ERR_PTR(-ENOSPC); in drm_sched_rq_select_entity_rr()
291 rq->current_entity = entity; in drm_sched_rq_select_entity_rr()
292 reinit_completion(&entity->entity_idle); in drm_sched_rq_select_entity_rr()
297 return entity; in drm_sched_rq_select_entity_rr()
320 struct drm_sched_entity *entity; in drm_sched_rq_select_entity_fifo() local
322 entity = rb_entry(rb, struct drm_sched_entity, rb_tree_node); in drm_sched_rq_select_entity_fifo()
323 if (drm_sched_entity_is_ready(entity)) { in drm_sched_rq_select_entity_fifo()
327 if (!drm_sched_can_queue(sched, entity)) { in drm_sched_rq_select_entity_fifo()
332 reinit_completion(&entity->entity_idle); in drm_sched_rq_select_entity_fifo()
819 struct drm_sched_entity *entity, in drm_sched_job_init() argument
823 if (!entity->rq) { in drm_sched_job_init()
845 job->entity = entity; in drm_sched_job_init()
847 job->s_fence = drm_sched_fence_alloc(entity, owner, drm_client_id); in drm_sched_job_init()
879 struct drm_sched_entity *entity = job->entity; in drm_sched_job_arm() local
881 BUG_ON(!entity); in drm_sched_job_arm()
882 drm_sched_entity_select_rq(entity); in drm_sched_job_arm()
883 sched = entity->rq->sched; in drm_sched_job_arm()
886 job->s_priority = entity->priority; in drm_sched_job_arm()
888 drm_sched_fence_init(job->s_fence, job->entity); in drm_sched_job_arm()
1117 struct drm_sched_entity *entity; in drm_sched_select_entity() local
1123 entity = drm_sched_policy == DRM_SCHED_POLICY_FIFO ? in drm_sched_select_entity()
1126 if (entity) in drm_sched_select_entity()
1130 return IS_ERR(entity) ? NULL : entity; in drm_sched_select_entity()
1242 struct drm_sched_entity *entity; in drm_sched_run_job_work() local
1249 entity = drm_sched_select_entity(sched); in drm_sched_run_job_work()
1250 if (!entity) in drm_sched_run_job_work()
1253 sched_job = drm_sched_entity_pop_job(entity); in drm_sched_run_job_work()
1255 complete_all(&entity->entity_idle); in drm_sched_run_job_work()
1265 trace_drm_sched_job_run(sched_job, entity); in drm_sched_run_job_work()
1271 complete_all(&entity->entity_idle); in drm_sched_run_job_work()
1478 struct drm_sched_entity *entity; in drm_sched_increase_karma() local
1492 list_for_each_entry_safe(entity, tmp, &rq->entities, list) { in drm_sched_increase_karma()
1494 entity->fence_context) { in drm_sched_increase_karma()
1495 if (entity->guilty) in drm_sched_increase_karma()
1496 atomic_set(entity->guilty, 1); in drm_sched_increase_karma()
1501 if (&entity->list != &rq->entities) in drm_sched_increase_karma()