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
121 * @sched: scheduler instance
122 * @entity: the scheduler entity
194 * @sched: scheduler instance to associate with this run queue
195 * @rq: scheduler run queue
197 * Initializes a scheduler runqueue.
212 * @rq: scheduler run queue
213 * @entity: scheduler entity
215 * Adds a scheduler entity to the run queue.
233 * @rq: scheduler run queue
234 * @entity: scheduler entity
236 * Removes a scheduler entity from the run queue.
263 * @sched: the gpu scheduler
264 * @rq: scheduler run queue to check.
269 * entity was ready, but the scheduler had insufficient credits to accommodate
328 * @sched: the gpu scheduler
329 * @rq: scheduler run queue to check.
334 * entity was ready, but the scheduler had insufficient credits to accommodate
368 * @sched: scheduler instance
378 * @sched: scheduler instance
388 * @sched: scheduler instance
439 * @sched: scheduler instance to start the worker for
441 * Start the timeout for the given scheduler.
462 * @sched: scheduler for which the timeout handling should be started.
464 * Start timeout handling immediately for the named scheduler.
478 * @sched: scheduler where the timeout handling should be started.
490 * drm_sched_suspend_timeout - Suspend scheduler job timeout
492 * @sched: scheduler instance for which to suspend the timeout
494 * Suspend the delayed work timeout for the scheduler. This is done by
520 * drm_sched_resume_timeout - Resume scheduler job timeout
522 * @sched: scheduler instance for which to resume the timeout
525 * Resume the delayed work timeout for the scheduler.
592 * drm_sched_stop - stop the scheduler
594 * @sched: scheduler instance
597 * Stop the scheduler and also removes and frees all completed jobs.
604 * scheduler teardown, i.e., before calling drm_sched_fini().
617 * now until the scheduler thread is unparked. in drm_sched_stop()
682 * @sched: scheduler instance
687 * scheduler startup. The scheduler itself is fully operational after
722 * @sched: scheduler instance
733 * we shouldn't make this a general scheduler feature around the dma_fence
773 * drm_sched_job_init - init a scheduler job
774 * @job: scheduler job to init
775 * @entity: scheduler entity to use
838 * drm_sched_job_arm - arm a scheduler job for execution
839 * @job: scheduler job to arm
841 * This arms a scheduler job for execution. Specifically it initializes the
869 * @job: scheduler job to add the dependencies to
915 * @job: scheduler job to add the dependencies to
943 * @job: scheduler job to add the dependencies to
979 * @job: scheduler job to add the dependencies to
1001 * drm_sched_job_cleanup - clean up scheduler job resources
1002 * @job: scheduler job to clean up
1010 * scheduler, and this function should be called from the
1037 * drm_sched_wakeup - Wake up the scheduler if it is ready to queue
1038 * @sched: scheduler instance
1040 * Wake up the scheduler if we can queue jobs.
1050 * @sched: scheduler instance
1080 * @sched: scheduler instance
1142 DRM_WARN("scheduler %s is not ready, skipping", in drm_sched_pick_best()
1240 * drm_sched_init - Init a gpu scheduler instance
1242 * @sched: scheduler instance
1243 * @ops: backend operations for this scheduler
1247 * @credit_limit: the number of credits this scheduler can hold from all jobs
1249 * @timeout: timeout value in jiffies for the scheduler
1287 drm_warn(sched, "%s: scheduler already initialized!\n", __func__); in drm_sched_init()
1342 drm_err(sched, "%s: Failed to setup GPU scheduler--out of memory\n", __func__); in drm_sched_init()
1348 * drm_sched_fini - Destroy a gpu scheduler
1350 * @sched: scheduler instance
1352 * Tears down and cleans up the scheduler.
1390 /* Wakeup everyone stuck in drm_sched_entity_flush for this scheduler */ in drm_sched_fini()
1410 * limit of the scheduler then the respective sched entity is marked guilty and
1448 * drm_sched_wqueue_ready - Is the scheduler ready for submission
1450 * @sched: scheduler instance
1461 * drm_sched_wqueue_stop - stop scheduler submission
1462 * @sched: scheduler instance
1464 * Stops the scheduler from pulling new jobs from entities. It also stops
1476 * drm_sched_wqueue_start - start scheduler submission
1477 * @sched: scheduler instance
1479 * Restarts the scheduler after drm_sched_wqueue_stop() has stopped it.
1481 * This function is not necessary for 'conventional' startup. The scheduler is