[Intel-gfx] [PATCH v3] drm/i915: Skip error capture when wedged on init
Matthew Auld
matthew.auld at intel.com
Fri Nov 12 15:44:03 UTC 2021
On 11/11/2021 13:06, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
>
> Trying to capture uninitialised engines when we wedged on init ends in
> tears. Skip that together with uC capture, since failure to initialise the
> latter can actually be one of the reasons for wedging on init.
>
> v2:
> * Use i915_disable_error_state when wedging on init/fini.
>
> v3:
> * Handle mock tests.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> Reviewed-by: Matthew Auld <matthew.auld at intel.com> # v1
Assuming this works locally, r-b still stands.
> ---
> drivers/gpu/drm/i915/gt/intel_reset.c | 2 ++
> drivers/gpu/drm/i915/selftests/mock_gem_device.c | 2 ++
> 2 files changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
> index 51b56b8e5003..0fbd6dbadce7 100644
> --- a/drivers/gpu/drm/i915/gt/intel_reset.c
> +++ b/drivers/gpu/drm/i915/gt/intel_reset.c
> @@ -1448,6 +1448,7 @@ void intel_gt_set_wedged_on_init(struct intel_gt *gt)
> BUILD_BUG_ON(I915_RESET_ENGINE + I915_NUM_ENGINES >
> I915_WEDGED_ON_INIT);
> intel_gt_set_wedged(gt);
> + i915_disable_error_state(gt->i915, -ENODEV);
> set_bit(I915_WEDGED_ON_INIT, >->reset.flags);
>
> /* Wedged on init is non-recoverable */
> @@ -1457,6 +1458,7 @@ void intel_gt_set_wedged_on_init(struct intel_gt *gt)
> void intel_gt_set_wedged_on_fini(struct intel_gt *gt)
> {
> intel_gt_set_wedged(gt);
> + i915_disable_error_state(gt->i915, -ENODEV);
> set_bit(I915_WEDGED_ON_FINI, >->reset.flags);
> intel_gt_retire_requests(gt); /* cleanup any wedged requests */
> }
> diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> index 9ab3f284d1dd..d0e2e61de8d4 100644
> --- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> +++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
> @@ -177,6 +177,8 @@ struct drm_i915_private *mock_gem_device(void)
>
> mock_uncore_init(&i915->uncore, i915);
>
> + spin_lock_init(&i915->gpu_error.lock);
> +
> i915_gem_init__mm(i915);
> intel_gt_init_early(&i915->gt, i915);
> atomic_inc(&i915->gt.wakeref.count); /* disable; no hw support */
>
More information about the Intel-gfx
mailing list