drm/sched: Make drm_sched_entity_kill() a public function

Some drivers do not care on teardown whether the last jobs pending in an
entity are actually executed before teardown completed. For such
scenarios, drm_sched_entity_flush() is not the ideal function since it's
intended to wait for jobs to complete.

Make drm_sched_entity_kill() public for that use-case and update the
documentation.

Suggested-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Philipp Stanner <phasta@kernel.org>
Link: https://patch.msgid.link/20260415144956.272506-2-phasta@kernel.org
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
Philipp Stanner 2026-04-15 16:49:56 +02:00 committed by Danilo Krummrich
parent 51c0256409
commit 2f5f05633e
2 changed files with 12 additions and 2 deletions

View File

@ -228,8 +228,16 @@ static void drm_sched_entity_kill_jobs_cb(struct dma_fence *f,
schedule_work(&job->work);
}
/* Remove the entity from the scheduler and kill all pending jobs */
static void drm_sched_entity_kill(struct drm_sched_entity *entity)
/**
* drm_sched_entity_kill - kill an entity's pending jobs and remove it
* @entity: the entity to remove
*
* Removes the entity from the scheduler's run queue and kills all pending jobs.
*
* This function should be used over drm_sched_entity_flush() if it is not
* desired to actually wait for all pending jobs to finish.
*/
void drm_sched_entity_kill(struct drm_sched_entity *entity)
{
struct drm_sched_job *job;
struct dma_fence *prev;
@ -267,6 +275,7 @@ static void drm_sched_entity_kill(struct drm_sched_entity *entity)
}
dma_fence_put(prev);
}
EXPORT_SYMBOL(drm_sched_entity_kill);
/**
* drm_sched_entity_flush - Flush a context entity

View File

@ -691,6 +691,7 @@ int drm_sched_entity_init(struct drm_sched_entity *entity,
unsigned int num_sched_list,
atomic_t *guilty);
long drm_sched_entity_flush(struct drm_sched_entity *entity, long timeout);
void drm_sched_entity_kill(struct drm_sched_entity *entity);
void drm_sched_entity_fini(struct drm_sched_entity *entity);
void drm_sched_entity_destroy(struct drm_sched_entity *entity);
void drm_sched_entity_set_priority(struct drm_sched_entity *entity,