Lines Matching full:scheduler
27 * The GPU scheduler provides entities which allow userspace to push jobs
29 * The software queues have a priority among them. The scheduler selects the entities
30 * from the run queue using a FIFO. The scheduler provides dependency handling
32 * backend operations to the scheduler like submitting a job to hardware run queue,
35 * The organisation of the scheduler is the following:
37 * 1. Each hw run queue has one scheduler
38 * 2. Each scheduler has multiple run queues with different priorities
40 * 3. Each scheduler run queue has a queue of entities to schedule
54 * The DRM GPU scheduler provides a flow control mechanism to regulate the rate
55 * in which the jobs fetched from scheduler entities are executed.
58 * credit limit representing the capacity of this scheduler and a credit count;
62 * to the scheduler's credit count until the job is finished. If by executing
63 * one more job the scheduler's credit count would exceed the scheduler's
64 * credit limit, the job won't be executed. Instead, the scheduler will wait
70 * scheduler executes this callback every time the scheduler considers a job for
71 * execution and subsequently checks whether the job fits the scheduler's credit
115 * @sched: scheduler instance
116 * @entity: the scheduler entity
190 * @sched: scheduler instance to associate with this run queue
191 * @rq: scheduler run queue
193 * Initializes a scheduler runqueue.
208 * @rq: scheduler run queue
209 * @entity: scheduler entity
211 * Adds a scheduler entity to the run queue.
230 * @rq: scheduler run queue
231 * @entity: scheduler entity
233 * Removes a scheduler entity from the run queue.
258 * @sched: the gpu scheduler
259 * @rq: scheduler run queue to check.
264 * entity was ready, but the scheduler had insufficient credits to accommodate
323 * @sched: the gpu scheduler
324 * @rq: scheduler run queue to check.
329 * entity was ready, but the scheduler had insufficient credits to accommodate
364 * @sched: scheduler instance
374 * @sched: scheduler instance
384 * @sched: scheduler instance
435 * @sched: scheduler instance to start the worker for
437 * Start the timeout for the given scheduler.
458 * @sched: scheduler for which the timeout handling should be started.
460 * Start timeout handling immediately for the named scheduler.
474 * @sched: scheduler where the timeout handling should be started.
486 * drm_sched_suspend_timeout - Suspend scheduler job timeout
488 * @sched: scheduler instance for which to suspend the timeout
490 * Suspend the delayed work timeout for the scheduler. This is done by
516 * drm_sched_resume_timeout - Resume scheduler job timeout
518 * @sched: scheduler instance for which to resume the timeout
521 * Resume the delayed work timeout for the scheduler.
588 * drm_sched_stop - stop the scheduler
590 * @sched: scheduler instance
593 * Stop the scheduler and also removes and frees all completed jobs.
610 * now until the scheduler thread is unparked. in drm_sched_stop()
676 * @sched: scheduler instance
720 * @sched: scheduler instance
731 * we shouldn't make this a general scheduler feature around the dma_fence
771 * drm_sched_job_init - init a scheduler job
772 * @job: scheduler job to init
773 * @entity: scheduler entity to use
824 * drm_sched_job_arm - arm a scheduler job for execution
825 * @job: scheduler job to arm
827 * This arms a scheduler job for execution. Specifically it initializes the
855 * @job: scheduler job to add the dependencies to
901 * @job: scheduler job to add the dependencies to
929 * @job: scheduler job to add the dependencies to
965 * @job: scheduler job to add the dependencies to
987 * drm_sched_job_cleanup - clean up scheduler job resources
988 * @job: scheduler job to clean up
996 * scheduler, and this function should be called from the
1023 * drm_sched_wakeup - Wake up the scheduler if it is ready to queue
1024 * @sched: scheduler instance
1025 * @entity: the scheduler entity
1027 * Wake up the scheduler if we can queue jobs.
1039 * @sched: scheduler instance
1069 * @sched: scheduler instance
1131 DRM_WARN("scheduler %s is not ready, skipping", in drm_sched_pick_best()
1229 * drm_sched_init - Init a gpu scheduler instance
1231 * @sched: scheduler instance
1232 * @ops: backend operations for this scheduler
1236 * @credit_limit: the number of credits this scheduler can hold from all jobs
1238 * @timeout: timeout value in jiffies for the scheduler
1276 drm_warn(sched, "%s: scheduler already initialized!\n", __func__); in drm_sched_init()
1324 drm_err(sched, "%s: Failed to setup GPU scheduler--out of memory\n", __func__); in drm_sched_init()
1330 * drm_sched_fini - Destroy a gpu scheduler
1332 * @sched: scheduler instance
1334 * Tears down and cleans up the scheduler.
1358 /* Wakeup everyone stuck in drm_sched_entity_flush for this scheduler */ in drm_sched_fini()
1378 * limit of the scheduler then the respective sched entity is marked guilty and
1416 * drm_sched_wqueue_ready - Is the scheduler ready for submission
1418 * @sched: scheduler instance
1429 * drm_sched_wqueue_stop - stop scheduler submission
1431 * @sched: scheduler instance
1442 * drm_sched_wqueue_start - start scheduler submission
1444 * @sched: scheduler instance