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 | 106 | #define DRM_XE_OBSERVATION 0x0b |
| 107 | 107 | #define DRM_XE_MADVISE 0x0c |
| 108 | 108 | #define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d |
| 109 | +#define DRM_XE_EXEC_QUEUE_SET_PROPERTY 0x0e | |
| 109 | 110 | |
| 110 | 111 | /* Must be kept compact -- no holes */ |
| 111 | 112 | |
| @@ -123,6 +124,7 @@ extern "C" { · 11 unmodified lines | ||
| 123 | 124 | #define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param) |
| 124 | 125 | #define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise) |
| 125 | 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 | 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 | 2344 | #if defined(__cplusplus) |
| 2319 | 2345 | } |
| 2320 | 2346 | #endif |