Commit 711c39ea authored by Jani Nikula's avatar Jani Nikula
Browse files

drm/i915/reset: add intel_gt_gpu_reset_clobbers_display() helper



Add a helper for checking the gpu_reset_clobbers_display flag to make it
easier to relocate the flag later.

Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/434d5db7675ed9717b3beae1389008b68a961855.1741001054.git.jani.nikula@intel.com


Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
parent 30f2581b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -677,7 +677,7 @@ void intel_engines_release(struct intel_gt *gt)
	 * in case we aborted before completely initialising the engines.
	 */
	GEM_BUG_ON(intel_gt_pm_is_awake(gt));
	if (!INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
	if (!intel_gt_gpu_reset_clobbers_display(gt))
		intel_gt_reset_all_engines(gt);

	/* Decouple the backend; but keep the layout for late GPU resets */
+1 −1
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ void intel_gt_pm_init(struct intel_gt *gt)

static bool reset_engines(struct intel_gt *gt)
{
	if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
	if (intel_gt_gpu_reset_clobbers_display(gt))
		return false;

	return intel_gt_reset_all_engines(gt) == 0;
+11 −4
Original line number Diff line number Diff line
@@ -986,7 +986,7 @@ static void __intel_gt_set_wedged(struct intel_gt *gt)
	awake = reset_prepare(gt);

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

	for_each_engine(engine, gt, id)
@@ -1106,7 +1106,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)
	if (!intel_gt_gpu_reset_clobbers_display(gt))
		ok = intel_gt_reset_all_engines(gt) == 0;
	if (!ok) {
		/*
@@ -1178,6 +1178,13 @@ static int resume(struct intel_gt *gt)
	return 0;
}

bool intel_gt_gpu_reset_clobbers_display(struct intel_gt *gt)
{
	struct drm_i915_private *i915 = gt->i915;

	return INTEL_INFO(i915)->gpu_reset_clobbers_display;
}

/**
 * intel_gt_reset - reset chip after a hang
 * @gt: #intel_gt to reset
@@ -1234,7 +1241,7 @@ void intel_gt_reset(struct intel_gt *gt,
		goto error;
	}

	if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
	if (intel_gt_gpu_reset_clobbers_display(gt))
		intel_irq_suspend(gt->i915);

	if (do_reset(gt, stalled_mask)) {
@@ -1242,7 +1249,7 @@ void intel_gt_reset(struct intel_gt *gt,
		goto taint;
	}

	if (INTEL_INFO(gt->i915)->gpu_reset_clobbers_display)
	if (intel_gt_gpu_reset_clobbers_display(gt))
		intel_irq_resume(gt->i915);

	intel_overlay_reset(display);
+2 −0
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ void intel_gt_handle_error(struct intel_gt *gt,
			   const char *fmt, ...);
#define I915_ERROR_CAPTURE BIT(0)

bool intel_gt_gpu_reset_clobbers_display(struct intel_gt *gt);

void intel_gt_reset(struct intel_gt *gt,
		    intel_engine_mask_t stalled_mask,
		    const char *reason);
+1 −1
Original line number Diff line number Diff line
@@ -200,7 +200,7 @@ static void intel_detect_preproduction_hw(struct drm_i915_private *dev_priv)

static void sanitize_gpu(struct drm_i915_private *i915)
{
	if (!INTEL_INFO(i915)->gpu_reset_clobbers_display) {
	if (!intel_gt_gpu_reset_clobbers_display(to_gt(i915))) {
		struct intel_gt *gt;
		unsigned int i;