diff mbox series

drm/i915/display/fbc: Implement WA 22010751166

Message ID 20201019175609.28715-1-jose.souza@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/display/fbc: Implement WA 22010751166 | expand

Commit Message

Souza, Jose Oct. 19, 2020, 5:56 p.m. UTC
Underruns happens when plane height + y offset is not a module of 4
when FBC is enabled.

Specification says that it only affects TGL display C stepping and
newer but to simply the check and as TGL is already in final costumers
hands, pre-production display stepping A and B was also included.

BSpec: 52887 ICL
BSpec: 52888 EHL/JSL
BSpec: 52890/55378 TGL
BSpec: 53508 DG1
BSpec: 53273 RKL
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fbc.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Matt Roper Oct. 19, 2020, 8:30 p.m. UTC | #1
On Mon, Oct 19, 2020 at 10:56:09AM -0700, José Roberto de Souza wrote:
> Underruns happens when plane height + y offset is not a module of 4

I think you meant 'modulo' rather than 'module' here.

> when FBC is enabled.

Technically the workaround calls for us to just do our FBC disables for
non-modulo 4 planes when the scanline is at vactive-10, but that doesn't
seem to be something that's actually feasible to do at the software
level.  Just keeping FBC disabled when working with planes of the
problematic size as you do here does seem like the safest approach.
Should we make a note of our slight deviation from the workaround
details here?

> 
> Specification says that it only affects TGL display C stepping and
> newer but to simply the check and as TGL is already in final costumers
> hands, pre-production display stepping A and B was also included.
> 
> BSpec: 52887 ICL
> BSpec: 52888 EHL/JSL
> BSpec: 52890/55378 TGL
> BSpec: 53508 DG1
> BSpec: 53273 RKL
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>

Up to you whether you tweak the commit message as noted above or not.
Otherwise,

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_fbc.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
> index 135f5e8a4d70..a5b072816a7b 100644
> --- a/drivers/gpu/drm/i915/display/intel_fbc.c
> +++ b/drivers/gpu/drm/i915/display/intel_fbc.c
> @@ -907,6 +907,13 @@ static bool intel_fbc_can_activate(struct intel_crtc *crtc)
>  		return false;
>  	}
>  
> +	/* Wa_22010751166: icl, ehl, tgl, dg1, rkl */
> +	if (INTEL_GEN(dev_priv) >= 11 &&
> +	    (cache->plane.src_h + cache->plane.adjusted_y) % 4) {
> +		fbc->no_fbc_reason = "plane height + offset is non-modulo of 4";
> +		return false;
> +	}
> +
>  	return true;
>  }
>  
> -- 
> 2.28.0
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
Souza, Jose Oct. 20, 2020, 12:33 a.m. UTC | #2
On Mon, 2020-10-19 at 21:44 +0000, Patchwork wrote:
> Patch Details
> Series: drm/i915/display/fbc: Implement WA 22010751166 URL: https://patchwork.freedesktop.org/series/82836/ State: failure Details: https://intel-
> gfx-ci.01.org/tree/drm-tip/Patchwork_18735/index.html 
> CI Bug Log - changes from CI_DRM_9163_full -> Patchwork_18735_fullSummaryFAILURE
> Serious unknown changes coming with Patchwork_18735_full absolutely need to be
>  verified manually.
> If you think the reported changes have nothing to do with the changes
>  introduced in Patchwork_18735_full, please notify your bug team to allow them
>  to document this new failure mode, which will reduce false positives in CI.
> Possible new issuesHere are the unknown changes that may have been introduced in Patchwork_18735_full:
> IGT changesPossible regressions * igt@gem_wait@write-wait@vcs0:shard-hsw: PASS -> INCOMPLETE
>  * igt@prime_vgem@coherency-blt:shard-snb: PASS -> FAIL
> Warnings * igt@core_hotunplug@hotrebind-lateclose:shard-hsw: WARN (i915#2283) -> FAIL

Regressions above are from platforms that this changes do not affect.

Pushed to dinq with commit message tweaks suggested by Matt, thanks for reviewing it.

> Piglit changesPossible regressions * spec@glsl-4.00@execution@built-in-functions@fs-op-mult-dmat2x3-dmat4x2 (NEW):{pig-icl-1065g7}: NOTRUN -> CRASH
>  * spec@glsl-4.00@execution@built-in-functions@gs-transpose-dmat4 (NEW):{pig-icl-1065g7}: NOTRUN -> INCOMPLETE +1 similar issue
> New testsNew tests have been introduced between CI_DRM_9163_full and Patchwork_18735_full:
> New Piglit tests (3) * spec@glsl-4.00@execution@built-in-functions@fs-op-mult-dmat2x3-dmat4x2:Statuses : 1 crash(s)Exec time: [46.79] s
>  * spec@glsl-4.00@execution@built-in-functions@gs-transpose-dmat4:Statuses : 1 incomplete(s)Exec time: [0.0] s
>  * spec@glsl-4.00@execution@built-in-functions@vs-op-div-double-dvec2:Statuses : 1 incomplete(s)Exec time: [0.0] s
> Known issuesHere are the changes found in Patchwork_18735_full that come from known issues:
> IGT changesIssues hit * igt@gem_exec_reloc@basic-many-active@vecs0:shard-glk: PASS -> FAIL (i915#2389) +2 similar issues
>  * igt@gem_exec_whisper@basic-contexts:shard-glk: PASS -> DMESG-WARN (i915#118 / i915#95)
>  * igt@gem_userptr_blits@sync-unmap-cycles:shard-skl: PASS -> TIMEOUT (i915#2424)
>  * igt@gen9_exec_parse@allowed-single:shard-skl: PASS -> DMESG-WARN (i915#1436 / i915#716)
>  * igt@i915_pm_dc@dc6-psr:shard-skl: PASS -> FAIL (i915#454)
>  * igt@i915_pm_rc6_residency@rc6-fence:shard-hsw: PASS -> WARN (i915#1519)
>  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:shard-apl: PASS -> DMESG-WARN (i915#1635 / i915#1982)
>  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:shard-skl: PASS -> FAIL (i915#2122)
>  * igt@kms_flip@flip-vs-expired-vblank@b-edp1:shard-skl: PASS -> FAIL (i915#79)
>  * igt@kms_frontbuffer_tracking@fbc-shrfb-scaledprimary:shard-tglb: PASS -> DMESG-WARN (i915#1982) +2 similar issues
>  * igt@kms_frontbuffer_tracking@fbc-stridechange:shard-glk: PASS -> DMESG-WARN (i915#1982)
>  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-gtt:shard-skl: PASS -> DMESG-WARN (i915#1982) +4 similar issues
>  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:shard-iclb: PASS -> INCOMPLETE (i915#1185)
>  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:shard-iclb: PASS -> DMESG-WARN (i915#1982)
>  * igt@kms_psr@psr2_cursor_plane_onoff:shard-iclb: PASS -> SKIP (fdo#109441) +2 similar issues
>  * igt@kms_universal_plane@universal-plane-gen9-features-pipe-a:shard-kbl: PASS -> DMESG-WARN (i915#1982)
> Possible fixes * igt@api_intel_bb@render-ccs:shard-tglb: INCOMPLETE -> PASS
>  * igt@feature_discovery@psr2:shard-iclb: SKIP (i915#658) -> PASS
>  * igt@gem_exec_reloc@basic-many-active@rcs0:shard-hsw: FAIL (i915#2389) -> PASS
>  * igt@gem_userptr_blits@unsync-unmap-cycles:shard-skl: TIMEOUT (i915#2424) -> PASS
>  * igt@i915_suspend@debugfs-reader:shard-kbl: INCOMPLETE (i915#155) -> PASS
>  * {igt@kms_async_flips@async-flip-with-page-flip-events}:shard-kbl: FAIL (i915#2521) -> PASS
>  * igt@kms_flip@plain-flip-fb-recreate-interruptible@a-edp1:shard-skl: FAIL (i915#2122) -> PASS
>  * igt@kms_frontbuffer_tracking@fbc-stridechange:shard-tglb: DMESG-WARN (i915#1982) -> PASS +1 similar issue
>  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:shard-skl: INCOMPLETE (i915#198) -> PASS
>  * igt@kms_plane_alpha_blend@pipe-a-coverage-7efc:shard-skl: FAIL (fdo#108145 / i915#265) -> PASS
>  * igt@kms_plane_cursor@pipe-a-primary-size-256:shard-glk: DMESG-WARN (i915#1982) -> PASS
>  * igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format:shard-skl: DMESG-WARN (i915#1982) -> PASS +4 similar issues
>  * igt@kms_psr@psr2_primary_mmap_cpu:shard-iclb: SKIP (fdo#109441) -> PASS +2 similar issues
>  * igt@perf@polling:shard-hsw: SKIP (fdo#109271) -> PASS
>  * igt@perf@polling-parameterized:shard-skl: FAIL (i915#1542) -> PASS
> Warnings * igt@kms_dp_dsc@basic-dsc-enable-edp:shard-iclb: SKIP (fdo#109349) -> DMESG-WARN (i915#1226)
>  * igt@kms_frontbuffer_tracking@fbcpsr-suspend:shard-tglb: DMESG-WARN (i915#1982 / i915#2411) -> DMESG-WARN (i915#2411)
>  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min:shard-skl: FAIL (fdo#108145 / i915#265) -> DMESG-WARN (i915#1982)
>  * igt@kms_setmode@basic:shard-skl: DMESG-FAIL (i915#1982 / i915#31) -> FAIL (i915#31)
>  * igt@runner@aborted:shard-skl: FAIL (i915#2029 / i915#2439) -> FAIL (i915#1436)
> {name}: This element is suppressed. This means it is ignored when computing
>  the status of the difference (SUCCESS, WARNING, or FAILURE).
> Participating hosts (11 -> 11)No changes in participating hosts
> Build changes * Linux: CI_DRM_9163 -> Patchwork_18735
> CI-20190529: 20190529
>  CI_DRM_9163: e984f8cbd92765a305dd322240278e0f69dbae38 @ git://anongit.freedesktop.org/gfx-ci/linux
>  IGT_5822: b4bcf05cb9839037128905deda7146434155cc41 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
>  Patchwork_18735: 72bc219de6f039510c1d34b2d39a1d065168d127 @ git://anongit.freedesktop.org/gfx-ci/linux
>  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_fbc.c b/drivers/gpu/drm/i915/display/intel_fbc.c
index 135f5e8a4d70..a5b072816a7b 100644
--- a/drivers/gpu/drm/i915/display/intel_fbc.c
+++ b/drivers/gpu/drm/i915/display/intel_fbc.c
@@ -907,6 +907,13 @@  static bool intel_fbc_can_activate(struct intel_crtc *crtc)
 		return false;
 	}
 
+	/* Wa_22010751166: icl, ehl, tgl, dg1, rkl */
+	if (INTEL_GEN(dev_priv) >= 11 &&
+	    (cache->plane.src_h + cache->plane.adjusted_y) % 4) {
+		fbc->no_fbc_reason = "plane height + offset is non-modulo of 4";
+		return false;
+	}
+
 	return true;
 }