[PATCH v2] drm/xe/vf: Enable CCS save/restore only on supported GUC versions

Satyanarayana K V P satyanarayana.k.v.p at intel.com
Wed Aug 20 11:48:29 UTC 2025


CCS save/restore is supported starting with GuC compatibility version
1.23.0. Gate the feature on the GuC firmware version and keep it disabled
on older or unsupported versions.

Fixes: f3009272ff2e ("drm/xe/vf: Create contexts for CCS read write")
Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p at intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>

---
V1 -> V2:
- Fixed review comments (Michal)
---
 drivers/gpu/drm/xe/xe_sriov_vf_ccs.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
index 4872e43eb440..9ace6f83c0ec 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf_ccs.c
@@ -10,6 +10,7 @@
 #include "xe_device.h"
 #include "xe_exec_queue.h"
 #include "xe_exec_queue_types.h"
+#include "xe_guc.h"
 #include "xe_guc_submit.h"
 #include "xe_lrc.h"
 #include "xe_migrate.h"
@@ -258,6 +259,7 @@ static void xe_sriov_vf_ccs_fini(void *arg)
 int xe_sriov_vf_ccs_init(struct xe_device *xe)
 {
 	struct xe_tile *tile = xe_device_get_root_tile(xe);
+	struct xe_guc *guc = &tile->primary_gt->uc.guc;
 	enum xe_sriov_vf_ccs_rw_ctxs ctx_id;
 	struct xe_tile_vf_ccs *ctx;
 	struct xe_exec_queue *q;
@@ -268,6 +270,11 @@ int xe_sriov_vf_ccs_init(struct xe_device *xe)
 	xe_assert(xe, !IS_DGFX(xe));
 	xe_assert(xe, xe_device_has_flat_ccs(xe));
 
+	if (GUC_SUBMIT_VER(guc) < MAKE_GUC_VER(1, 23, 0)) {
+		xe_sriov_info(xe, "CCS s/r is not supported by this Guc version\n");
+		return 0;
+	}
+
 	for_each_ccs_rw_ctx(ctx_id) {
 		ctx = &tile->sriov.vf.ccs[ctx_id];
 		ctx->ctx_id = ctx_id;
-- 
2.43.0



More information about the Intel-xe mailing list