|
| #define | DRM_XE_DEVICE_QUERY 0x00 |
| |
| #define | DRM_XE_GEM_CREATE 0x01 |
| |
| #define | DRM_XE_GEM_MMAP_OFFSET 0x02 |
| |
| #define | DRM_XE_VM_CREATE 0x03 |
| |
| #define | DRM_XE_VM_DESTROY 0x04 |
| |
| #define | DRM_XE_VM_BIND 0x05 |
| |
| #define | DRM_XE_EXEC_QUEUE_CREATE 0x06 |
| |
| #define | DRM_XE_EXEC_QUEUE_DESTROY 0x07 |
| |
| #define | DRM_XE_EXEC_QUEUE_GET_PROPERTY 0x08 |
| |
| #define | DRM_XE_EXEC 0x09 |
| |
| #define | DRM_XE_WAIT_USER_FENCE 0x0a |
| |
| #define | DRM_XE_OBSERVATION 0x0b |
| |
| #define | DRM_XE_MADVISE 0x0c |
| |
| #define | DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_PROPERTY 0x0e |
| |
| #define | DRM_XE_VM_GET_PROPERTY 0x0f |
| |
| #define | DRM_IOCTL_XE_DEVICE_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_DEVICE_QUERY, struct drm_xe_device_query) |
| |
| #define | DRM_IOCTL_XE_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_GEM_CREATE, struct drm_xe_gem_create) |
| |
| #define | DRM_IOCTL_XE_GEM_MMAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_GEM_MMAP_OFFSET, struct drm_xe_gem_mmap_offset) |
| |
| #define | DRM_IOCTL_XE_VM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_CREATE, struct drm_xe_vm_create) |
| |
| #define | DRM_IOCTL_XE_VM_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_VM_DESTROY, struct drm_xe_vm_destroy) |
| |
| #define | DRM_IOCTL_XE_VM_BIND DRM_IOW(DRM_COMMAND_BASE + DRM_XE_VM_BIND, struct drm_xe_vm_bind) |
| |
| #define | DRM_IOCTL_XE_EXEC_QUEUE_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_CREATE, struct drm_xe_exec_queue_create) |
| |
| #define | DRM_IOCTL_XE_EXEC_QUEUE_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_DESTROY, struct drm_xe_exec_queue_destroy) |
| |
| #define | DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_GET_PROPERTY, struct drm_xe_exec_queue_get_property) |
| |
| #define | DRM_IOCTL_XE_EXEC DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC, struct drm_xe_exec) |
| |
| #define | DRM_IOCTL_XE_WAIT_USER_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_WAIT_USER_FENCE, struct drm_xe_wait_user_fence) |
| |
| #define | DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param) |
| |
| #define | DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise) |
| |
| #define | DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_QUERY_MEM_RANGE_ATTRS, struct drm_xe_vm_query_mem_range_attr) |
| |
| #define | DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_SET_PROPERTY, struct drm_xe_exec_queue_set_property) |
| |
| #define | DRM_IOCTL_XE_VM_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_GET_PROPERTY, struct drm_xe_vm_get_property) |
| |
| #define | DRM_XE_ENGINE_CLASS_RENDER 0 |
| |
| #define | DRM_XE_ENGINE_CLASS_COPY 1 |
| |
| #define | DRM_XE_ENGINE_CLASS_VIDEO_DECODE 2 |
| |
| #define | DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE 3 |
| |
| #define | DRM_XE_ENGINE_CLASS_COMPUTE 4 |
| |
| #define | DRM_XE_ENGINE_CLASS_VM_BIND 5 |
| |
| #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 |
| |
| #define | DRM_XE_QUERY_GT_TYPE_MAIN 0 |
| |
| #define | DRM_XE_QUERY_GT_TYPE_MEDIA 1 |
| |
| #define | DRM_XE_TOPO_DSS_GEOMETRY 1 |
| |
| #define | DRM_XE_TOPO_DSS_COMPUTE 2 |
| |
| #define | DRM_XE_TOPO_L3_BANK 3 |
| |
| #define | DRM_XE_TOPO_EU_PER_DSS 4 |
| |
| #define | DRM_XE_TOPO_SIMD16_EU_PER_DSS 5 |
| |
| #define | XE_QUERY_UC_TYPE_GUC_SUBMISSION 0 |
| |
| #define | XE_QUERY_UC_TYPE_HUC 1 |
| |
| #define | DRM_XE_DEVICE_QUERY_ENGINES 0 |
| |
| #define | DRM_XE_DEVICE_QUERY_MEM_REGIONS 1 |
| |
| #define | DRM_XE_DEVICE_QUERY_CONFIG 2 |
| |
| #define | DRM_XE_DEVICE_QUERY_GT_LIST 3 |
| |
| #define | DRM_XE_DEVICE_QUERY_HWCONFIG 4 |
| |
| #define | DRM_XE_DEVICE_QUERY_GT_TOPOLOGY 5 |
| |
| #define | DRM_XE_DEVICE_QUERY_ENGINE_CYCLES 6 |
| |
| #define | DRM_XE_DEVICE_QUERY_UC_FW_VERSION 7 |
| |
| #define | DRM_XE_DEVICE_QUERY_OA_UNITS 8 |
| |
| #define | DRM_XE_DEVICE_QUERY_PXP_STATUS 9 |
| |
| #define | DRM_XE_DEVICE_QUERY_EU_STALL 10 |
| |
| #define | DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY 0 |
| |
| #define | DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE 0 |
| |
| #define | DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0) |
| |
| #define | DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1) |
| |
| #define | DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2) |
| |
| #define | DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION (1 << 3) |
| |
| #define | DRM_XE_GEM_CPU_CACHING_WB 1 |
| |
| #define | DRM_XE_GEM_CPU_CACHING_WC 2 |
| |
| #define | DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER (1 << 0) |
| |
| #define | DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE (1 << 0) |
| |
| #define | DRM_XE_VM_CREATE_FLAG_LR_MODE (1 << 1) |
| |
| #define | DRM_XE_VM_CREATE_FLAG_FAULT_MODE (1 << 2) |
| |
| #define | DRM_XE_VM_CREATE_FLAG_NO_VM_OVERCOMMIT (1 << 3) |
| |
| #define | DRM_XE_VM_BIND_OP_MAP 0x0 |
| |
| #define | DRM_XE_VM_BIND_OP_UNMAP 0x1 |
| |
| #define | DRM_XE_VM_BIND_OP_MAP_USERPTR 0x2 |
| |
| #define | DRM_XE_VM_BIND_OP_UNMAP_ALL 0x3 |
| |
| #define | DRM_XE_VM_BIND_OP_PREFETCH 0x4 |
| |
| #define | DRM_XE_VM_BIND_FLAG_READONLY (1 << 0) |
| |
| #define | DRM_XE_VM_BIND_FLAG_IMMEDIATE (1 << 1) |
| |
| #define | DRM_XE_VM_BIND_FLAG_NULL (1 << 2) |
| |
| #define | DRM_XE_VM_BIND_FLAG_DUMPABLE (1 << 3) |
| |
| #define | DRM_XE_VM_BIND_FLAG_CHECK_PXP (1 << 4) |
| |
| #define | DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR (1 << 5) |
| |
| #define | DRM_XE_VM_BIND_FLAG_MADVISE_AUTORESET (1 << 6) |
| |
| #define | DRM_XE_VM_BIND_FLAG_DECOMPRESS (1 << 7) |
| |
| #define | DRM_XE_CONSULT_MEM_ADVISE_PREF_LOC -1 |
| |
| #define | FAULT_ACCESS_TYPE_READ 0 |
| |
| #define | FAULT_ACCESS_TYPE_WRITE 1 |
| |
| #define | FAULT_ACCESS_TYPE_ATOMIC 2 |
| |
| #define | FAULT_TYPE_NOT_PRESENT 0 |
| |
| #define | FAULT_TYPE_WRITE_ACCESS 1 |
| |
| #define | FAULT_TYPE_ATOMIC_ACCESS 2 |
| |
| #define | FAULT_LEVEL_PTE 0 |
| |
| #define | FAULT_LEVEL_PDE 1 |
| |
| #define | FAULT_LEVEL_PDP 2 |
| |
| #define | FAULT_LEVEL_PML4 3 |
| |
| #define | FAULT_LEVEL_PML5 4 |
| |
| #define | DRM_XE_VM_GET_PROPERTY_FAULTS 0 |
| |
| #define | DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY 0 |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0 |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1 |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 2 |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_HANG_REPLAY_STATE 3 |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP 4 |
| |
| #define | DRM_XE_MULTI_GROUP_CREATE (1ull << 63) |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY 5 |
| |
| #define | DRM_XE_EXEC_QUEUE_SET_DISABLE_STATE_CACHE_PERF_FIX 6 |
| |
| #define | DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0) |
| |
| #define | DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN 0 |
| |
| #define | DRM_XE_SYNC_TYPE_SYNCOBJ 0x0 |
| |
| #define | DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ 0x1 |
| |
| #define | DRM_XE_SYNC_TYPE_USER_FENCE 0x2 |
| |
| #define | DRM_XE_SYNC_FLAG_SIGNAL (1 << 0) |
| |
| #define | DRM_XE_MAX_SYNCS 1024 |
| |
| #define | DRM_XE_UFENCE_WAIT_OP_EQ 0x0 |
| |
| #define | DRM_XE_UFENCE_WAIT_OP_NEQ 0x1 |
| |
| #define | DRM_XE_UFENCE_WAIT_OP_GT 0x2 |
| |
| #define | DRM_XE_UFENCE_WAIT_OP_GTE 0x3 |
| |
| #define | DRM_XE_UFENCE_WAIT_OP_LT 0x4 |
| |
| #define | DRM_XE_UFENCE_WAIT_OP_LTE 0x5 |
| |
| #define | DRM_XE_UFENCE_WAIT_FLAG_ABSTIME (1 << 0) |
| |
| #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) |
| |
| #define | DRM_XE_OA_EXTENSION_SET_PROPERTY 0 |
| |
| #define | DRM_XE_OA_FORMAT_MASK_FMT_TYPE (0xffu << 0) |
| |
| #define | DRM_XE_OA_FORMAT_MASK_COUNTER_SEL (0xffu << 8) |
| |
| #define | DRM_XE_OA_FORMAT_MASK_COUNTER_SIZE (0xffu << 16) |
| |
| #define | DRM_XE_OA_FORMAT_MASK_BC_REPORT (0xffu << 24) |
| |
| #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) |
| |
| #define | DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xf |
| |
| #define | DRM_XE_EU_STALL_EXTENSION_SET_PROPERTY 0 |
| |
| #define | DRM_XE_EU_STALL_CAPS_BASE (1 << 0) |
| |
| #define | DRM_XE_MEM_RANGE_ATTR_PREFERRED_LOC 0 |
| |
| #define | DRM_XE_MEM_RANGE_ATTR_ATOMIC 1 |
| |
| #define | DRM_XE_MEM_RANGE_ATTR_PAT 2 |
| |
| #define | DRM_XE_VMA_ATTR_PURGEABLE_STATE 3 |
| |
| #define | DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0 |
| |
| #define | DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -1 |
| |
| #define | DRM_XE_MIGRATE_ALL_PAGES 0 |
| |
| #define | DRM_XE_MIGRATE_ONLY_SYSTEM_PAGES 1 |
| |
| #define | DRM_XE_ATOMIC_UNDEFINED 0 |
| |
| #define | DRM_XE_ATOMIC_DEVICE 1 |
| |
| #define | DRM_XE_ATOMIC_GLOBAL 2 |
| |
| #define | DRM_XE_ATOMIC_CPU 3 |
| |
| #define | DRM_XE_VMA_PURGEABLE_STATE_WILLNEED 0 |
| |
| #define | DRM_XE_VMA_PURGEABLE_STATE_DONTNEED 1 |
| |
| #define | DRM_XE_RAS_ERROR_SEVERITY_NAMES |
| |
| #define | DRM_XE_RAS_ERROR_COMPONENT_NAMES |
| |
| #define DRM_XE_DEVICE_QUERY 0x00 |
DOC: Xe Device Block Diagram
The diagram below represents a high-level simplification of a discrete GPU supported by the Xe driver. It shows some device components which are necessary to understand this API, as well as how their relations to each other. This diagram does not represent real hardware::
┌──────────────────────────────────────────────────────────────────┐ │ ┌──────────────────────────────────────────────────┐ ┌─────────┐ │ │ │ ┌───────────────────────┐ ┌─────┐ │ │ ┌─────┐ │ │ │ │ │ VRAM0 ├───┤ ... │ │ │ │VRAM1│ │ │ │ │ └───────────┬───────────┘ └─GT1─┘ │ │ └──┬──┘ │ │ │ │ ┌──────────────────┴───────────────────────────┐ │ │ ┌──┴──┐ │ │ │ │ │ ┌─────────────────────┐ ┌─────────────────┐ │ │ │ │ │ │ │ │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │RCS0 │ │BCS0 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VCS0 │ │VCS1 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │VECS0│ │VECS1│ │ │ │ │ │ ... │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │ │ │ │ │ │EU│ │EU│ │EU│ │EU│ │ │ │CCS0 │ │CCS1 │ │ │ │ │ │ │ │ │ │ │ │ │ └──┘ └──┘ └──┘ └──┘ │ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ └─────────DSS─────────┘ │ ┌─────┐ ┌─────┐ │ │ │ │ │ │ │ │ │ │ │ │ │CCS2 │ │CCS3 │ │ │ │ │ │ │ │ │ │ │ │ ┌─────┐ ┌─────┐ ┌─────┐ │ └─────┘ └─────┘ │ │ │ │ │ │ │ │ │ │ │ │ ... │ │ ... │ │ ... │ │ │ │ │ │ │ │ │ │ │ │ │ └─DSS─┘ └─DSS─┘ └─DSS─┘ └─────Engines─────┘ │ │ │ │ │ │ │ │ │ └───────────────────────────GT0────────────────┘ │ │ └─GT2─┘ │ │ │ └────────────────────────────Tile0─────────────────┘ └─ Tile1──┘ │ └─────────────────────────────Device0───────┬──────────────────────┘ │ ───────────────────────┴────────── PCI bus DOC: Xe uAPI Overview
This section aims to describe the Xe's IOCTL entries, its structs, and other Xe related uAPI such as uevents and PMU (Platform Monitoring Unit) related entries and usage.
List of supported IOCTLs:
- &DRM_IOCTL_XE_DEVICE_QUERY
- &DRM_IOCTL_XE_GEM_CREATE
- &DRM_IOCTL_XE_GEM_MMAP_OFFSET
- &DRM_IOCTL_XE_VM_CREATE
- &DRM_IOCTL_XE_VM_DESTROY
- &DRM_IOCTL_XE_VM_BIND
- &DRM_IOCTL_XE_EXEC_QUEUE_CREATE
- &DRM_IOCTL_XE_EXEC_QUEUE_DESTROY
- &DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY
- &DRM_IOCTL_XE_EXEC
- &DRM_IOCTL_XE_WAIT_USER_FENCE
- &DRM_IOCTL_XE_OBSERVATION
- &DRM_IOCTL_XE_MADVISE
- &DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS
- &DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY
- &DRM_IOCTL_XE_VM_GET_PROPERTY
enum drm_xe_oa_property_id - OA stream property IDs
Stream params are specified as a chain of &struct drm_xe_ext_set_property structs, with property values from &enum drm_xe_oa_property_id and &struct drm_xe_user_extension base.name set to DRM_XE_OA_EXTENSION_SET_PROPERTY. The param field in &struct drm_xe_observation_param points to the first &struct drm_xe_ext_set_property struct.
Exactly the same mechanism is also used for stream reconfiguration using the DRM_XE_OBSERVATION_IOCTL_CONFIG observation stream fd ioctl, though only a subset of properties below can be specified for stream reconfiguration.
| Enumerator |
|---|
| DRM_XE_OA_PROPERTY_OA_UNIT_ID | @DRM_XE_OA_PROPERTY_OA_UNIT_ID: ID of the OA unit on which to open the OA stream, see oa_unit_id in &struct drm_xe_oa_unit. Defaults to 0 if not provided.
|
| DRM_XE_OA_PROPERTY_SAMPLE_OA | @DRM_XE_OA_PROPERTY_SAMPLE_OA: A value of 1 requests inclusion of raw OA unit reports or stream samples in a global buffer attached to an OA unit.
|
| DRM_XE_OA_PROPERTY_OA_METRIC_SET | @DRM_XE_OA_PROPERTY_OA_METRIC_SET: OA metrics defining contents of OA reports, previously added via DRM_XE_OBSERVATION_OP_ADD_CONFIG.
|
| DRM_XE_OA_PROPERTY_OA_FORMAT | @DRM_XE_OA_PROPERTY_OA_FORMAT: OA counter report format
|
| DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT | @DRM_XE_OA_PROPERTY_OA_PERIOD_EXPONENT: Requests periodic OA unit sampling with sampling frequency proportional to 2^(period_exponent + 1)
|
| DRM_XE_OA_PROPERTY_OA_DISABLED | @DRM_XE_OA_PROPERTY_OA_DISABLED: A value of 1 will open the OA stream in a DISABLED state (see DRM_XE_OBSERVATION_IOCTL_ENABLE).
|
| DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID | @DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID: Open the stream for a specific exec_queue_id. OA queries can be executed on this exec queue.
|
| DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE | @DRM_XE_OA_PROPERTY_OA_ENGINE_INSTANCE: Optional engine instance to pass along with DRM_XE_OA_PROPERTY_EXEC_QUEUE_ID or will default to 0.
|
| DRM_XE_OA_PROPERTY_NO_PREEMPT | @DRM_XE_OA_PROPERTY_NO_PREEMPT: Allow preemption and timeslicing to be disabled for the stream exec queue.
|
| DRM_XE_OA_PROPERTY_NUM_SYNCS | @DRM_XE_OA_PROPERTY_NUM_SYNCS: Number of syncs in the sync array specified in DRM_XE_OA_PROPERTY_SYNCS
|
| DRM_XE_OA_PROPERTY_SYNCS | @DRM_XE_OA_PROPERTY_SYNCS: Pointer to &struct drm_xe_sync array with array size specified via DRM_XE_OA_PROPERTY_NUM_SYNCS. OA configuration will wait till input fences signal. Output fences will signal after the new OA configuration takes effect. For DRM_XE_SYNC_TYPE_USER_FENCE, addr is a user pointer, similar to the VM bind case.
|
| DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE | @DRM_XE_OA_PROPERTY_OA_BUFFER_SIZE: Size of OA buffer to be allocated by the driver in bytes. Supported sizes are powers of 2 from 128 KiB to 128 MiB. When not specified, a 16 MiB OA buffer is allocated by default.
|
| DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS | @DRM_XE_OA_PROPERTY_WAIT_NUM_REPORTS: Number of reports to wait for before unblocking poll or read
|
DOC: Xe DRM RAS
The enums and strings defined below map to the attributes of the DRM RAS Netlink Interface. Refer to Documentation/netlink/specs/drm_ras.yaml for complete interface specification.
Node Registration
The driver registers DRM RAS nodes for each error severity level. enum drm_xe_ras_error_severity defines the node-id, while DRM_XE_RAS_ERROR_SEVERITY_NAMES maps node-id to node-name.
Error Classification
Each node contains a list of error counters. Each error is identified by a error-id and an error-name. enum drm_xe_ras_error_component defines the error-id, while DRM_XE_RAS_ERROR_COMPONENT_NAMES maps error-id to error-name.
User Interface
To retrieve error values of a error counter, userspace applications should follow the below steps:
- Use command LIST_NODES to enumerate all available nodes
- Select node by node-id or node-name
- Use command GET_ERROR_COUNTERS to list errors of specific node
- Query specific error values using either error-id or error-name
.. code-block:: C
// Lookup tables for ID-to-name resolution static const char *nodes[] = DRM_XE_RAS_ERROR_SEVERITY_NAMES; static const char *errors[] = DRM_XE_RAS_ERROR_COMPONENT_NAMES; enum drm_xe_ras_error_severity - DRM RAS error severity.
| Enumerator |
|---|
| DRM_XE_RAS_ERR_SEV_CORRECTABLE | @DRM_XE_RAS_ERR_SEV_CORRECTABLE: Correctable Error
|
| DRM_XE_RAS_ERR_SEV_UNCORRECTABLE | @DRM_XE_RAS_ERR_SEV_UNCORRECTABLE: Uncorrectable Error
|
| DRM_XE_RAS_ERR_SEV_MAX | @DRM_XE_RAS_ERR_SEV_MAX: Max severity
|