[Intel-gfx] [PATCH] drm/i915: Reject modeset if the dotclock is too high

Jani Nikula jani.nikula at linux.intel.com
Wed May 25 08:15:35 UTC 2016


On Tue, 24 May 2016, ville.syrjala at linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> Reject the modeset if the requested dotclock exceeds the maximum allowed
> by the hardware. So far we've only checked this on gen2/3 while also
> handling the double wide vs. single wide pipe selection. Extend the
> check to all platforms since we have the max dotclock correctly
> populated now across the board.
>
> Testcase: igt/kms_invalid_dotclock
> Cc: Mika Kahola <mika.kahola at intel.com>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>

Seems good. Maybe we have bugs open about this?

Reviewed-by: Jani Nikula <jani.nikula at intel.com>

> ---
>  drivers/gpu/drm/i915/intel_display.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 1e5138497e6a..adb489508f25 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -6510,10 +6510,10 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
>  	struct drm_device *dev = crtc->base.dev;
>  	struct drm_i915_private *dev_priv = dev->dev_private;
>  	const struct drm_display_mode *adjusted_mode = &pipe_config->base.adjusted_mode;
> +	int clock_limit = dev_priv->max_dotclk_freq;
>  
> -	/* FIXME should check pixel clock limits on all platforms */
>  	if (INTEL_INFO(dev)->gen < 4) {
> -		int clock_limit = dev_priv->max_cdclk_freq * 9 / 10;
> +		clock_limit = dev_priv->max_cdclk_freq * 9 / 10;
>  
>  		/*
>  		 * Enable double wide mode when the dot clock
> @@ -6521,16 +6521,16 @@ static int intel_crtc_compute_config(struct intel_crtc *crtc,
>  		 */
>  		if (intel_crtc_supports_double_wide(crtc) &&
>  		    adjusted_mode->crtc_clock > clock_limit) {
> -			clock_limit *= 2;
> +			clock_limit = dev_priv->max_dotclk_freq;
>  			pipe_config->double_wide = true;
>  		}
> +	}
>  
> -		if (adjusted_mode->crtc_clock > clock_limit) {
> -			DRM_DEBUG_KMS("requested pixel clock (%d kHz) too high (max: %d kHz, double wide: %s)\n",
> -				      adjusted_mode->crtc_clock, clock_limit,
> -				      yesno(pipe_config->double_wide));
> -			return -EINVAL;
> -		}
> +	if (adjusted_mode->crtc_clock > clock_limit) {
> +		DRM_DEBUG_KMS("requested pixel clock (%d kHz) too high (max: %d kHz, double wide: %s)\n",
> +			      adjusted_mode->crtc_clock, clock_limit,
> +			      yesno(pipe_config->double_wide));
> +		return -EINVAL;
>  	}
>  
>  	/*

-- 
Jani Nikula, Intel Open Source Technology Center


More information about the Intel-gfx mailing list