[Intel-gfx] [PATCH 1/3] drm/i915: Handle -EDEADLK from ironlake_check_fdi_lanes()
Imre Deak
imre.deak at intel.com
Wed Nov 7 22:22:08 UTC 2018
On Wed, Nov 07, 2018 at 11:35:20PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> ironlake_check_fdi_lanes() may try to grab some extra crtc locks.
> If that fails we need to propagate the -EDEADLK all the way up,
> and we shouldn't dump out the crtc state or other debug messages
> either since it wasn't the crtc state that caused the failure.
>
> Just hit this on my IVB:
> [drm:intel_atomic_check [i915]] checking fdi config on pipe C, lanes 3
> [drm:intel_atomic_check [i915]] only 2 lanes on pipe C: required 3 lanes
> [drm:intel_atomic_check [i915]] fdi link bw constraint, reducing pipe bpp to 18
> [drm:intel_atomic_check [i915]] checking fdi config on pipe C, lanes 2
> [drm:intel_atomic_check [i915]] CRTC bw constrained, retrying
> [drm:intel_dp_compute_config [i915]] DP link computation with max lane count 4 max rate 270000 max bpp 18 pixel clock 185580KHz
> [drm:intel_dp_compute_config [i915]] DP lane count 4 clock 162000 bpp 18
> [drm:intel_dp_compute_config [i915]] DP link rate required 417555 available 648000
> [drm:intel_atomic_check [i915]] checking fdi config on pipe C, lanes 2
> WARNING: CPU: 4 PID: 25115 at ../drivers/gpu/drm/drm_modeset_lock.c:241 drm_modeset_lock+0xbc/0xd0 [drm]
> ...
> WARNING: CPU: 4 PID: 25115 at ../drivers/gpu/drm/drm_modeset_lock.c:223 drm_modeset_drop_locks+0x4a/0x50 [drm]
>
> The warnings are from 'WARN_ON(ctx->contended)'.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Series looks ok:
Reviewed-by: Imre Deak <imre.deak at intel.com>
> ---
> drivers/gpu/drm/i915/intel_display.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index ae6d58dbf1ed..de989b4265b6 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -6447,6 +6447,9 @@ static int ironlake_fdi_compute_config(struct intel_crtc *intel_crtc,
> link_bw, &pipe_config->fdi_m_n, false);
>
> ret = ironlake_check_fdi_lanes(dev, intel_crtc->pipe, pipe_config);
> + if (ret == -EDEADLK)
> + return ret;
> +
> if (ret == -EINVAL && pipe_config->pipe_bpp > 6*3) {
> pipe_config->pipe_bpp -= 2*3;
> DRM_DEBUG_KMS("fdi link bw constraint, reducing pipe bpp to %i\n",
> @@ -11388,6 +11391,8 @@ intel_modeset_pipe_config(struct drm_crtc *crtc,
> * pipe_config->pixel_multiplier;
>
> ret = intel_crtc_compute_config(to_intel_crtc(crtc), pipe_config);
> + if (ret == -EDEADLK)
> + goto fail;
> if (ret < 0) {
> DRM_DEBUG_KMS("CRTC fixup failed\n");
> goto fail;
> @@ -12525,6 +12530,8 @@ static int intel_atomic_check(struct drm_device *dev,
> }
>
> ret = intel_modeset_pipe_config(crtc, pipe_config);
> + if (ret == -EDEADLK)
> + return ret;
> if (ret) {
> intel_dump_pipe_config(to_intel_crtc(crtc),
> pipe_config, "[failed]");
> --
> 2.18.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list