STRUCT XE_OA_STREAM(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… struct xe_oa_stream(9) โ€” the Kernel API Manual, but make it cute โœจ

okay so this is from the Kernel API Manual and it's literally the whole tea on struct xe_oa_stream โ€” like, this is the struct page bestie, we're doing this ๐Ÿซถ


๐ŸŒธ NAME ๐ŸŒธ

struct xe_oa_stream โ€” the state for a single open stream FD. one stream, one FD, one whole vibe ๐Ÿ’ซ


โœจ SYNOPSIS โœจ

struct xe_oa_stream {
    struct xe_oa *oa;
    struct xe_gt *gt;
    struct xe_oa_unit *oa_unit;
    struct xe_hw_engine *hwe;
    struct mutex stream_lock;
    bool sample;
    struct xe_exec_queue *exec_q;
    struct xe_exec_queue *k_exec_q;
    bool enabled;
    struct xe_oa_config *oa_config;
    struct llist_head oa_config_bos;
    struct hrtimer poll_check_timer;
    wait_queue_head_t poll_wq;
    bool pollin;
    int wait_num_reports;
    bool periodic;
    int period_exponent;
    struct xe_oa_buffer oa_buffer;
    u64 poll_period_ns;
    u32 oa_status;
    u32 no_preempt;
    struct xe_file *xef;
    struct drm_syncobj *ufence_syncobj;
    u64 ufence_timeline_value;
    struct dma_fence *last_fence;
    u32 num_syncs;
    struct xe_sync_entry *syncs;
    unsigned int fw_ref;
};

๐ŸŽ€ Members ๐ŸŽ€

okay so every single one of these, no skips, we're not doing that ๐Ÿ™…โ€โ™€๏ธ

  • oa โ€” the xe_oa backpointer. iconic little link back home ๐Ÿ 
  • gt โ€” the gt associated with the oa stream
  • oa_unit โ€” the oa unit for this stream
  • hwe โ€” the hardware engine associated with this oa stream ๐Ÿ”ฅ
  • stream_lock โ€” Lock serializing stream operations. one at a time bestie, we take turns ๐Ÿ’…
  • sample โ€” true if DRM_XE_OA_PROP_SAMPLE_OA is provided
  • exec_q โ€” Exec queue corresponding to DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID
  • k_exec_q โ€” kernel exec_q used for OA programming batch submissions ๐Ÿ‘‘
  • enabled โ€” Whether the stream is currently enabled (are we live or not, the eternal question)
  • oa_config โ€” the OA configuration used by the stream
  • oa_config_bos โ€” List of struct xe_oa_config_bo's
  • poll_check_timer โ€” Timer to periodically check for data in the OA buffer. yes she checks in on you, that's her love language โฐ
  • poll_wq โ€” Wait queue for waiting for OA data to be available
  • pollin โ€” Whether there is data available to read ๐Ÿ‘€
  • wait_num_reports โ€” Number of reports to wait for before signalling pollin
  • periodic โ€” Whether periodic sampling is currently enabled
  • period_exponent โ€” OA unit sampling frequency is derived from this ๐Ÿงฎ
  • oa_buffer โ€” the OA buffer for the stream
  • poll_period_ns โ€” hrtimer period for checking OA buffer for available data
  • oa_status โ€” temporary storage for oa_status register value
  • no_preempt โ€” Whether preemption and timeslicing is disabled for stream exec_q. like, no cutting in, no switching, none of that ๐Ÿ’€
  • xef โ€” the xe_file with which the stream was opened
  • ufence_syncobj โ€” User fence syncobj
  • ufence_timeline_value โ€” User fence timeline value
  • last_fence โ€” fence to use in stream destroy when needed
  • num_syncs โ€” size of the syncs array
  • syncs โ€” syncs to wait on and to signal ๐Ÿฆ‹
  • fw_ref โ€” Forcewake reference

๐ŸŒˆ SEE ALSO ๐ŸŒˆ

Kernel file ./drivers/gpu/drm/xe/xe_oa_types.h, plus these besties who also ate:

  • struct xe_oa_format(9)
  • struct xe_oa_unit(9)
  • struct xe_oa_gt(9)
  • struct xe_oa(9)
  • struct xe_oa_buffer(9)

k so that's the whole page, literally every field accounted for, no notes ๐Ÿ’œ this came out of ./drivers/gpu/drm/xe and it's dated October 2026 โ€” so yeah, mark your calendar, this struct is booked and busy ๐ŸŽ€โœจ๐Ÿซถ

๐Ÿ“ฆ where this page comes from