This patch adds support for exec_queue set_property ioctl. It is derived from the original work which is part of https://patchwork.freedesktop.org/series/112188/ Currently only DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY property can be dynamically set. v2: Check for and update kernel-doc which property this ioctl supports (Matt Brost)
Showing the changes to include/uapi (1 of 4 files). Show all
Unified · Split
| @@ -106,6 +106,7 @@ extern "C" { · 105 unmodified lines | |||
| 106 | #define DRM_XE_OBSERVATION 0x0b | 106 | #define DRM_XE_OBSERVATION 0x0b |
| 107 | #define DRM_XE_MADVISE 0x0c | 107 | #define DRM_XE_MADVISE 0x0c |
| 108 | #define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d | 108 | #define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d |
| 109 | #define DRM_XE_EXEC_QUEUE_SET_PROPERTY 0x0e | ||
| 109 | 110 | ||
| 110 | /* Must be kept compact -- no holes */ | 111 | /* Must be kept compact -- no holes */ |
| 111 | 112 | ||
| @@ -123,6 +124,7 @@ extern "C" { · 11 unmodified lines | |||
| 123 | #define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param) | 124 | #define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param) |
| 124 | #define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise) | 125 | #define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise) |
| 125 | #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) | 126 | #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) |
| 127 | #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) | ||
| 126 | 128 | ||
| 127 | /** | 129 | /** |
| 128 | * DOC: Xe IOCTL Extensions | 130 | * DOC: Xe IOCTL Extensions |
| @@ -2315,6 +2317,30 @@ struct drm_xe_vm_query_mem_range_attr { · 2186 unmodified lines | |||
| 2315 | 2317 | ||
| 2316 | }; | 2318 | }; |
| 2317 | 2319 | ||
| 2320 | /** | ||
| 2321 | * struct drm_xe_exec_queue_set_property - exec queue set property | ||
| 2322 | * | ||
| 2323 | * Sets execution queue properties dynamically. | ||
| 2324 | * Currently only %DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY | ||
| 2325 | * property can be dynamically set. | ||
| 2326 | */ | ||
| 2327 | struct drm_xe_exec_queue_set_property { | ||
| 2328 | /** @extensions: Pointer to the first extension struct, if any */ | ||
| 2329 | __u64 extensions; | ||
| 2330 | |||
| 2331 | /** @exec_queue_id: Exec queue ID */ | ||
| 2332 | __u32 exec_queue_id; | ||
| 2333 | |||
| 2334 | /** @property: property to set */ | ||
| 2335 | __u32 property; | ||
| 2336 | |||
| 2337 | /** @value: property value */ | ||
| 2338 | __u64 value; | ||
| 2339 | |||
| 2340 | /** @reserved: Reserved */ | ||
| 2341 | __u64 reserved[2]; | ||
| 2342 | }; | ||
| 2343 | |||
| 2318 | #if defined(__cplusplus) | 2344 | #if defined(__cplusplus) |
| 2319 | } | 2345 | } |
| 2320 | #endif | 2346 | #endif |