[Intel-gfx] [PATCH 4/4] drm/i915: Use the g4x+ approach on gen2 for handling display stuff around GPU reset

Daniel Vetter daniel at ffwll.ch
Fri Aug 5 20:43:34 UTC 2016


On Fri, Aug 05, 2016 at 11:28:30PM +0300, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
> 
> We don't have GPU reset support for gen2, which means the display
> hardware is unaffected when a GPU hang is handled. However as the ring
> has in fact stopped, any flips still in the ring will never complete,
> and thus the display base address updates will never happen. So we
> really need to fix that up manually just like we do on g4x+.
> 
> In fact, let's just use intel_has_gpu_reset() instead of IS_GEN2()
> since that'll also handle cases where someone would disable the GPU
> reset support on gen3/4 for whatever reason.
> 
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 11 ++---------
>  1 file changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 632739f9cc44..74375ec651e5 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -3137,7 +3137,8 @@ __intel_display_resume(struct drm_device *dev,
>  
>  static bool gpu_reset_clobbers_display(struct drm_i915_private *dev_priv)
>  {
> -	return INTEL_GEN(dev_priv) < 5 && !IS_G4X(dev_priv);
> +	return intel_has_gpu_reset(dev_priv) &&
> +		INTEL_GEN(dev_priv) < 5 && !IS_G4X(dev_priv);
>  }
>  
>  void intel_prepare_reset(struct drm_i915_private *dev_priv)
> @@ -3147,10 +3148,6 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
>  	struct drm_atomic_state *state;
>  	int ret;
>  
> -	/* no reset support for gen2 */
> -	if (IS_GEN2(dev_priv))
> -		return;
> -
>  	/*
>  	 * Need mode_config.mutex so that we don't
>  	 * trample ongoing ->detect() and whatnot.
> @@ -3210,10 +3207,6 @@ void intel_finish_reset(struct drm_i915_private *dev_priv)
>  	 */
>  	intel_complete_page_flips(dev_priv);
>  
> -	/* no reset support for gen2 */
> -	if (IS_GEN2(dev_priv))
> -		return;
> -
>  	dev_priv->modeset_restore_state = NULL;
>  
>  	/* reset doesn't touch the display */
> -- 
> 2.7.4
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch


More information about the Intel-gfx mailing list