Commit 31c3c53e authored by Nirmoy Das's avatar Nirmoy Das Committed by Andi Shyti
Browse files

drm/i915: Refactor confusing __intel_gt_reset()



__intel_gt_reset() is really for resetting engines though
the name might suggest something else. So add a helper function
to remove confusions with no functional changes.

v2: Move intel_gt_reset_all_engines() next to
    intel_gt_reset_engine() to make diff simple(John)

Cc: John Harrison <john.c.harrison@intel.com>
Signed-off-by: default avatarNirmoy Das <nirmoy.das@intel.com>
Reviewed-by: default avatarJohn Harrison <John.C.Harrison@Intel.com>
Reviewed-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: default avatarAndi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240422201951.633-1-nirmoy.das@intel.com
parent c3015eb6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -679,7 +679,7 @@ void intel_engines_release(struct intel_gt *gt)
	 */
	GEM_BUG_ON(intel_gt_pm_is_awake(gt));
	if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
		__intel_gt_reset(gt, ALL_ENGINES);
		intel_gt_reset_all_engines(gt);

	/* Decouple the backend; but keep the layout for late GPU resets */
	for_each_engine(engine, gt, id) {
+1 −1
Original line number Diff line number Diff line
@@ -2898,7 +2898,7 @@ static void enable_error_interrupt(struct intel_engine_cs *engine)
		drm_err(&engine->i915->drm,
			"engine '%s' resumed still in error: %08x\n",
			engine->name, status);
		__intel_gt_reset(engine->gt, engine->mask);
		intel_gt_reset_engine(engine);
	}

	/*
+1 −1
Original line number Diff line number Diff line
@@ -832,7 +832,7 @@ void intel_gt_driver_unregister(struct intel_gt *gt)

	/* Scrub all HW state upon release */
	with_intel_runtime_pm(gt->uncore->rpm, wakeref)
		__intel_gt_reset(gt, ALL_ENGINES);
		intel_gt_reset_all_engines(gt);
}

void intel_gt_driver_release(struct intel_gt *gt)
+1 −1
Original line number Diff line number Diff line
@@ -159,7 +159,7 @@ static bool reset_engines(struct intel_gt *gt)
	if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
		return false;

	return __intel_gt_reset(gt, ALL_ENGINES) == 0;
	return intel_gt_reset_all_engines(gt) == 0;
}

static void gt_sanitize(struct intel_gt *gt, bool force)
+29 −6
Original line number Diff line number Diff line
@@ -764,7 +764,7 @@ wa_14015076503_end(struct intel_gt *gt, intel_engine_mask_t engine_mask)
			 HECI_H_GS1_ER_PREP, 0);
}

int __intel_gt_reset(struct intel_gt *gt, intel_engine_mask_t engine_mask)
static int __intel_gt_reset(struct intel_gt *gt, intel_engine_mask_t engine_mask)
{
	const int retries = engine_mask == ALL_ENGINES ? RESET_MAX_RETRIES : 1;
	reset_func reset;
@@ -978,7 +978,7 @@ static void __intel_gt_set_wedged(struct intel_gt *gt)

	/* Even if the GPU reset fails, it should still stop the engines */
	if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
		__intel_gt_reset(gt, ALL_ENGINES);
		intel_gt_reset_all_engines(gt);

	for_each_engine(engine, gt, id)
		engine->submit_request = nop_submit_request;
@@ -1088,7 +1088,7 @@ static bool __intel_gt_unset_wedged(struct intel_gt *gt)
	/* We must reset pending GPU events before restoring our submission */
	ok = !HAS_EXECLISTS(gt->i915); /* XXX better agnosticism desired */
	if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
		ok = __intel_gt_reset(gt, ALL_ENGINES) == 0;
		ok = intel_gt_reset_all_engines(gt) == 0;
	if (!ok) {
		/*
		 * Warn CI about the unrecoverable wedged condition.
@@ -1132,10 +1132,10 @@ static int do_reset(struct intel_gt *gt, intel_engine_mask_t stalled_mask)
{
	int err, i;

	err = __intel_gt_reset(gt, ALL_ENGINES);
	err = intel_gt_reset_all_engines(gt);
	for (i = 0; err && i < RESET_MAX_RETRIES; i++) {
		msleep(10 * (i + 1));
		err = __intel_gt_reset(gt, ALL_ENGINES);
		err = intel_gt_reset_all_engines(gt);
	}
	if (err)
		return err;
@@ -1269,7 +1269,30 @@ void intel_gt_reset(struct intel_gt *gt,
	goto finish;
}

static int intel_gt_reset_engine(struct intel_engine_cs *engine)
/**
 * intel_gt_reset_all_engines() - Reset all engines in the given gt.
 * @gt: the GT to reset all engines for.
 *
 * This function resets all engines within the given gt.
 *
 * Returns:
 * Zero on success, negative error code on failure.
 */
int intel_gt_reset_all_engines(struct intel_gt *gt)
{
	return __intel_gt_reset(gt, ALL_ENGINES);
}

/**
 * intel_gt_reset_engine() - Reset a specific engine within a gt.
 * @engine: engine to be reset.
 *
 * This function resets the specified engine within a gt.
 *
 * Returns:
 * Zero on success, negative error code on failure.
 */
int intel_gt_reset_engine(struct intel_engine_cs *engine)
{
	return __intel_gt_reset(engine->gt, engine->mask);
}
Loading