STRUCT DRM_XE_USER_EXTENSION(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct drm_xe_user_extension(9) β€” the Kernel API Manual, bestie edition ✨

okay so this is a page straight out of the Kernel API Manual, section 9, and it's literally the blueprint for chaining extensions together. Think of it as the friendship-bracelet clasp of the Xe uAPI: it's the base class that lets one extension point at the next one, and the next one, and so on πŸŽ€


🌸 NAME 🌸

struct drm_xe_user_extension β€” the base class for defining a chain of extensions πŸ¦‹


✨ SYNOPSIS ✨

struct drm_xe_user_extension {
    __u64 next_extension;
    __u32 name;
    __u32 pad;
};

that's the whole thing. four fields. iconic, minimal, no notes πŸ’…


πŸŽ€ Members πŸŽ€

  • next_extension β€” a pointer to the next struct drm_xe_user_extension, or zero if that's the end of the line, bestie. zero means "no more, we're done here" 🫢
  • name β€” the name of the extension. and like… note that the name here is just some integer. not a string, not a label, just an integer, fr fr.

also real talk: the name space for this is not global for the whole driver. its scope/meaning is limited to the specific piece of uAPI which has embedded the struct drm_xe_user_extension. so don't go assuming an integer means the same thing everywhere, iykyk πŸ™ˆ

  • pad β€” MBZ. that's "must be zero". all undefined bits must be zero, no cap. not "probably zero", not "zero-ish" β€” zero πŸ’€

πŸ”₯ SEE ALSO πŸ”₯

everything below is(9) and it's a whole lot, so buckle up babes:

  • Kernel file ./include/uapi/drm/xe_drm.h
  • Xe Device Block Diagram(9)
  • Xe uAPI Overview(9)
  • Xe IOCTL Extensions(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_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)

okay that's the whole page, you ate it πŸ’– this lil guy lives in ./include/uapi/drm, and the date on the tin is October 2026 β€” so mark your calendar, screenshot it, send it to the group chat, and go chain those extensions responsibly, bestie πŸŒˆπŸ‘‘

πŸ“¦ where this page comes from