[Intel-gfx] [PATCH 4/6] drm/i915: Mark device as wedged if we fail to resume

Mateo Lozano, Oscar oscar.mateo at intel.com
Tue Apr 22 15:04:19 CEST 2014


> -----Original Message-----
> From: Intel-gfx [mailto:intel-gfx-bounces at lists.freedesktop.org] On Behalf Of
> Chris Wilson
> Sent: Wednesday, April 09, 2014 9:20 AM
> To: intel-gfx at lists.freedesktop.org
> Subject: [Intel-gfx] [PATCH 4/6] drm/i915: Mark device as wedged if we fail to
> resume
> 
> During module load, if we fail to initialise the rings, we abort the load reporting
> EIO. However during resume, even though we report EIO as we fail to
> reinitialize the ringbuffers, the resume continues and the device is restored -
> albeit in a non-functional state. As we cannot execute any commands on the
> GPU, it is effectively wedged, mark it so.
> 
> As we now preserve the ringbuffers across resume, this should prevent UXA
> from falling into the trap of repeatedly sending invalid batchbuffers and
> dropping all further rendering into /dev/null.
> 
> Reported-and-tested-by: Jiri Kosina <jkosina at suse.cz>
> References: https://bugs.freedesktop.org/show_bug.cgi?id=76554
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_drv.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c
> b/drivers/gpu/drm/i915/i915_drv.c index 5d8250f7145d..629f8164a547 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -569,8 +569,10 @@ static int __i915_drm_thaw(struct drm_device *dev,
> bool restore_gtt_mappings)
>  		drm_mode_config_reset(dev);
> 
>  		mutex_lock(&dev->struct_mutex);
> -
> -		error = i915_gem_init_hw(dev);
> +		if (i915_gem_init_hw(dev)) {
> +			DRM_ERROR("failed to re-initialize GPU, declaring
> wedged!\n");

The "int error = 0;" is not needed anymore. Other than that:

Reviewed-by: Oscar Mateo <oscar.mateo at intel.com>

> +			atomic_set_mask(I915_WEDGED, &dev_priv-
> >gpu_error.reset_counter);
> +		}
>  		mutex_unlock(&dev->struct_mutex);
> 
>  		/* We need working interrupts for modeset enabling ... */ @@
> -613,7 +615,7 @@ static int __i915_drm_thaw(struct drm_device *dev, bool
> restore_gtt_mappings)
>  	mutex_unlock(&dev_priv->modeset_restore_lock);
> 
>  	intel_runtime_pm_put(dev_priv);
> -	return error;
> +	return 0;
>  }
> 
>  static int i915_drm_thaw(struct drm_device *dev)
> --
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx



More information about the Intel-gfx mailing list