[Intel-gfx] [PATCH 3/3] drm/i915: Implement new w/a for underruns with wm1+ disabled

Clinton Taylor Clinton.A.Taylor at intel.com
Wed Feb 13 20:04:06 UTC 2019


Reviewed-by: Clint Taylor <Clinton.A.Taylor at intel.com>

-Clint

On 2/13/19 8:54 AM, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrjala at linux.intel.com>
>
> The new workaround from the hw team involves programming the
> leaving WM1 still disabled but programming the blocks value
> identically to WM0, and we also need to set the "ignore
> lines watermark" bit for WM1.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
> ---
>   drivers/gpu/drm/i915/intel_pm.c | 7 +++++++
>   1 file changed, 7 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 7dd2ab0ca21b..4c0e43caa5cd 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -4466,6 +4466,13 @@ skl_allocate_pipe_ddb(struct intel_crtc_state *cstate,
>   		for_each_plane_id_on_crtc(intel_crtc, plane_id) {
>   			wm = &cstate->wm.skl.optimal.planes[plane_id];
>   			memset(&wm->wm[level], 0, sizeof(wm->wm[level]));
> +
> +			/* W/A for underruns with WM1+ disabled */
> +			if (IS_ICELAKE(dev_priv) &&
> +			    level == 1 && wm->wm[0].plane_en) {
> +				wm->wm[level].plane_res_b = wm->wm[0].plane_res_b;
> +				wm->wm[level].ignore_lines = true;
> +			}
>   		}
>   	}
>   


More information about the Intel-gfx mailing list