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
*/
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)