[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