STRUCT DRM_XE_OA_UNIT(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct drm_xe_oa_unit (9) β€” Kernel API Manual πŸ¦‹

okay so bestie, this is a kernel API manual page for struct drm_xe_oa_unit and it's literally the glow-up doc for describing an OA unit. no cap, it's giving "here's everything you need to know about this one struct" energy ✨


🌸 NAME 🌸

struct drm_xe_oa_unit β€” describe OA unit

like, that's the whole job. it describes an OA unit. iconic, honestly πŸ’…


✨ SYNOPSIS ✨

struct drm_xe_oa_unit {
    __u64 extensions;
    __u32 oa_unit_id;
    __u32 oa_unit_type;
    __u64 capabilities;
  #define DRM_XE_OA_CAPS_BASE             (1 << 0);
  #define DRM_XE_OA_CAPS_SYNCS            (1 << 1);
  #define DRM_XE_OA_CAPS_OA_BUFFER_SIZE   (1 << 2);
  #define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3);
  #define DRM_XE_OA_CAPS_OAM              (1 << 4);
  #define DRM_XE_OA_CAPS_OA_UNIT_GT_ID    (1 << 5);
    __u64 oa_timestamp_freq;
    __u16 gt_id;
    __u16 reserved1[3];
    __u64 reserved[3];
    __u64 num_engines;
    struct drm_xe_engine_class_instance eci[];
};

look at her. absolute main character struct. 🫢


πŸŽ€ Members πŸŽ€

time for the vibe check on every single field, one by one, no skipping πŸ”₯

  • extensions β€” pointer to the first extension struct, if any ✨
  • oa_unit_id β€” the OA unit ID πŸ’–
  • oa_unit_type β€” the OA unit type, from enum drm_xe_oa_unit_type πŸ¦‹
  • capabilities β€” the OA capabilities bit-mask, so you know what she can do πŸ‘‘
  • oa_timestamp_freq β€” the OA timestamp freq ⭐
  • gt_id β€” the gt id for this OA unit 🌸
  • reserved1 β€” MBZ (yes bestie, that's "must be zero" β€” do not touch, fr fr) 🚫
  • reserved β€” MBZ (again! must be zero! leave it alone!) πŸ’€
  • num_engines β€” number of engines in the eci array πŸ”’
  • eci β€” the engines attached to this OA unit 🧚
ok real talk: both reserved1 and reserved are MBZ β€” must be zero. don't be the person who puts random garbage in there. just don't. πŸ™ˆ

🌈 SEE ALSO 🌈

Kernel file ./include/uapi/drm/xe_drm.h β€” plus the whole friend group, in order:

  • 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_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_status(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)

like, that's a whole friend group and they're all invited to the party πŸŽ‰


that's the whole page bestie, go read the struct, hydrate, and remember: MBZ means must be zero πŸ’–

and a lil sign-off: this one lives in ./include/uapi/drm, dated October 2026, and it's filed under struct drm_xe_oa_unit(9) β€” slay, go forth and describe your OA units 🌟

πŸ“¦ where this page comes from