Skip to content

Commit bf002c1

Browse files
committed
drm/i915: W/A for underruns with WM1+ disabled on icl
Disabling WM1+ on ICL causes tons of underruns with linear/X-tiled framebuffers. We can avoid this by flipping on a chicken bit affecting the way the hw fill the FIFO. This may not be the final solution but should hopefully avoid some underruns in the meantime. v2: Apparently PIPE_CHICKEN is icl+ only Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190204202232.27153-1-ville.syrjala@linux.intel.com Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
1 parent 108d14b commit bf002c1

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

drivers/gpu/drm/i915/i915_reg.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7618,6 +7618,7 @@ enum {
76187618
#define _PIPEB_CHICKEN 0x71038
76197619
#define _PIPEC_CHICKEN 0x72038
76207620
#define PER_PIXEL_ALPHA_BYPASS_EN (1 << 7)
7621+
#define PM_FILL_MAINTAIN_DBUF_FULLNESS (1 << 0)
76217622
#define PIPE_CHICKEN(pipe) _MMIO_PIPE(pipe, _PIPEA_CHICKEN,\
76227623
_PIPEB_CHICKEN)
76237624

drivers/gpu/drm/i915/intel_display.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3911,6 +3911,12 @@ static void icl_set_pipe_chicken(struct intel_crtc *crtc)
39113911
*/
39123912
tmp |= PER_PIXEL_ALPHA_BYPASS_EN;
39133913

3914+
/*
3915+
* W/A for underruns with linear/X-tiled with
3916+
* WM1+ disabled.
3917+
*/
3918+
tmp |= PM_FILL_MAINTAIN_DBUF_FULLNESS;
3919+
39143920
I915_WRITE(PIPE_CHICKEN(pipe), tmp);
39153921
}
39163922

0 commit comments

Comments
 (0)