Commit fe3a615d authored by Matthew Brost's avatar Matthew Brost
Browse files

drm/xe/vf: Kickstart after resfix in VF post migration recovery



GuC needs to be live for the GuC submission state machine to resubmit
anything lost during VF post-migration recovery.  Therefore, move the
kickstart step after `resfix` to ensure proper resubmission.

Signed-off-by: default avatarMatthew Brost <matthew.brost@intel.com>
Reviewed-by: default avatarTomasz Lis <tomasz.lis@intel.com>
Link: https://lore.kernel.org/r/20251008214532.3442967-23-matthew.brost@intel.com
parent 24687730
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -1136,13 +1136,6 @@ static int vf_post_migration_fixups(struct xe_gt *gt)

static void vf_post_migration_kickstart(struct xe_gt *gt)
{
	/*
	 * Make sure interrupts on the new HW are properly set. The GuC IRQ
	 * must be working at this point, since the recovery did started,
	 * but the rest was not enabled using the procedure from spec.
	 */
	xe_irq_resume(gt_to_xe(gt));

	xe_guc_submit_unpause(&gt->uc.guc);
}

@@ -1162,6 +1155,13 @@ static int vf_post_migration_notify_resfix_done(struct xe_gt *gt)
	if (skip_resfix)
		return -EAGAIN;

	/*
	 * Make sure interrupts on the new HW are properly set. The GuC IRQ
	 * must be working at this point, since the recovery did started,
	 * but the rest was not enabled using the procedure from spec.
	 */
	xe_irq_resume(gt_to_xe(gt));

	return vf_notify_resfix_done(gt);
}

@@ -1185,11 +1185,12 @@ static void vf_post_migration_recovery(struct xe_gt *gt)
	if (err)
		goto fail;

	vf_post_migration_kickstart(gt);
	err = vf_post_migration_notify_resfix_done(gt);
	if (err && err != -EAGAIN)
		goto fail;

	vf_post_migration_kickstart(gt);

	xe_pm_runtime_put(xe);
	xe_gt_sriov_notice(gt, "migration recovery ended\n");
	return;