]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/sched: Make drm_sched_entity_kill() a public function
authorPhilipp Stanner <phasta@kernel.org>
Wed, 15 Apr 2026 14:49:56 +0000 (16:49 +0200)
committerDanilo Krummrich <dakr@kernel.org>
Thu, 16 Apr 2026 19:34:00 +0000 (21:34 +0200)
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>
drivers/gpu/drm/scheduler/sched_entity.c
include/drm/gpu_scheduler.h

index fe174a4857be7f10ed96b583f6754a21ffd4367c..85aa54d51b2d7d3cada4fb144e85928106a0a7f5 100644 (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
index 78e07c2507c7a420ad75d04821588b66394f5c39..609ebe389094f2c9fb414ce679e437f2f92e4b5a 100644 (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,