STRUCT IVPU_JOB(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct ivpu_job(9) ✨

okay bestie, welcome to the Kernel API Manual πŸŽ€ β€” yes we're doing kernel docs now, and honestly? iconic. this one's all about struct ivpu_job, so grab a lil snack and let's get into it πŸ’…


πŸ’– NAME πŸ’–

struct ivpu_job β€” the whole vibe of a batch or DMA buffer that's been submitted to the VPU πŸ¦‹ Each job is literally a unit of execution, tracked by job_id so the VPU FW can report back on its status. This structure is the main character: it holds every resource and all the metadata you need for job submission, execution, and completion handling. periodt ✨


🌸 SYNOPSIS 🌸

struct ivpu_job {
    struct ivpu_device *vdev;
    struct ivpu_file_priv *file_priv;
    struct dma_fence *done_fence;
    struct llist_node destroy_node;
    u64 cmd_buf_vpu_addr;
    u32 cmdq_id;
    u32 job_id;
    u32 engine_idx;
    u32 job_status;
    struct ivpu_bo *primary_preempt_buf;
    struct ivpu_bo *secondary_preempt_buf;
    size_t bo_count;
    struct ivpu_bo *bos[];
};

like, look at her. stunning. no notes πŸ’œ


🧚 Members 🧚

  • vdev β€” a pointer to the VPU device 🫢 your home base, iykyk
  • file_priv β€” the client context that submitted this job. so like, who's responsible for this one πŸ‘€
  • done_fence β€” the fence that gets signaled when the job completes βœ… closure, finally
  • destroy_node β€” list node for deferred resource cleanup after the job completes 🧹 the lil cleanup crew that shows up after the party
  • cmd_buf_vpu_addr β€” the VPU address of the command buffer for this job πŸ“ where the magic lives
  • cmdq_id β€” command queue ID used for submission 🎯
  • job_id β€” unique job ID for tracking and status reporting. this is her government name, fr fr πŸͺͺ
  • engine_idx β€” engine index for job execution πŸ”₯
  • job_status β€” the status reported by firmware for this job πŸ“Š the report card
  • primary_preempt_buf β€” primary preemption buffer for the job πŸ‘‘ main character buffer
  • secondary_preempt_buf β€” secondary preemption buffer for the job (optional) 🌈 the understudy, only sometimes invited
  • bo_count β€” number of buffer objects associated with this job πŸ”’
  • bos β€” array of buffer objects used by the job (the batch buffer is at index 0) πŸ“ index zero is THE spot, no cap

πŸ‘‘ SEE ALSO πŸ‘‘

  • Kernel file ./drivers/accel/ivpu/ivpu_job.h
  • struct ivpu_cmdq(9)

and that's the whole page, bestie πŸ’– go forth and submit jobs responsibly. this lil masterpiece lives over in ./drivers/accel/ivpu, dated October 2026 β€” so like, future girlie behavior but make it kernel πŸŒΈβœ¨πŸ¦‹

πŸ“¦ where this page comes from