drm/xe: Use fixed CCS mode when running in SR-IOV mode
authorMichal Wajdeczko <michal.wajdeczko@intel.com>
Fri, 14 Jun 2024 10:14:15 +0000 (12:14 +0200)
committerMichal Wajdeczko <michal.wajdeczko@intel.com>
Fri, 14 Jun 2024 21:26:26 +0000 (23:26 +0200)
We don't support changing CCS mode when running in SR-IOV mode yet.
When running as a PF driver just apply default ccs_mode=1 that VF
drivers will assume as already applied and fixed.

Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Reviewed-by: Lucas De Marchi <lucas.demarchi@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240614101415.2208-1-michal.wajdeczko@intel.com
drivers/gpu/drm/xe/xe_gt_ccs_mode.c

index 5d4cdbd69bc3a43f373a62e4376c2181caccc2ba..d2e4dc3aaf613ad84f99b45c1e1a6b141fed6250 100644 (file)
@@ -12,6 +12,7 @@
 #include "xe_gt_printk.h"
 #include "xe_gt_sysfs.h"
 #include "xe_mmio.h"
+#include "xe_sriov.h"
 
 static void __xe_gt_apply_ccs_mode(struct xe_gt *gt, u32 num_engines)
 {
@@ -75,7 +76,7 @@ static void __xe_gt_apply_ccs_mode(struct xe_gt *gt, u32 num_engines)
 
 void xe_gt_apply_ccs_mode(struct xe_gt *gt)
 {
-       if (!gt->ccs_mode)
+       if (!gt->ccs_mode || IS_SRIOV_VF(gt_to_xe(gt)))
                return;
 
        __xe_gt_apply_ccs_mode(gt, gt->ccs_mode);
@@ -110,6 +111,12 @@ ccs_mode_store(struct device *kdev, struct device_attribute *attr,
        u32 num_engines, num_slices;
        int ret;
 
+       if (IS_SRIOV(xe)) {
+               xe_gt_dbg(gt, "Can't change compute mode when running as %s\n",
+                         xe_sriov_mode_to_string(xe_device_sriov_mode(xe)));
+               return -EOPNOTSUPP;
+       }
+
        ret = kstrtou32(buff, 0, &num_engines);
        if (ret)
                return ret;