[Intel-gfx] [PATCH] drm/i915: extract intel_gpu_reset

Ben Widawsky ben at bwidawsk.net
Wed Apr 25 18:43:10 CEST 2012


On Wed, 25 Apr 2012 15:14:05 +0200
Daniel Vetter <daniel.vetter at ffwll.ch> wrote:

> Slightly cleans up the code and could be useful for e.g. Ben
> Widawsky's hw context patches.
> 
> v2: New colours!
> 
> Cc: Ben Widawsky <ben at bwidawsk.net>
> Signed-Off-by: Daniel Vetter <daniel.vetter at ffwll.ch>

I have this queued for both HW context, and DPF, but you've beaten me to
it.

Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
or (your choice)
Signed-off-by: Ben Widawsky <ben at bwidawsk.net>

> ---
>  drivers/gpu/drm/i915/i915_drv.c |   43 ++++++++++++++++++++++++--------------
>  1 files changed, 27 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 3ffa9e7..2763084 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -768,6 +768,29 @@ static int gen6_do_reset(struct drm_device *dev, u8 flags)
>  	return ret;
>  }
>  
> +static int intel_gpu_reset(struct drm_device *dev, u8 flags)
> +{
> +	int ret = -ENODEV;
> +
> +	switch (INTEL_INFO(dev)->gen) {
> +	case 7:
> +	case 6:
> +		ret = gen6_do_reset(dev, flags);
> +		break;
> +	case 5:
> +		ret = ironlake_do_reset(dev, flags);
> +		break;
> +	case 4:
> +		ret = i965_do_reset(dev, flags);
> +		break;
> +	case 2:
> +		ret = i8xx_do_reset(dev, flags);
> +		break;
> +	}
> +
> +	return ret;
> +}
> +
>  /**
>   * i915_reset - reset chip after a hang
>   * @dev: drm device to reset
> @@ -800,23 +823,11 @@ int i915_reset(struct drm_device *dev, u8 flags)
>  	i915_gem_reset(dev);
>  
>  	ret = -ENODEV;
> -	if (get_seconds() - dev_priv->last_gpu_reset < 5) {
> +	if (get_seconds() - dev_priv->last_gpu_reset < 5)
>  		DRM_ERROR("GPU hanging too fast, declaring wedged!\n");
> -	} else switch (INTEL_INFO(dev)->gen) {
> -	case 7:
> -	case 6:
> -		ret = gen6_do_reset(dev, flags);
> -		break;
> -	case 5:
> -		ret = ironlake_do_reset(dev, flags);
> -		break;
> -	case 4:
> -		ret = i965_do_reset(dev, flags);
> -		break;
> -	case 2:
> -		ret = i8xx_do_reset(dev, flags);
> -		break;
> -	}
> +	else
> +		ret = intel_gpu_reset(dev, flags);
> +
>  	dev_priv->last_gpu_reset = get_seconds();
>  	if (ret) {
>  		DRM_ERROR("Failed to reset chip.\n");




More information about the Intel-gfx mailing list