Skip to content

Commit

Permalink
drm/sched: Add helper to check job dependencies
Browse files Browse the repository at this point in the history
Lets isolate scheduler internals from drivers such as pvr which currently
walks the dependency array to look for fences.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Danilo Krummrich <dakr@redhat.com>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Philipp Stanner <pstanner@redhat.com>
Reviewed-by: Matt Coster <matt.coster@imgtec.com>
Acked-by: Danilo Krummrich <dakr@kernel.org>
Signed-off-by: Philipp Stanner <phasta@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20250113103341.43914-1-tvrtko.ursulin@igalia.com
  • Loading branch information
Tvrtko Ursulin authored and ginkage committed Jan 28, 2025
1 parent e17cdba commit 7a9a238
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
23 changes: 23 additions & 0 deletions drivers/gpu/drm/scheduler/sched_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -984,6 +984,29 @@ int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
}
EXPORT_SYMBOL(drm_sched_job_add_implicit_dependencies);

/**
* drm_sched_job_has_dependency - check whether fence is the job's dependency
* @job: scheduler job to check
* @fence: fence to look for
*
* Returns:
* True if @fence is found within the job's dependencies, or otherwise false.
*/
bool drm_sched_job_has_dependency(struct drm_sched_job *job,
struct dma_fence *fence)
{
struct dma_fence *f;
unsigned long index;

xa_for_each(&job->dependencies, index, f) {
if (f == fence)
return true;
}

return false;
}
EXPORT_SYMBOL(drm_sched_job_has_dependency);

/**
* drm_sched_job_cleanup - clean up scheduler job resources
* @job: scheduler job to clean up
Expand Down
3 changes: 2 additions & 1 deletion include/drm/gpu_scheduler.h
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,8 @@ int drm_sched_job_add_resv_dependencies(struct drm_sched_job *job,
int drm_sched_job_add_implicit_dependencies(struct drm_sched_job *job,
struct drm_gem_object *obj,
bool write);

bool drm_sched_job_has_dependency(struct drm_sched_job *job,
struct dma_fence *fence);

void drm_sched_entity_modify_sched(struct drm_sched_entity *entity,
struct drm_gpu_scheduler **sched_list,
Expand Down

0 comments on commit 7a9a238

Please sign in to comment.