]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/xe/multi_queue: Refactor check for multi queue support for engine class
authorUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Thu, 7 May 2026 16:20:21 +0000 (09:20 -0700)
committerUmesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Fri, 8 May 2026 20:48:41 +0000 (13:48 -0700)
xe exec queue code is using a check to see if a class of engines support
multi queue. This check is also needed by other code, so move it to
xe_gt and export it for others.

Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Link: https://patch.msgid.link/20260507162016.3888309-17-umesh.nerlige.ramappa@intel.com
drivers/gpu/drm/xe/xe_exec_queue.c
drivers/gpu/drm/xe/xe_gt.h

index 071b8c41df43ed4fa1e7747ba0f3967ed415472b..62a75c8fe72fde3d12713cfd5b5607911efc6d9b 100644 (file)
@@ -852,11 +852,6 @@ static int xe_exec_queue_group_init(struct xe_device *xe, struct xe_exec_queue *
        return 0;
 }
 
-static inline bool xe_exec_queue_supports_multi_queue(struct xe_exec_queue *q)
-{
-       return q->gt->info.multi_queue_engine_class_mask & BIT(q->class);
-}
-
 static int xe_exec_queue_group_validate(struct xe_device *xe, struct xe_exec_queue *q,
                                        u32 primary_id)
 {
@@ -931,7 +926,7 @@ static void xe_exec_queue_group_delete(struct xe_device *xe, struct xe_exec_queu
 static int exec_queue_set_multi_group(struct xe_device *xe, struct xe_exec_queue *q,
                                      u64 value)
 {
-       if (XE_IOCTL_DBG(xe, !xe_exec_queue_supports_multi_queue(q)))
+       if (XE_IOCTL_DBG(xe, !xe_gt_supports_multi_queue(q->gt, q->class)))
                return -ENODEV;
 
        if (XE_IOCTL_DBG(xe, !xe_device_uc_enabled(xe)))
index de7e47763411f603edca3a7276da7333155bee1d..4150aa594f05f59c405896264f3ad798da5bc1fe 100644 (file)
@@ -155,4 +155,19 @@ static inline bool xe_gt_recovery_pending(struct xe_gt *gt)
                xe_gt_sriov_vf_recovery_pending(gt);
 }
 
+/**
+ * xe_gt_supports_multi_queue() - Check if gt supports multi queue for the
+ * specified engine class.
+ *
+ * @gt: the GT object
+ * @class: hwe class type
+ *
+ * Return: true if the hw engine class supports multi queue, else false
+ */
+static inline bool xe_gt_supports_multi_queue(const struct xe_gt *gt,
+                                             enum xe_engine_class class)
+{
+       return gt->info.multi_queue_engine_class_mask & BIT(class);
+}
+
 #endif