Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/sched: Move internal prototypes to internal header

Now that we have a header file for internal scheduler interfaces we can
move some more prototypes into it. By doing that we eliminate the chance
of drivers trying to use something which was not intended to be used.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@igalia.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: Danilo Krummrich <dakr@kernel.org>
Cc: Matthew Brost <matthew.brost@intel.com>
Cc: Philipp Stanner <phasta@kernel.org>
Signed-off-by: Philipp Stanner <phasta@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20250221105038.79665-6-tvrtko.ursulin@igalia.com

authored by

Tvrtko Ursulin and committed by
Philipp Stanner
71a18f72 4b7320bf

+32 -27
+2
drivers/gpu/drm/scheduler/sched_fence.c
··· 29 29 30 30 #include <drm/gpu_scheduler.h> 31 31 32 + #include "sched_internal.h" 33 + 32 34 static struct kmem_cache *sched_fence_slab; 33 35 34 36 static int __init drm_sched_fence_slab_init(void)
+30
drivers/gpu/drm/scheduler/sched_internal.h
··· 3 3 #ifndef _DRM_GPU_SCHEDULER_INTERNAL_H_ 4 4 #define _DRM_GPU_SCHEDULER_INTERNAL_H_ 5 5 6 + 7 + /* Used to choose between FIFO and RR job-scheduling */ 8 + extern int drm_sched_policy; 9 + 10 + #define DRM_SCHED_POLICY_RR 0 11 + #define DRM_SCHED_POLICY_FIFO 1 12 + 13 + void drm_sched_wakeup(struct drm_gpu_scheduler *sched); 14 + 15 + void drm_sched_rq_add_entity(struct drm_sched_rq *rq, 16 + struct drm_sched_entity *entity); 17 + void drm_sched_rq_remove_entity(struct drm_sched_rq *rq, 18 + struct drm_sched_entity *entity); 19 + 20 + void drm_sched_rq_update_fifo_locked(struct drm_sched_entity *entity, 21 + struct drm_sched_rq *rq, ktime_t ts); 22 + 23 + void drm_sched_entity_select_rq(struct drm_sched_entity *entity); 24 + struct drm_sched_job *drm_sched_entity_pop_job(struct drm_sched_entity *entity); 25 + 26 + struct drm_sched_fence *drm_sched_fence_alloc(struct drm_sched_entity *s_entity, 27 + void *owner); 28 + void drm_sched_fence_init(struct drm_sched_fence *fence, 29 + struct drm_sched_entity *entity); 30 + void drm_sched_fence_free(struct drm_sched_fence *fence); 31 + 32 + void drm_sched_fence_scheduled(struct drm_sched_fence *fence, 33 + struct dma_fence *parent); 34 + void drm_sched_fence_finished(struct drm_sched_fence *fence, int result); 35 + 6 36 /** 7 37 * drm_sched_entity_queue_pop - Low level helper for popping queued jobs 8 38 *
-27
include/drm/gpu_scheduler.h
··· 71 71 DRM_SCHED_PRIORITY_COUNT 72 72 }; 73 73 74 - /* Used to choose between FIFO and RR job-scheduling */ 75 - extern int drm_sched_policy; 76 - 77 - #define DRM_SCHED_POLICY_RR 0 78 - #define DRM_SCHED_POLICY_FIFO 1 79 - 80 74 /** 81 75 * struct drm_sched_entity - A wrapper around a job queue (typically 82 76 * attached to the DRM file_priv). ··· 595 601 596 602 void drm_sched_tdr_queue_imm(struct drm_gpu_scheduler *sched); 597 603 void drm_sched_job_cleanup(struct drm_sched_job *job); 598 - void drm_sched_wakeup(struct drm_gpu_scheduler *sched); 599 604 bool drm_sched_wqueue_ready(struct drm_gpu_scheduler *sched); 600 605 void drm_sched_wqueue_stop(struct drm_gpu_scheduler *sched); 601 606 void drm_sched_wqueue_start(struct drm_gpu_scheduler *sched); ··· 604 611 void drm_sched_increase_karma(struct drm_sched_job *bad); 605 612 void drm_sched_fault(struct drm_gpu_scheduler *sched); 606 613 607 - void drm_sched_rq_add_entity(struct drm_sched_rq *rq, 608 - struct drm_sched_entity *entity); 609 - void drm_sched_rq_remove_entity(struct drm_sched_rq *rq, 610 - struct drm_sched_entity *entity); 611 - 612 - void drm_sched_rq_update_fifo_locked(struct drm_sched_entity *entity, 613 - struct drm_sched_rq *rq, ktime_t ts); 614 - 615 614 int drm_sched_entity_init(struct drm_sched_entity *entity, 616 615 enum drm_sched_priority priority, 617 616 struct drm_gpu_scheduler **sched_list, ··· 612 627 long drm_sched_entity_flush(struct drm_sched_entity *entity, long timeout); 613 628 void drm_sched_entity_fini(struct drm_sched_entity *entity); 614 629 void drm_sched_entity_destroy(struct drm_sched_entity *entity); 615 - void drm_sched_entity_select_rq(struct drm_sched_entity *entity); 616 - struct drm_sched_job *drm_sched_entity_pop_job(struct drm_sched_entity *entity); 617 630 void drm_sched_entity_push_job(struct drm_sched_job *sched_job); 618 631 void drm_sched_entity_set_priority(struct drm_sched_entity *entity, 619 632 enum drm_sched_priority priority); 620 633 int drm_sched_entity_error(struct drm_sched_entity *entity); 621 - 622 - struct drm_sched_fence *drm_sched_fence_alloc( 623 - struct drm_sched_entity *s_entity, void *owner); 624 - void drm_sched_fence_init(struct drm_sched_fence *fence, 625 - struct drm_sched_entity *entity); 626 - void drm_sched_fence_free(struct drm_sched_fence *fence); 627 - 628 - void drm_sched_fence_scheduled(struct drm_sched_fence *fence, 629 - struct dma_fence *parent); 630 - void drm_sched_fence_finished(struct drm_sched_fence *fence, int result); 631 634 632 635 unsigned long drm_sched_suspend_timeout(struct drm_gpu_scheduler *sched); 633 636 void drm_sched_resume_timeout(struct drm_gpu_scheduler *sched,