[PATCH v1] Fix the possible wm overwriting

Peres, Martin martin.peres at intel.com
Tue Nov 13 13:18:11 UTC 2018


On 13/11/2018 15:08, Lisovskiy, Stanislav wrote:
> Currently whenever we attempt to recalculate
> watermarks, we assign dirty_pipes to zero,
> then compare current wm results to the recalculated
> one and if they changed we set correspondent dirty_pipes
> bit again.
> This can lead to if we have wm results overwriting and

This could lead to ... what?

> clearing dirty_pipes, so that kernel we still think that
> watermarks don't need to be updated, which then might
> lead to fifo underruns, crc mismatch and other pleasures.
> 
> Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy at intel.com>
> ---
>  drivers/gpu/drm/i915/intel_pm.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index dc034617febb..99564fa0cc4b 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -5441,9 +5441,6 @@ skl_compute_wm(struct drm_atomic_state *state)
>  	bool changed = false;
>  	int ret, i;
>  
> -	/* Clear all dirty flags */
> -	results->dirty_pipes = 0;
> -
>  	ret = skl_ddb_add_affected_pipes(state, &changed);
>  	if (ret || !changed)
>  		return ret;
> @@ -5496,6 +5493,7 @@ static void skl_atomic_update_crtc_wm(struct intel_atomic_state *state,
>  	struct drm_i915_private *dev_priv = to_i915(state->base.dev);
>  	struct skl_pipe_wm *pipe_wm = &cstate->wm.skl.optimal;
>  	const struct skl_ddb_allocation *ddb = &state->wm_results.ddb;
> +	struct skl_ddb_values *results = &state->wm_results;
>  	enum pipe pipe = crtc->pipe;
>  	enum plane_id plane_id;
>  
> @@ -5512,6 +5510,10 @@ static void skl_atomic_update_crtc_wm(struct intel_atomic_state *state,
>  			skl_write_cursor_wm(crtc, &pipe_wm->planes[plane_id],
>  					    ddb);
>  	}
> +
> +	/* Clear all dirty flags */
> +	results->dirty_pipes &= ~drm_crtc_mask(&crtc->base);
> +
>  }
>  
>  static void skl_initial_wm(struct intel_atomic_state *state,
> 

---------------------------------------------------------------------
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.



More information about the Intel-gfx-trybot mailing list