Lines Matching full:entity
44 * The jobs in a entity are always scheduled in the order that they were pushed.
83 * drm_sched_rq_add_entity - add an entity
86 * @entity: scheduler entity
88 * Adds a scheduler entity to the run queue.
91 struct drm_sched_entity *entity) in drm_sched_rq_add_entity() argument
93 if (!list_empty(&entity->list)) in drm_sched_rq_add_entity()
97 list_add_tail(&entity->list, &rq->entities); in drm_sched_rq_add_entity()
102 * drm_sched_rq_remove_entity - remove an entity
105 * @entity: scheduler entity
107 * Removes a scheduler entity from the run queue.
110 struct drm_sched_entity *entity) in drm_sched_rq_remove_entity() argument
112 if (list_empty(&entity->list)) in drm_sched_rq_remove_entity()
116 list_del_init(&entity->list); in drm_sched_rq_remove_entity()
117 if (rq->current_entity == entity) in drm_sched_rq_remove_entity()
123 * drm_sched_rq_select_entity - Select an entity which could provide a job to run
127 * Try to find a ready entity, returns NULL if none found.
132 struct drm_sched_entity *entity; in drm_sched_rq_select_entity() local
136 entity = rq->current_entity; in drm_sched_rq_select_entity()
137 if (entity) { in drm_sched_rq_select_entity()
138 list_for_each_entry_continue(entity, &rq->entities, list) { in drm_sched_rq_select_entity()
139 if (drm_sched_entity_is_ready(entity)) { in drm_sched_rq_select_entity()
140 rq->current_entity = entity; in drm_sched_rq_select_entity()
141 reinit_completion(&entity->entity_idle); in drm_sched_rq_select_entity()
143 return entity; in drm_sched_rq_select_entity()
148 list_for_each_entry(entity, &rq->entities, list) { in drm_sched_rq_select_entity()
150 if (drm_sched_entity_is_ready(entity)) { in drm_sched_rq_select_entity()
151 rq->current_entity = entity; in drm_sched_rq_select_entity()
152 reinit_completion(&entity->entity_idle); in drm_sched_rq_select_entity()
154 return entity; in drm_sched_rq_select_entity()
157 if (entity == rq->current_entity) in drm_sched_rq_select_entity()
204 * @entity: the entity which depends on the above fence
209 struct drm_sched_entity *entity) in drm_sched_dependency_optimized() argument
211 struct drm_gpu_scheduler *sched = entity->rq->sched; in drm_sched_dependency_optimized()
216 if (fence->context == entity->fence_context) in drm_sched_dependency_optimized()
364 * limit of the scheduler then the respective sched entity is marked guilty and
575 * @entity: scheduler entity to use
585 * has died, which can mean that there's no valid runqueue for a @entity.
592 struct drm_sched_entity *entity, in drm_sched_job_init() argument
595 if (!entity->rq) in drm_sched_job_init()
598 job->entity = entity; in drm_sched_job_init()
599 job->s_fence = drm_sched_fence_alloc(entity, owner); in drm_sched_job_init()
627 struct drm_sched_entity *entity = job->entity; in drm_sched_job_arm() local
629 BUG_ON(!entity); in drm_sched_job_arm()
630 drm_sched_entity_select_rq(entity); in drm_sched_job_arm()
631 sched = entity->rq->sched; in drm_sched_job_arm()
634 job->s_priority = entity->rq - sched->sched_rq; in drm_sched_job_arm()
637 drm_sched_fence_init(job->s_fence, job->entity); in drm_sched_job_arm()
789 * drm_sched_select_entity - Select next entity to process
793 * Returns the entity to process or NULL if none are found.
798 struct drm_sched_entity *entity; in drm_sched_select_entity() local
806 entity = drm_sched_rq_select_entity(&sched->sched_rq[i]); in drm_sched_select_entity()
807 if (entity) in drm_sched_select_entity()
811 return entity; in drm_sched_select_entity()
925 struct drm_sched_entity *entity = NULL; in drm_sched_main() local
934 (entity = drm_sched_select_entity(sched))) || in drm_sched_main()
940 if (!entity) in drm_sched_main()
943 sched_job = drm_sched_entity_pop_job(entity); in drm_sched_main()
946 complete(&entity->entity_idle); in drm_sched_main()
955 trace_drm_run_job(sched_job, entity); in drm_sched_main()
957 complete(&entity->entity_idle); in drm_sched_main()
1095 struct drm_sched_entity *entity; in drm_sched_increase_karma_ext() local
1113 list_for_each_entry_safe(entity, tmp, &rq->entities, list) { in drm_sched_increase_karma_ext()
1115 entity->fence_context) { in drm_sched_increase_karma_ext()
1116 if (entity->guilty) in drm_sched_increase_karma_ext()
1117 atomic_set(entity->guilty, type); in drm_sched_increase_karma_ext()
1122 if (&entity->list != &rq->entities) in drm_sched_increase_karma_ext()