STRUCT I915_SCHED_ENGINE(9)
π struct i915_sched_engine(9) π
okay so welcome to the Kernel API Manual page for struct i915_sched_engine(9) β yes bestie, we're doing the scheduler engine itself, and we're gonna go through every single field like it's a group-chat receipt. no cap. β¨
πΈ NAME πΈ
struct i915_sched_engine β scheduler engine π«Ά
β¨ SYNOPSIS β¨
struct i915_sched_engine {
struct kref ref;
spinlock_t lock;
struct list_head requests;
struct list_head hold;
struct tasklet_struct tasklet;
struct i915_priolist default_priolist;
int queue_priority_hint;
struct rb_root_cached queue;
bool no_priolist;
void *private_data;
void (*destroy)(struct kref *kref);
bool (*disabled)(struct i915_sched_engine *sched_engine);
void (*kick_backend)(const struct i915_request *rq, int prio);
void (*bump_inflight_request_prio)(struct i915_request *rq, int
prio);
void (*retire_inflight_request_prio)(struct i915_request *rq);
void (*schedule)(struct i915_request *request, const struct
i915_sched_attr *attr);
};
π«Ά Members π«Ά
refβ reference count of schedule engine object. keeping track, iconic behavior πlockβ protects requests in priority lists,requests,holdandtaskletwhile running. it's giving "do not touch while I'm working" energy.requestsβ list of requests inflight on this schedule engine. these are the ones currently out there doing their thing.holdβ list of ready requests, but on hold. ready but waiting, lowkey main character suspense.taskletβ softirq tasklet for submission. yes, it's the submission tasklet.default_priolistβ priority list forI915_PRIORITY_NORMAL. the normal-priority hangout spot.queue_priority_hintβ Highest pending priority.
so when we add requests into the queue, or adjust the priority of executing requests, we compute the maximum priority of those pending requests. we can then use this value to determine if we need to preempt the executing requests to service the queue.
but here's the catch π β we may have recorded the priority of an inflight request we wanted to preempt, but it has since completed. so at the time of dequeuing, the priority hint may no longer match the highest available request priority. it's giving stale-receipt energy, fr fr.
queueβ queue of requests, in priority lists. the actual lineup, organized by priority.no_priolistβ priority lists disabled. when this is on, the priority-list life is not happening.private_dataβ private data of the submission backend. backend's own little stash.destroyβ destroy schedule engine / cleanup in backend. the cleanup era.disabledβ check if backend has disabled submission. vibe check for "is submission off?"kick_backendβ kick backend after a request's priority has changed. yes, a little nudge after the priority glow-up.bump_inflight_request_prioβ update priority of an inflight request. priority adjustment for something already out there.retire_inflight_request_prioβ indicate request is retired to priority tracking. letting priority tracking know this one is done.scheduleβ adjust priority of request.
Call when the priority on a request has changed and it and its dependencies may need rescheduling. Note the request itself may not be ready to run!
π Description π
A schedule engine represents a submission queue with different priority bands. It contains all the common state (relative to the backend) to queue, track, and submit a request. honestly? obsessed. it's the backend-relative home base for all that queueing, tracking, and submitting. π¦
This object at the moment is quite i915 specific but will transition into a container for the drm_gpu_scheduler plus a few other variables once the i915 is integrated with the DRM scheduler. so rn it's very i915-coded, but it's got future-container plans. π
π₯ SEE ALSO π₯
- Kernel file
./drivers/gpu/drm/i915/i915_scheduler_types.hβ go read the source, bestie, iykyk π
mwah π this page came from ./drivers/gpu/drm/i915, dated October 2026, and it's the struct i915_sched_engine(9) source/version footer energy. periodt. π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms