STRUCT XE_OA_STREAM(9)
๐ 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โ thexe_oabackpointer. iconic little link back home ๐gtโ thegtassociated with the oa streamoa_unitโ the oa unit for this streamhweโ the hardware engine associated with this oa stream ๐ฅstream_lockโ Lock serializing stream operations. one at a time bestie, we take turns ๐sampleโtrueifDRM_XE_OA_PROP_SAMPLE_OAis providedexec_qโ Exec queue corresponding toDRM_XE_OA_PROPERTY_EXEC_QUEUE_IDk_exec_qโ kernelexec_qused 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 streamoa_config_bosโ List ofstruct xe_oa_config_bo'spoll_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 availablepollinโ Whether there is data available to read ๐wait_num_reportsโ Number of reports to wait for before signallingpollinperiodicโ Whether periodic sampling is currently enabledperiod_exponentโ OA unit sampling frequency is derived from this ๐งฎoa_bufferโ the OA buffer for the streampoll_period_nsโ hrtimer period for checking OA buffer for available dataoa_statusโ temporary storage foroa_statusregister valueno_preemptโ Whether preemption and timeslicing is disabled for streamexec_q. like, no cutting in, no switching, none of that ๐xefโ thexe_filewith which the stream was openedufence_syncobjโ User fence syncobjufence_timeline_valueโ User fence timeline valuelast_fenceโ fence to use in stream destroy when needednum_syncsโ size of thesyncsarraysyncsโ 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
- 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