STRUCT DRM_XE_OA_STREAM_STATUS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_xe_oa_stream_status β€” the Kernel API Manual, bestie edition πŸŽ€

okay so quick vibe check: this is a Kernel API Manual page, and it's all about struct drm_xe_oa_stream_status β€” the OA stream status that gets returned from the %DRM_XE_OBSERVATION_IOCTL_STATUS observation stream fd ioctl ✨ Userspace can call that ioctl to query the stream status in response to an EIO errno coming out of the observation fd read(). So like… when your read says EIO, that's your cue to go ask what's up 🫢


✨ SYNOPSIS ✨

struct drm_xe_oa_stream_status {
    __u64 extensions;
    __u64 oa_status;
  #define DRM_XE_OASTATUS_MMIO_TRG_Q_FULL         (1 << 3);
  #define DRM_XE_OASTATUS_COUNTER_OVERFLOW        (1 << 2);
  #define DRM_XE_OASTATUS_BUFFER_OVERFLOW         (1 << 1);
  #define DRM_XE_OASTATUS_REPORT_LOST             (1 << 0);
    __u64 reserved[3];
 };

like, copy it exactly, no cap, character for character πŸ’€ those #defines are right there inside the struct body and they're staying there πŸ”₯


πŸ¦‹ Members πŸ¦‹

  • extensions β€” pointer to the first extension struct, if there is one (if any πŸŽ€). basically the "there's more where that came from" field.
  • oa_status β€” the OA stream status itself (see Bspec 46717/61226 for the receipts πŸ‘‘).
  • reserved β€” reserved for future use πŸ™ˆ hands off, it's saving space for later.

🌈 SEE ALSO 🌈

the friend group is large, so buckle up bestie β€” every single one of these is invited to the group chat πŸ’œ
  • Kernel file ./include/uapi/drm/xe_drm.h
  • Xe Device Block Diagram(9)
  • Xe uAPI Overview(9)
  • Xe IOCTL Extensions(9)
  • struct drm_xe_user_extension(9)
  • struct drm_xe_ext_set_property(9)
  • struct drm_xe_engine_class_instance(9)
  • struct drm_xe_engine(9)
  • struct drm_xe_query_engines(9)
  • enum drm_xe_memory_class(9)
  • struct drm_xe_mem_region(9)
  • struct drm_xe_query_mem_regions(9)
  • struct drm_xe_query_config(9)
  • struct drm_xe_gt(9)
  • struct drm_xe_query_gt_list(9)
  • struct drm_xe_query_topology_mask(9)
  • struct drm_xe_query_engine_cycles(9)
  • struct drm_xe_query_uc_fw_version(9)
  • struct drm_xe_query_pxp_status(9)
  • struct drm_xe_device_query(9)
  • struct drm_xe_gem_create(9)
  • struct drm_xe_gem_mmap_offset(9)
  • struct drm_xe_vm_create(9)
  • struct drm_xe_vm_destroy(9)
  • struct drm_xe_vm_bind_op(9)
  • struct drm_xe_vm_bind(9)
  • struct drm_xe_vm_get_property(9)
  • struct drm_xe_exec_queue_create(9)
  • struct drm_xe_exec_queue_destroy(9)
  • struct drm_xe_exec_queue_get_property(9)
  • struct drm_xe_sync(9)
  • struct drm_xe_exec(9)
  • struct drm_xe_wait_user_fence(9)
  • enum drm_xe_observation_type(9)
  • enum drm_xe_observation_op(9)
  • struct drm_xe_observation_param(9)
  • enum drm_xe_observation_ioctls(9)
  • enum drm_xe_oa_unit_type(9)
  • struct drm_xe_oa_unit(9)
  • struct drm_xe_query_oa_units(9)
  • enum drm_xe_oa_format_type(9)
  • enum drm_xe_oa_property_id(9)
  • struct drm_xe_oa_config(9)
  • struct drm_xe_oa_stream_info(9)
  • enum drm_xe_pxp_session_type(9)
  • enum drm_xe_eu_stall_property_id(9)
  • struct drm_xe_query_eu_stall(9)
  • struct drm_xe_madvise(9)
  • struct drm_xe_mem_range_attr(9)
  • struct drm_xe_vm_query_mem_range_attr(9)
  • struct drm_xe_exec_queue_set_property(9)
  • Xe DRM RAS(9)
  • enum drm_xe_ras_error_severity(9)
  • enum drm_xe_ras_error_component(9)

and that's the whole page, periodt πŸ’… this lil icon lives under ./include/uapi/drm, dated October 2026 β€” so go read it, slay, and remember: EIO on your observation fd read() is not the end, it's an invitation to query the status πŸ¦‹βœ¨ bye bestie, ily, go check your oa_status πŸŽ€

πŸ“¦ where this page comes from