summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSatyanarayana K V P <satyanarayana.k.v.p@intel.com>2025-12-01 12:50:13 +0300
committerMichal Wajdeczko <michal.wajdeczko@intel.com>2025-12-02 18:11:24 +0300
commit2e2dab20dd664ea1ca6ed2342f6dc509496c9290 (patch)
tree9413e4344244876ee7dcc888408bcd184bfc7f86 /drivers
parentaa8225d4ee87d35eca89877981d8038ea2c0f402 (diff)
downloadlinux-2e2dab20dd664ea1ca6ed2342f6dc509496c9290.tar.xz
drm/xe/vf: Enable VF migration only on supported GuC versions
Enable VF migration starting with GuC 70.54.0 (compatibility version 1.27.0) which supports additional VF2GUC_RESFIX_START message required to handle migration recovery in a more robust way. Signed-off-by: Satyanarayana K V P <satyanarayana.k.v.p@intel.com> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Cc: Matthew Brost <matthew.brost@intel.com> Cc: Tomasz Lis <tomasz.lis@intel.com> Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Link: https://patch.msgid.link/20251201095011.21453-7-satyanarayana.k.v.p@intel.com
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/xe/xe_sriov_vf.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/gpu/drm/xe/xe_sriov_vf.c b/drivers/gpu/drm/xe/xe_sriov_vf.c
index 284ce37ca92d..d56b8cfea50b 100644
--- a/drivers/gpu/drm/xe/xe_sriov_vf.c
+++ b/drivers/gpu/drm/xe/xe_sriov_vf.c
@@ -170,6 +170,26 @@ void xe_sriov_vf_init_early(struct xe_device *xe)
vf_migration_init_early(xe);
}
+static bool vf_migration_init_late(struct xe_device *xe)
+{
+ struct xe_gt *gt = xe_root_mmio_gt(xe);
+ struct xe_uc_fw_version guc_version;
+
+ if (!xe_sriov_vf_migration_supported(xe))
+ return 0;
+
+ xe_gt_sriov_vf_guc_versions(gt, NULL, &guc_version);
+ if (MAKE_GUC_VER_STRUCT(guc_version) < MAKE_GUC_VER(1, 27, 0)) {
+ xe_sriov_vf_migration_disable(xe,
+ "requires GuC ABI >= 1.27.0, but only %u.%u.%u found",
+ guc_version.major, guc_version.minor,
+ guc_version.patch);
+ return 0;
+ }
+
+ return xe_sriov_vf_ccs_init(xe);
+}
+
/**
* xe_sriov_vf_init_late() - SR-IOV VF late initialization functions.
* @xe: the &xe_device to initialize
@@ -180,7 +200,7 @@ void xe_sriov_vf_init_early(struct xe_device *xe)
*/
int xe_sriov_vf_init_late(struct xe_device *xe)
{
- return xe_sriov_vf_ccs_init(xe);
+ return vf_migration_init_late(xe);
}
static int sa_info_vf_ccs(struct seq_file *m, void *data)