STRUCT DRM_XE_QUERY_CONFIG(9)

๐Ÿ“ฆ version 7.3.1, in nixpkgs unstable

๐Ÿ’… struct drm_xe_query_config(9) ๐Ÿ’…

okay so bestie, grab your iced coffee โ˜• because this is the page where the Xe driver tells you literally everything about the device you're holding. it's from the Kernel API Manual, and it's giving "spec sheet but make it cute." let's go ๐Ÿซถ


โœจ NAME โœจ

struct drm_xe_query_config โ€” describe the device configuration ๐ŸŒธ


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

struct drm_xe_query_config {
    __u32 num_params;
    __u32 pad;
  #define DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID   0;
  #define DRM_XE_QUERY_CONFIG_FLAGS                       1;
  #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM       (1 << 0);
  #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY        (1 << 1);
  #define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR    (1 << 2);
  #define DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT (1 << 3);
  #define DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX
  (1 << 4);
  #define DRM_XE_QUERY_CONFIG_FLAG_HAS_PURGING_SUPPORT    (1 << 5);
  #define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT               2;
  #define DRM_XE_QUERY_CONFIG_VA_BITS                     3;
  #define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY     4;
    __u64 info[];
};
yes the DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX line wraps, and yes we are keeping it exactly like that. do not @ me ๐Ÿ’€

๐ŸŽ€ Members (the actual members, not like members members) ๐ŸŽ€

  • num_params โ€” how many parameters are coming back to you in info. it's the headcount, bestie ๐Ÿงฎ
  • pad โ€” MBZ. that's "must be zero." don't touch it, don't fill it, just vibe ๐Ÿšซ
  • info โ€” the array of elements holding the config info. this is the main character right here ๐Ÿ‘‘

๐Ÿ’– Description ๐Ÿ’–

so here's the tea โ˜•: if you do a query with a struct drm_xe_device_query where .query equals DRM_XE_DEVICE_QUERY_CONFIG, the reply comes back using struct drm_xe_query_config in .data. that's it, that's the handshake ๐Ÿค

the index in info can be:

  1. DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID โ€” the Device ID is in the lower 16 bits, and the device revision is the next 8 bits ๐ŸŒˆ (two facts in one slot, efficient queen)
  2. DRM_XE_QUERY_CONFIG_FLAGS โ€” flags describing the device configuration, peep the list right below ๐Ÿ‘‡
  3. DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM โ€” this flag is set if the device has usable VRAM ๐Ÿ”ฅ
  4. DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY โ€” set if the device has low latency hint support โšก
  5. DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR โ€” set if the device has CPU address mirroring support ๐Ÿชž
  6. DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT โ€” set if the device supports the userspace hint DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION. this one is exposed only on Xe2+, so don't go looking for it on older silicon ๐Ÿ™ˆ
  7. DRM_XE_QUERY_CONFIG_FLAG_HAS_DISABLE_STATE_CACHE_PERF_FIX โ€” set if a queue can be created with DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX ๐ŸŽฏ
  8. DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT โ€” the minimal memory alignment required by this device, typically SZ_4K or SZ_64K ๐Ÿ“
  9. DRM_XE_QUERY_CONFIG_VA_BITS โ€” maximum bits of a virtual address ๐Ÿง 
  10. DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY โ€” the value of the highest available exec queue priority ๐Ÿ†
ngl, there's also DRM_XE_QUERY_CONFIG_FLAG_HAS_PURGING_SUPPORT sitting in the synopsis up there with (1 << 5) energy. it's in the defines, bestie, we don't leave defines behind ๐Ÿ’œ

๐ŸŒŸ SEE ALSO ๐ŸŒŸ

Kernel file ./include/uapi/drm/xe_drm.h โ€” plus the whole friend group, no cap:

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

and that's the whole page, bestie, you ate that ๐Ÿ“ sign-off time: this little masterpiece lives at ./include/uapi/drm, dated October 2026, and it's struct drm_xe_query_config(9) in the Kernel API Manual โ€” go forth and query your config, icon ๐Ÿ’…โœจ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from