diff mbox series

[v4] drm/i915: implement async_flip mode per plane tracking

Message ID 20230127153003.2225111-1-andrzej.hajda@intel.com (mailing list archive)
State New, archived
Headers show
Series [v4] drm/i915: implement async_flip mode per plane tracking | expand

Commit Message

Andrzej Hajda Jan. 27, 2023, 3:30 p.m. UTC
Current implementation of async flip w/a relies on assumption that
previous atomic commit contains valid information if async_flip is still
enabled on the plane. It is incorrect. If previous commit did not modify
the plane its state->uapi.async_flip can be false. As a result DMAR/PIPE
errors can be observed:
i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
DMAR: DRHD: handling fault status reg 2
DMAR: [DMA Read NO_PASID] Request device [00:02.0] fault addr 0x0 [fault reason 0x06] PTE Read access is not set

v2: update async_flip_planes in more reliable places (Ville)
v3: reset async_flip_planes and do_async_flip in more scenarios (Ville)
v4: move all resets to plane loops (Ville)

Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
---
Hi Ville,

I am not sure about this change. I wonder if in case of
for*plane loops code could be like:

new_crtc_state->async_flip_planes &= ~BIT(plane->id);
if (!new_crtc_state->async_flip_planes)
	new_crtc_state->do_async_flip = false;

But let's see what CI says.

Regards
Andrzej
---
 drivers/gpu/drm/i915/display/intel_atomic_plane.c  | 5 ++++-
 drivers/gpu/drm/i915/display/intel_color.c         | 3 +++
 drivers/gpu/drm/i915/display/intel_display.c       | 9 ++++++---
 drivers/gpu/drm/i915/display/intel_display_types.h | 3 +++
 drivers/gpu/drm/i915/display/skl_watermark.c       | 4 ++++
 5 files changed, 20 insertions(+), 4 deletions(-)

Comments

Ville Syrjala Jan. 27, 2023, 10:34 p.m. UTC | #1
On Fri, Jan 27, 2023 at 04:30:02PM +0100, Andrzej Hajda wrote:
> Current implementation of async flip w/a relies on assumption that
> previous atomic commit contains valid information if async_flip is still
> enabled on the plane. It is incorrect. If previous commit did not modify
> the plane its state->uapi.async_flip can be false. As a result DMAR/PIPE
> errors can be observed:
> i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
> i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
> DMAR: DRHD: handling fault status reg 2
> DMAR: [DMA Read NO_PASID] Request device [00:02.0] fault addr 0x0 [fault reason 0x06] PTE Read access is not set
> 
> v2: update async_flip_planes in more reliable places (Ville)
> v3: reset async_flip_planes and do_async_flip in more scenarios (Ville)
> v4: move all resets to plane loops (Ville)
> 
> Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
> ---
> Hi Ville,
> 
> I am not sure about this change. I wonder if in case of
> for*plane loops code could be like:
> 
> new_crtc_state->async_flip_planes &= ~BIT(plane->id);
> if (!new_crtc_state->async_flip_planes)
> 	new_crtc_state->do_async_flip = false;

The current code is all geared towards all planes doing the
same kind of update (async vs. sync). Maybe we could rework
things so that some planes could remain in async mode while
the rest (and the whole pipe) really does a sync update.
But that will involve some real work.

This one is 
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>

> 
> But let's see what CI says.
> 
> Regards
> Andrzej
> ---
>  drivers/gpu/drm/i915/display/intel_atomic_plane.c  | 5 ++++-
>  drivers/gpu/drm/i915/display/intel_color.c         | 3 +++
>  drivers/gpu/drm/i915/display/intel_display.c       | 9 ++++++---
>  drivers/gpu/drm/i915/display/intel_display_types.h | 3 +++
>  drivers/gpu/drm/i915/display/skl_watermark.c       | 4 ++++
>  5 files changed, 20 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index 1409bcfb6fd3d9..3bd8f7eb75a60b 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -363,6 +363,7 @@ void intel_plane_set_invisible(struct intel_crtc_state *crtc_state,
>  	crtc_state->scaled_planes &= ~BIT(plane->id);
>  	crtc_state->nv12_planes &= ~BIT(plane->id);
>  	crtc_state->c8_planes &= ~BIT(plane->id);
> +	crtc_state->async_flip_planes &= ~BIT(plane->id);
>  	crtc_state->data_rate[plane->id] = 0;
>  	crtc_state->data_rate_y[plane->id] = 0;
>  	crtc_state->rel_data_rate[plane->id] = 0;
> @@ -582,8 +583,10 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
>  			 intel_plane_is_scaled(new_plane_state))))
>  		new_crtc_state->disable_lp_wm = true;
>  
> -	if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state))
> +	if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state)) {
>  		new_crtc_state->do_async_flip = true;
> +		new_crtc_state->async_flip_planes |= BIT(plane->id);
> +	}
>  
>  	return 0;
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
> index 8d97c299e6577b..2ca7a016a9d9d1 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -1500,12 +1500,15 @@ intel_color_add_affected_planes(struct intel_crtc_state *new_crtc_state)
>  			return PTR_ERR(plane_state);
>  
>  		new_crtc_state->update_planes |= BIT(plane->id);
> +		new_crtc_state->async_flip_planes = 0;
> +		new_crtc_state->do_async_flip = false;
>  
>  		/* plane control register changes blocked by CxSR */
>  		if (HAS_GMCH(i915))
>  			new_crtc_state->disable_cxsr = true;
>  	}
>  
> +
>  	return 0;
>  }
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 717ca3d7890d34..fcd3f1c7af3291 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -1252,7 +1252,8 @@ static void intel_crtc_async_flip_disable_wa(struct intel_atomic_state *state,
>  		intel_atomic_get_old_crtc_state(state, crtc);
>  	const struct intel_crtc_state *new_crtc_state =
>  		intel_atomic_get_new_crtc_state(state, crtc);
> -	u8 update_planes = new_crtc_state->update_planes;
> +	u8 disable_async_flip_planes = old_crtc_state->async_flip_planes &
> +				       ~new_crtc_state->async_flip_planes;
>  	const struct intel_plane_state *old_plane_state;
>  	struct intel_plane *plane;
>  	bool need_vbl_wait = false;
> @@ -1261,7 +1262,7 @@ static void intel_crtc_async_flip_disable_wa(struct intel_atomic_state *state,
>  	for_each_old_intel_plane_in_state(state, plane, old_plane_state, i) {
>  		if (plane->need_async_flip_disable_wa &&
>  		    plane->pipe == crtc->pipe &&
> -		    update_planes & BIT(plane->id)) {
> +		    disable_async_flip_planes & BIT(plane->id)) {
>  			/*
>  			 * Apart from the async flip bit we want to
>  			 * preserve the old state for the plane.
> @@ -1378,7 +1379,7 @@ static void intel_pre_plane_update(struct intel_atomic_state *state,
>  	 * WA for platforms where async address update enable bit
>  	 * is double buffered and only latched at start of vblank.
>  	 */
> -	if (old_crtc_state->uapi.async_flip && !new_crtc_state->uapi.async_flip)
> +	if (old_crtc_state->async_flip_planes & ~new_crtc_state->async_flip_planes)
>  		intel_crtc_async_flip_disable_wa(state, crtc);
>  }
>  
> @@ -5939,6 +5940,8 @@ int intel_modeset_all_pipes(struct intel_atomic_state *state,
>  			return ret;
>  
>  		crtc_state->update_planes |= crtc_state->active_planes;
> +		crtc_state->async_flip_planes = 0;
> +		crtc_state->do_async_flip = false;
>  	}
>  
>  	return 0;
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 54c517ca9632fb..9ccae7a4602009 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1249,6 +1249,9 @@ struct intel_crtc_state {
>  	/* bitmask of planes that will be updated during the commit */
>  	u8 update_planes;
>  
> +	/* bitmask of planes with async flip active */
> +	u8 async_flip_planes;
> +
>  	u8 framestart_delay; /* 1-4 */
>  	u8 msa_timing_delay; /* 0-3 */
>  
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
> index ae4e9e680c2e30..261cdab390b484 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2397,6 +2397,8 @@ skl_ddb_add_affected_planes(const struct intel_crtc_state *old_crtc_state,
>  			return PTR_ERR(plane_state);
>  
>  		new_crtc_state->update_planes |= BIT(plane_id);
> +		new_crtc_state->async_flip_planes = 0;
> +		new_crtc_state->do_async_flip = false;
>  	}
>  
>  	return 0;
> @@ -2754,6 +2756,8 @@ static int skl_wm_add_affected_planes(struct intel_atomic_state *state,
>  			return PTR_ERR(plane_state);
>  
>  		new_crtc_state->update_planes |= BIT(plane_id);
> +		new_crtc_state->async_flip_planes = 0;
> +		new_crtc_state->do_async_flip = false;
>  	}
>  
>  	return 0;
> -- 
> 2.34.1
Saarinen, Jani Jan. 28, 2023, 11:24 a.m. UTC | #2
Hi,
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Patchwork
> Sent: perjantai 27. tammikuuta 2023 21.24
> To: Hajda, Andrzej <andrzej.hajda@intel.com>
> Cc: intel-gfx@lists.freedesktop.org
> Subject: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: implement async_flip mode per
> plane tracking (rev5)
> 
> Patch Details
> Series:	drm/i915: implement async_flip mode per plane tracking (rev5)
> URL:	https://patchwork.freedesktop.org/series/108371/
> State:	failure
> Details:	https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/index.html
> 
> CI Bug Log - changes from CI_DRM_12655_full -> Patchwork_108371v5_full
> 
> 
> Summary
> 
> 
> FAILURE
> 
> Serious unknown changes coming with Patchwork_108371v5_full absolutely need to
> be verified manually.
> 
> If you think the reported changes have nothing to do with the changes introduced in
> Patchwork_108371v5_full, please notify your bug team to allow them to document
> this new failure mode, which will reduce false positives in CI.
> 
> External URL: https://intel-gfx-ci.01.org/tree/drm-
> tip/Patchwork_108371v5/index.html
> 
> 
> Participating hosts (10 -> 11)
> 
> 
> Additional (1): shard-rkl0
> 
> 
> Possible new issues
> 
> 
> Here are the unknown changes that may have been introduced in
> Patchwork_108371v5_full:
> 
> 
> IGT changes
> 
> 
> Possible regressions
> 
> 
> *	igt@gen9_exec_parse@allowed-single:
> 
> 	*	shard-glk: PASS <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-glk4/igt@gen9_exec_parse@allowed-single.html>  ->
> ABORT <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-
> glk1/igt@gen9_exec_parse@allowed-single.html>

Similar issue seen on CI_DRM_12656: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12656/shard-glk5/igt@gen9_exec_parse@allowed-single.html
So I assume not due to this patch. 

> 
> 
> Suppressed
> 
> 
> The following results come from untrusted machines, tests, or statuses.
> They do not affect the overall result.
> 
> *	igt@gem_ccs@suspend-resume:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-2/igt@gem_ccs@suspend-resume.html>  (i915#5325
> <https://gitlab.freedesktop.org/drm/intel/issues/5325> ) -> SKIP <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@gem_ccs@suspend-
> resume.html>
> 
> 
> Known issues
> 
> 
> Here are the changes found in Patchwork_108371v5_full that come from known
> issues:
> 
> 
> IGT changes
> 
> 
> Issues hit
> 
> 
> *	igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
> 
> 	*	shard-glk: NOTRUN -> SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/Patchwork_108371v5/shard-glk3/igt@kms_dither@fb-8bpc-vs-panel-
> 6bpc@pipe-a-hdmi-a-1.html>  (fdo#109271
> <https://bugs.freedesktop.org/show_bug.cgi?id=109271> )
> 
> 
> Possible fixes
> 
> 
> *	igt@drm_fdinfo@virtual-idle:
> 
> 	*	{shard-rkl}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-2/igt@drm_fdinfo@virtual-idle.html>  (i915#7742
> <https://gitlab.freedesktop.org/drm/intel/issues/7742> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@drm_fdinfo@virtual-
> idle.html>  +1 similar issue
> 
> *	igt@gem_ctx_persistence@many-contexts:
> 
> 	*	{shard-dg1}: ABORT <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-dg1-14/igt@gem_ctx_persistence@many-contexts.html>
> (i915#4983 <https://gitlab.freedesktop.org/drm/intel/issues/4983> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
> 12/igt@gem_ctx_persistence@many-contexts.html>
> 
> *	igt@gem_eio@in-flight-suspend:
> 
> 	*	{shard-rkl}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-4/igt@gem_eio@in-flight-suspend.html>  (fdo#103375
> <https://bugs.freedesktop.org/show_bug.cgi?id=103375> ) -> PASS <https://intel-
> gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@gem_eio@in-
> flight-suspend.html>
> 
> *	igt@gem_exec_endless@dispatch@bcs0:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-5/igt@gem_exec_endless@dispatch@bcs0.html>
> (i915#6247 <https://gitlab.freedesktop.org/drm/intel/issues/6247> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 4/igt@gem_exec_endless@dispatch@bcs0.html>
> 
> *	igt@gem_exec_fair@basic-none@vcs0:
> 
> 	*	{shard-rkl}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-2/igt@gem_exec_fair@basic-none@vcs0.html>
> (i915#2842 <https://gitlab.freedesktop.org/drm/intel/issues/2842> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 5/igt@gem_exec_fair@basic-none@vcs0.html>  +1 similar issue
> 
> *	igt@gem_exec_fair@basic-pace-share@rcs0:
> 
> 	*	shard-glk: FAIL <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-glk6/igt@gem_exec_fair@basic-pace-share@rcs0.html>
> (i915#2842 <https://gitlab.freedesktop.org/drm/intel/issues/2842> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-
> glk9/igt@gem_exec_fair@basic-pace-share@rcs0.html>
> 
> *	igt@gem_exec_reloc@basic-wc-read-noreloc:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-3/igt@gem_exec_reloc@basic-wc-read-noreloc.html>
> (i915#3281 <https://gitlab.freedesktop.org/drm/intel/issues/3281> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 5/igt@gem_exec_reloc@basic-wc-read-noreloc.html>  +15 similar issues
> 
> *	igt@gem_pwrite_snooped:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-3/igt@gem_pwrite_snooped.html>  (i915#3282
> <https://gitlab.freedesktop.org/drm/intel/issues/3282> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 5/igt@gem_pwrite_snooped.html>  +2 similar issues
> 
> *	igt@gen9_exec_parse@batch-invalid-length:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-2/igt@gen9_exec_parse@batch-invalid-length.html>
> (i915#2527 <https://gitlab.freedesktop.org/drm/intel/issues/2527> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 5/igt@gen9_exec_parse@batch-invalid-length.html>  +5 similar issues
> 
> *	igt@i915_pm_dc@dc6-dpms:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-5/igt@i915_pm_dc@dc6-dpms.html>  (i915#3361
> <https://gitlab.freedesktop.org/drm/intel/issues/3361> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-4/igt@i915_pm_dc@dc6-
> dpms.html>
> 
> *	igt@i915_pm_rpm@modeset-non-lpsp-stress:
> 
> 	*	{shard-dg1}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-dg1-14/igt@i915_pm_rpm@modeset-non-lpsp-
> stress.html>  (i915#1397 <https://gitlab.freedesktop.org/drm/intel/issues/1397> ) ->
> PASS <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
> 12/igt@i915_pm_rpm@modeset-non-lpsp-stress.html>
> 
> *	igt@kms_atomic@atomic_plane_damage:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-2/igt@kms_atomic@atomic_plane_damage.html>
> (i915#4098 <https://gitlab.freedesktop.org/drm/intel/issues/4098> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 6/igt@kms_atomic@atomic_plane_damage.html>  +1 similar issue
> 
> *	igt@kms_big_fb@linear-16bpp-rotate-180:
> 
> 	*	{shard-dg1}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-dg1-13/igt@kms_big_fb@linear-16bpp-rotate-180.html>
> (i915#5138 <https://gitlab.freedesktop.org/drm/intel/issues/5138> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
> 18/igt@kms_big_fb@linear-16bpp-rotate-180.html>
> 
> *	igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs:
> 
> 	*	{shard-tglu}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-tglu-6/igt@kms_ccs@pipe-a-crc-primary-rotation-180-
> y_tiled_gen12_rc_ccs.html>  (i915#7651
> <https://gitlab.freedesktop.org/drm/intel/issues/7651> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-tglu-2/igt@kms_ccs@pipe-a-
> crc-primary-rotation-180-y_tiled_gen12_rc_ccs.html>  +4 similar issues
> 
> *	igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy:
> 
> 	*	{shard-tglu}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-tglu-6/igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-
> legacy.html>  (i915#1845 <https://gitlab.freedesktop.org/drm/intel/issues/1845>  /
> i915#7651 <https://gitlab.freedesktop.org/drm/intel/issues/7651> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-tglu-
> 2/igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy.html>  +2 similar issues
> 
> *	igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2:
> 
> 	*	shard-glk: FAIL <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-glk3/igt@kms_flip@2x-flip-vs-expired-vblank-
> interruptible@ab-hdmi-a1-hdmi-a2.html>  (i915#79
> <https://gitlab.freedesktop.org/drm/intel/issues/79> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-glk8/igt@kms_flip@2x-flip-vs-
> expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html>
> 
> *	igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
> 
> 	*	{shard-tglu}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-
> cur-indfb-draw-blt.html>  (i915#1849
> <https://gitlab.freedesktop.org/drm/intel/issues/1849> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-tglu-
> 2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html>  +2
> similar issues
> 
> *	igt@kms_frontbuffer_tracking@psr-modesetfrombusy:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-
> modesetfrombusy.html>  (i915#1849
> <https://gitlab.freedesktop.org/drm/intel/issues/1849>  / i915#4098
> <https://gitlab.freedesktop.org/drm/intel/issues/4098> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 6/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html>  +9 similar issues
> 
> *	igt@kms_plane@pixel-format-source-clamping@pipe-b-planes:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-2/igt@kms_plane@pixel-format-source-
> clamping@pipe-b-planes.html>  (i915#1849
> <https://gitlab.freedesktop.org/drm/intel/issues/1849> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-6/igt@kms_plane@pixel-
> format-source-clamping@pipe-b-planes.html>  +1 similar issue
> 
> *	igt@kms_psr@sprite_plane_move:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-4/igt@kms_psr@sprite_plane_move.html>
> (i915#1072 <https://gitlab.freedesktop.org/drm/intel/issues/1072> ) -> PASS
> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 6/igt@kms_psr@sprite_plane_move.html>  +1 similar issue
> 
> *	igt@kms_rotation_crc@exhaust-fences:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-4/igt@kms_rotation_crc@exhaust-fences.html>
> (i915#1845 <https://gitlab.freedesktop.org/drm/intel/issues/1845>  / i915#4098
> <https://gitlab.freedesktop.org/drm/intel/issues/4098> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
> 6/igt@kms_rotation_crc@exhaust-fences.html>  +12 similar issues
> 
> *	igt@prime_vgem@basic-fence-read:
> 
> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-rkl-3/igt@prime_vgem@basic-fence-read.html>
> (fdo#109295 <https://bugs.freedesktop.org/show_bug.cgi?id=109295>  / i915#3291
> <https://gitlab.freedesktop.org/drm/intel/issues/3291>  / i915#3708
> <https://gitlab.freedesktop.org/drm/intel/issues/3708> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@prime_vgem@basic-
> fence-read.html>
> 
> *	igt@sysfs_timeslice_duration@timeout@rcs0:
> 
> 	*	{shard-dg1}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
> tip/CI_DRM_12655/shard-dg1-
> 13/igt@sysfs_timeslice_duration@timeout@rcs0.html>  (i915#1755
> <https://gitlab.freedesktop.org/drm/intel/issues/1755> ) -> PASS <https://intel-gfx-
> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
> 18/igt@sysfs_timeslice_duration@timeout@rcs0.html>
> 
> {name}: This element is suppressed. This means it is ignored when computing the
> status of the difference (SUCCESS, WARNING, or FAILURE).
> 
> 
> Build changes
> 
> 
> *	Linux: CI_DRM_12655 -> Patchwork_108371v5
> 
> CI-20190529: 20190529
> CI_DRM_12655: d9b0bc4a0e9edfcbf171e09d3743b7186cd801f7 @
> git://anongit.freedesktop.org/gfx-ci/linux
> IGT_7139: 1e2fdea2a5547aba6d8595b7ac1c5e4543e90f2f @
> https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
> Patchwork_108371v5: d9b0bc4a0e9edfcbf171e09d3743b7186cd801f7 @
> git://anongit.freedesktop.org/gfx-ci/linux
Andrzej Hajda Jan. 30, 2023, 7:28 a.m. UTC | #3
On 28.01.2023 12:24, Saarinen, Jani wrote:
> Hi,
>> -----Original Message-----
>> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Patchwork
>> Sent: perjantai 27. tammikuuta 2023 21.24
>> To: Hajda, Andrzej <andrzej.hajda@intel.com>
>> Cc: intel-gfx@lists.freedesktop.org
>> Subject: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: implement async_flip mode per
>> plane tracking (rev5)
>>
>> Patch Details
>> Series:	drm/i915: implement async_flip mode per plane tracking (rev5)
>> URL:	https://patchwork.freedesktop.org/series/108371/
>> State:	failure
>> Details:	https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/index.html
>>
>> CI Bug Log - changes from CI_DRM_12655_full -> Patchwork_108371v5_full
>>
>>
>> Summary
>>
>>
>> FAILURE
>>
>> Serious unknown changes coming with Patchwork_108371v5_full absolutely need to
>> be verified manually.
>>
>> If you think the reported changes have nothing to do with the changes introduced in
>> Patchwork_108371v5_full, please notify your bug team to allow them to document
>> this new failure mode, which will reduce false positives in CI.
>>
>> External URL: https://intel-gfx-ci.01.org/tree/drm-
>> tip/Patchwork_108371v5/index.html
>>
>>
>> Participating hosts (10 -> 11)
>>
>>
>> Additional (1): shard-rkl0
>>
>>
>> Possible new issues
>>
>>
>> Here are the unknown changes that may have been introduced in
>> Patchwork_108371v5_full:
>>
>>
>> IGT changes
>>
>>
>> Possible regressions
>>
>>
>> *	igt@gen9_exec_parse@allowed-single:
>>
>> 	*	shard-glk: PASS <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-glk4/igt@gen9_exec_parse@allowed-single.html>  ->
>> ABORT <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-
>> glk1/igt@gen9_exec_parse@allowed-single.html>
> Similar issue seen on CI_DRM_12656:
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12656/shard-glk5/igt@gen9_exec_parse@allowed-single.html
> So I assume not due to this patch.

Thanks for checking this. Yes, this issue is not connected with the 
patch. The issue is also observed in:
http://gfx-ci.igk.intel.com/tree/drm-tip/CI_DRM_12659/shard-glk5/igt@gen9_exec_parse@allowed-single.html


Regards
Andrzej

>
>>
>> Suppressed
>>
>>
>> The following results come from untrusted machines, tests, or statuses.
>> They do not affect the overall result.
>>
>> *	igt@gem_ccs@suspend-resume:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-2/igt@gem_ccs@suspend-resume.html>  (i915#5325
>> <https://gitlab.freedesktop.org/drm/intel/issues/5325> ) -> SKIP <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@gem_ccs@suspend-
>> resume.html>
>>
>>
>> Known issues
>>
>>
>> Here are the changes found in Patchwork_108371v5_full that come from known
>> issues:
>>
>>
>> IGT changes
>>
>>
>> Issues hit
>>
>>
>> *	igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-1:
>>
>> 	*	shard-glk: NOTRUN -> SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/Patchwork_108371v5/shard-glk3/igt@kms_dither@fb-8bpc-vs-panel-
>> 6bpc@pipe-a-hdmi-a-1.html>  (fdo#109271
>> <https://bugs.freedesktop.org/show_bug.cgi?id=109271> )
>>
>>
>> Possible fixes
>>
>>
>> *	igt@drm_fdinfo@virtual-idle:
>>
>> 	*	{shard-rkl}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-2/igt@drm_fdinfo@virtual-idle.html>  (i915#7742
>> <https://gitlab.freedesktop.org/drm/intel/issues/7742> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@drm_fdinfo@virtual-
>> idle.html>  +1 similar issue
>>
>> *	igt@gem_ctx_persistence@many-contexts:
>>
>> 	*	{shard-dg1}: ABORT <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-dg1-14/igt@gem_ctx_persistence@many-contexts.html>
>> (i915#4983 <https://gitlab.freedesktop.org/drm/intel/issues/4983> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
>> 12/igt@gem_ctx_persistence@many-contexts.html>
>>
>> *	igt@gem_eio@in-flight-suspend:
>>
>> 	*	{shard-rkl}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-4/igt@gem_eio@in-flight-suspend.html>  (fdo#103375
>> <https://bugs.freedesktop.org/show_bug.cgi?id=103375> ) -> PASS <https://intel-
>> gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@gem_eio@in-
>> flight-suspend.html>
>>
>> *	igt@gem_exec_endless@dispatch@bcs0:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-5/igt@gem_exec_endless@dispatch@bcs0.html>
>> (i915#6247 <https://gitlab.freedesktop.org/drm/intel/issues/6247> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 4/igt@gem_exec_endless@dispatch@bcs0.html>
>>
>> *	igt@gem_exec_fair@basic-none@vcs0:
>>
>> 	*	{shard-rkl}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-2/igt@gem_exec_fair@basic-none@vcs0.html>
>> (i915#2842 <https://gitlab.freedesktop.org/drm/intel/issues/2842> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 5/igt@gem_exec_fair@basic-none@vcs0.html>  +1 similar issue
>>
>> *	igt@gem_exec_fair@basic-pace-share@rcs0:
>>
>> 	*	shard-glk: FAIL <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-glk6/igt@gem_exec_fair@basic-pace-share@rcs0.html>
>> (i915#2842 <https://gitlab.freedesktop.org/drm/intel/issues/2842> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-
>> glk9/igt@gem_exec_fair@basic-pace-share@rcs0.html>
>>
>> *	igt@gem_exec_reloc@basic-wc-read-noreloc:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-3/igt@gem_exec_reloc@basic-wc-read-noreloc.html>
>> (i915#3281 <https://gitlab.freedesktop.org/drm/intel/issues/3281> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 5/igt@gem_exec_reloc@basic-wc-read-noreloc.html>  +15 similar issues
>>
>> *	igt@gem_pwrite_snooped:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-3/igt@gem_pwrite_snooped.html>  (i915#3282
>> <https://gitlab.freedesktop.org/drm/intel/issues/3282> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 5/igt@gem_pwrite_snooped.html>  +2 similar issues
>>
>> *	igt@gen9_exec_parse@batch-invalid-length:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-2/igt@gen9_exec_parse@batch-invalid-length.html>
>> (i915#2527 <https://gitlab.freedesktop.org/drm/intel/issues/2527> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 5/igt@gen9_exec_parse@batch-invalid-length.html>  +5 similar issues
>>
>> *	igt@i915_pm_dc@dc6-dpms:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-5/igt@i915_pm_dc@dc6-dpms.html>  (i915#3361
>> <https://gitlab.freedesktop.org/drm/intel/issues/3361> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-4/igt@i915_pm_dc@dc6-
>> dpms.html>
>>
>> *	igt@i915_pm_rpm@modeset-non-lpsp-stress:
>>
>> 	*	{shard-dg1}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-dg1-14/igt@i915_pm_rpm@modeset-non-lpsp-
>> stress.html>  (i915#1397 <https://gitlab.freedesktop.org/drm/intel/issues/1397> ) ->
>> PASS <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
>> 12/igt@i915_pm_rpm@modeset-non-lpsp-stress.html>
>>
>> *	igt@kms_atomic@atomic_plane_damage:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-2/igt@kms_atomic@atomic_plane_damage.html>
>> (i915#4098 <https://gitlab.freedesktop.org/drm/intel/issues/4098> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 6/igt@kms_atomic@atomic_plane_damage.html>  +1 similar issue
>>
>> *	igt@kms_big_fb@linear-16bpp-rotate-180:
>>
>> 	*	{shard-dg1}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-dg1-13/igt@kms_big_fb@linear-16bpp-rotate-180.html>
>> (i915#5138 <https://gitlab.freedesktop.org/drm/intel/issues/5138> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
>> 18/igt@kms_big_fb@linear-16bpp-rotate-180.html>
>>
>> *	igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs:
>>
>> 	*	{shard-tglu}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-tglu-6/igt@kms_ccs@pipe-a-crc-primary-rotation-180-
>> y_tiled_gen12_rc_ccs.html>  (i915#7651
>> <https://gitlab.freedesktop.org/drm/intel/issues/7651> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-tglu-2/igt@kms_ccs@pipe-a-
>> crc-primary-rotation-180-y_tiled_gen12_rc_ccs.html>  +4 similar issues
>>
>> *	igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy:
>>
>> 	*	{shard-tglu}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-tglu-6/igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-
>> legacy.html>  (i915#1845 <https://gitlab.freedesktop.org/drm/intel/issues/1845>  /
>> i915#7651 <https://gitlab.freedesktop.org/drm/intel/issues/7651> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-tglu-
>> 2/igt@kms_cursor_legacy@flip-vs-cursor-busy-crc-legacy.html>  +2 similar issues
>>
>> *	igt@kms_flip@2x-flip-vs-expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2:
>>
>> 	*	shard-glk: FAIL <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-glk3/igt@kms_flip@2x-flip-vs-expired-vblank-
>> interruptible@ab-hdmi-a1-hdmi-a2.html>  (i915#79
>> <https://gitlab.freedesktop.org/drm/intel/issues/79> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-glk8/igt@kms_flip@2x-flip-vs-
>> expired-vblank-interruptible@ab-hdmi-a1-hdmi-a2.html>
>>
>> *	igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
>>
>> 	*	{shard-tglu}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-
>> cur-indfb-draw-blt.html>  (i915#1849
>> <https://gitlab.freedesktop.org/drm/intel/issues/1849> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-tglu-
>> 2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt.html>  +2
>> similar issues
>>
>> *	igt@kms_frontbuffer_tracking@psr-modesetfrombusy:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-4/igt@kms_frontbuffer_tracking@psr-
>> modesetfrombusy.html>  (i915#1849
>> <https://gitlab.freedesktop.org/drm/intel/issues/1849>  / i915#4098
>> <https://gitlab.freedesktop.org/drm/intel/issues/4098> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 6/igt@kms_frontbuffer_tracking@psr-modesetfrombusy.html>  +9 similar issues
>>
>> *	igt@kms_plane@pixel-format-source-clamping@pipe-b-planes:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-2/igt@kms_plane@pixel-format-source-
>> clamping@pipe-b-planes.html>  (i915#1849
>> <https://gitlab.freedesktop.org/drm/intel/issues/1849> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-6/igt@kms_plane@pixel-
>> format-source-clamping@pipe-b-planes.html>  +1 similar issue
>>
>> *	igt@kms_psr@sprite_plane_move:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-4/igt@kms_psr@sprite_plane_move.html>
>> (i915#1072 <https://gitlab.freedesktop.org/drm/intel/issues/1072> ) -> PASS
>> <https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 6/igt@kms_psr@sprite_plane_move.html>  +1 similar issue
>>
>> *	igt@kms_rotation_crc@exhaust-fences:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-4/igt@kms_rotation_crc@exhaust-fences.html>
>> (i915#1845 <https://gitlab.freedesktop.org/drm/intel/issues/1845>  / i915#4098
>> <https://gitlab.freedesktop.org/drm/intel/issues/4098> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-
>> 6/igt@kms_rotation_crc@exhaust-fences.html>  +12 similar issues
>>
>> *	igt@prime_vgem@basic-fence-read:
>>
>> 	*	{shard-rkl}: SKIP <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-rkl-3/igt@prime_vgem@basic-fence-read.html>
>> (fdo#109295 <https://bugs.freedesktop.org/show_bug.cgi?id=109295>  / i915#3291
>> <https://gitlab.freedesktop.org/drm/intel/issues/3291>  / i915#3708
>> <https://gitlab.freedesktop.org/drm/intel/issues/3708> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-rkl-5/igt@prime_vgem@basic-
>> fence-read.html>
>>
>> *	igt@sysfs_timeslice_duration@timeout@rcs0:
>>
>> 	*	{shard-dg1}: FAIL <https://intel-gfx-ci.01.org/tree/drm-
>> tip/CI_DRM_12655/shard-dg1-
>> 13/igt@sysfs_timeslice_duration@timeout@rcs0.html>  (i915#1755
>> <https://gitlab.freedesktop.org/drm/intel/issues/1755> ) -> PASS <https://intel-gfx-
>> ci.01.org/tree/drm-tip/Patchwork_108371v5/shard-dg1-
>> 18/igt@sysfs_timeslice_duration@timeout@rcs0.html>
>>
>> {name}: This element is suppressed. This means it is ignored when computing the
>> status of the difference (SUCCESS, WARNING, or FAILURE).
>>
>>
>> Build changes
>>
>>
>> *	Linux: CI_DRM_12655 -> Patchwork_108371v5
>>
>> CI-20190529: 20190529
>> CI_DRM_12655: d9b0bc4a0e9edfcbf171e09d3743b7186cd801f7 @
>> git://anongit.freedesktop.org/gfx-ci/linux
>> IGT_7139: 1e2fdea2a5547aba6d8595b7ac1c5e4543e90f2f @
>> https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
>> Patchwork_108371v5: d9b0bc4a0e9edfcbf171e09d3743b7186cd801f7 @
>> git://anongit.freedesktop.org/gfx-ci/linux
Ville Syrjala Jan. 30, 2023, 3:01 p.m. UTC | #4
On Fri, Jan 27, 2023 at 04:30:02PM +0100, Andrzej Hajda wrote:
> Current implementation of async flip w/a relies on assumption that
> previous atomic commit contains valid information if async_flip is still
> enabled on the plane. It is incorrect. If previous commit did not modify
> the plane its state->uapi.async_flip can be false. As a result DMAR/PIPE
> errors can be observed:
> i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
> i915 0000:00:02.0: [drm] *ERROR* Fault errors on pipe A: 0x00000080
> DMAR: DRHD: handling fault status reg 2
> DMAR: [DMA Read NO_PASID] Request device [00:02.0] fault addr 0x0 [fault reason 0x06] PTE Read access is not set
> 
> v2: update async_flip_planes in more reliable places (Ville)
> v3: reset async_flip_planes and do_async_flip in more scenarios (Ville)
> v4: move all resets to plane loops (Ville)
> 
> Signed-off-by: Andrzej Hajda <andrzej.hajda@intel.com>
> ---
> Hi Ville,
> 
> I am not sure about this change. I wonder if in case of
> for*plane loops code could be like:
> 
> new_crtc_state->async_flip_planes &= ~BIT(plane->id);
> if (!new_crtc_state->async_flip_planes)
> 	new_crtc_state->do_async_flip = false;
> 
> But let's see what CI says.
> 
> Regards
> Andrzej
> ---
>  drivers/gpu/drm/i915/display/intel_atomic_plane.c  | 5 ++++-
>  drivers/gpu/drm/i915/display/intel_color.c         | 3 +++
>  drivers/gpu/drm/i915/display/intel_display.c       | 9 ++++++---
>  drivers/gpu/drm/i915/display/intel_display_types.h | 3 +++
>  drivers/gpu/drm/i915/display/skl_watermark.c       | 4 ++++
>  5 files changed, 20 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index 1409bcfb6fd3d9..3bd8f7eb75a60b 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -363,6 +363,7 @@ void intel_plane_set_invisible(struct intel_crtc_state *crtc_state,
>  	crtc_state->scaled_planes &= ~BIT(plane->id);
>  	crtc_state->nv12_planes &= ~BIT(plane->id);
>  	crtc_state->c8_planes &= ~BIT(plane->id);
> +	crtc_state->async_flip_planes &= ~BIT(plane->id);
>  	crtc_state->data_rate[plane->id] = 0;
>  	crtc_state->data_rate_y[plane->id] = 0;
>  	crtc_state->rel_data_rate[plane->id] = 0;
> @@ -582,8 +583,10 @@ static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
>  			 intel_plane_is_scaled(new_plane_state))))
>  		new_crtc_state->disable_lp_wm = true;
>  
> -	if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state))
> +	if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state)) {
>  		new_crtc_state->do_async_flip = true;
> +		new_crtc_state->async_flip_planes |= BIT(plane->id);
> +	}
>  
>  	return 0;
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
> index 8d97c299e6577b..2ca7a016a9d9d1 100644
> --- a/drivers/gpu/drm/i915/display/intel_color.c
> +++ b/drivers/gpu/drm/i915/display/intel_color.c
> @@ -1500,12 +1500,15 @@ intel_color_add_affected_planes(struct intel_crtc_state *new_crtc_state)
>  			return PTR_ERR(plane_state);
>  
>  		new_crtc_state->update_planes |= BIT(plane->id);
> +		new_crtc_state->async_flip_planes = 0;
> +		new_crtc_state->do_async_flip = false;
>  
>  		/* plane control register changes blocked by CxSR */
>  		if (HAS_GMCH(i915))
>  			new_crtc_state->disable_cxsr = true;
>  	}
>  
> +
>  	return 0;
>  }

Thanks. Pushed now. I nuked that bogus extra newline while pushing.

>  
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 717ca3d7890d34..fcd3f1c7af3291 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -1252,7 +1252,8 @@ static void intel_crtc_async_flip_disable_wa(struct intel_atomic_state *state,
>  		intel_atomic_get_old_crtc_state(state, crtc);
>  	const struct intel_crtc_state *new_crtc_state =
>  		intel_atomic_get_new_crtc_state(state, crtc);
> -	u8 update_planes = new_crtc_state->update_planes;
> +	u8 disable_async_flip_planes = old_crtc_state->async_flip_planes &
> +				       ~new_crtc_state->async_flip_planes;
>  	const struct intel_plane_state *old_plane_state;
>  	struct intel_plane *plane;
>  	bool need_vbl_wait = false;
> @@ -1261,7 +1262,7 @@ static void intel_crtc_async_flip_disable_wa(struct intel_atomic_state *state,
>  	for_each_old_intel_plane_in_state(state, plane, old_plane_state, i) {
>  		if (plane->need_async_flip_disable_wa &&
>  		    plane->pipe == crtc->pipe &&
> -		    update_planes & BIT(plane->id)) {
> +		    disable_async_flip_planes & BIT(plane->id)) {
>  			/*
>  			 * Apart from the async flip bit we want to
>  			 * preserve the old state for the plane.
> @@ -1378,7 +1379,7 @@ static void intel_pre_plane_update(struct intel_atomic_state *state,
>  	 * WA for platforms where async address update enable bit
>  	 * is double buffered and only latched at start of vblank.
>  	 */
> -	if (old_crtc_state->uapi.async_flip && !new_crtc_state->uapi.async_flip)
> +	if (old_crtc_state->async_flip_planes & ~new_crtc_state->async_flip_planes)
>  		intel_crtc_async_flip_disable_wa(state, crtc);
>  }
>  
> @@ -5939,6 +5940,8 @@ int intel_modeset_all_pipes(struct intel_atomic_state *state,
>  			return ret;
>  
>  		crtc_state->update_planes |= crtc_state->active_planes;
> +		crtc_state->async_flip_planes = 0;
> +		crtc_state->do_async_flip = false;
>  	}
>  
>  	return 0;
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 54c517ca9632fb..9ccae7a4602009 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1249,6 +1249,9 @@ struct intel_crtc_state {
>  	/* bitmask of planes that will be updated during the commit */
>  	u8 update_planes;
>  
> +	/* bitmask of planes with async flip active */
> +	u8 async_flip_planes;
> +
>  	u8 framestart_delay; /* 1-4 */
>  	u8 msa_timing_delay; /* 0-3 */
>  
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
> index ae4e9e680c2e30..261cdab390b484 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -2397,6 +2397,8 @@ skl_ddb_add_affected_planes(const struct intel_crtc_state *old_crtc_state,
>  			return PTR_ERR(plane_state);
>  
>  		new_crtc_state->update_planes |= BIT(plane_id);
> +		new_crtc_state->async_flip_planes = 0;
> +		new_crtc_state->do_async_flip = false;
>  	}
>  
>  	return 0;
> @@ -2754,6 +2756,8 @@ static int skl_wm_add_affected_planes(struct intel_atomic_state *state,
>  			return PTR_ERR(plane_state);
>  
>  		new_crtc_state->update_planes |= BIT(plane_id);
> +		new_crtc_state->async_flip_planes = 0;
> +		new_crtc_state->do_async_flip = false;
>  	}
>  
>  	return 0;
> -- 
> 2.34.1
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index 1409bcfb6fd3d9..3bd8f7eb75a60b 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -363,6 +363,7 @@  void intel_plane_set_invisible(struct intel_crtc_state *crtc_state,
 	crtc_state->scaled_planes &= ~BIT(plane->id);
 	crtc_state->nv12_planes &= ~BIT(plane->id);
 	crtc_state->c8_planes &= ~BIT(plane->id);
+	crtc_state->async_flip_planes &= ~BIT(plane->id);
 	crtc_state->data_rate[plane->id] = 0;
 	crtc_state->data_rate_y[plane->id] = 0;
 	crtc_state->rel_data_rate[plane->id] = 0;
@@ -582,8 +583,10 @@  static int intel_plane_atomic_calc_changes(const struct intel_crtc_state *old_cr
 			 intel_plane_is_scaled(new_plane_state))))
 		new_crtc_state->disable_lp_wm = true;
 
-	if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state))
+	if (intel_plane_do_async_flip(plane, old_crtc_state, new_crtc_state)) {
 		new_crtc_state->do_async_flip = true;
+		new_crtc_state->async_flip_planes |= BIT(plane->id);
+	}
 
 	return 0;
 }
diff --git a/drivers/gpu/drm/i915/display/intel_color.c b/drivers/gpu/drm/i915/display/intel_color.c
index 8d97c299e6577b..2ca7a016a9d9d1 100644
--- a/drivers/gpu/drm/i915/display/intel_color.c
+++ b/drivers/gpu/drm/i915/display/intel_color.c
@@ -1500,12 +1500,15 @@  intel_color_add_affected_planes(struct intel_crtc_state *new_crtc_state)
 			return PTR_ERR(plane_state);
 
 		new_crtc_state->update_planes |= BIT(plane->id);
+		new_crtc_state->async_flip_planes = 0;
+		new_crtc_state->do_async_flip = false;
 
 		/* plane control register changes blocked by CxSR */
 		if (HAS_GMCH(i915))
 			new_crtc_state->disable_cxsr = true;
 	}
 
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 717ca3d7890d34..fcd3f1c7af3291 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -1252,7 +1252,8 @@  static void intel_crtc_async_flip_disable_wa(struct intel_atomic_state *state,
 		intel_atomic_get_old_crtc_state(state, crtc);
 	const struct intel_crtc_state *new_crtc_state =
 		intel_atomic_get_new_crtc_state(state, crtc);
-	u8 update_planes = new_crtc_state->update_planes;
+	u8 disable_async_flip_planes = old_crtc_state->async_flip_planes &
+				       ~new_crtc_state->async_flip_planes;
 	const struct intel_plane_state *old_plane_state;
 	struct intel_plane *plane;
 	bool need_vbl_wait = false;
@@ -1261,7 +1262,7 @@  static void intel_crtc_async_flip_disable_wa(struct intel_atomic_state *state,
 	for_each_old_intel_plane_in_state(state, plane, old_plane_state, i) {
 		if (plane->need_async_flip_disable_wa &&
 		    plane->pipe == crtc->pipe &&
-		    update_planes & BIT(plane->id)) {
+		    disable_async_flip_planes & BIT(plane->id)) {
 			/*
 			 * Apart from the async flip bit we want to
 			 * preserve the old state for the plane.
@@ -1378,7 +1379,7 @@  static void intel_pre_plane_update(struct intel_atomic_state *state,
 	 * WA for platforms where async address update enable bit
 	 * is double buffered and only latched at start of vblank.
 	 */
-	if (old_crtc_state->uapi.async_flip && !new_crtc_state->uapi.async_flip)
+	if (old_crtc_state->async_flip_planes & ~new_crtc_state->async_flip_planes)
 		intel_crtc_async_flip_disable_wa(state, crtc);
 }
 
@@ -5939,6 +5940,8 @@  int intel_modeset_all_pipes(struct intel_atomic_state *state,
 			return ret;
 
 		crtc_state->update_planes |= crtc_state->active_planes;
+		crtc_state->async_flip_planes = 0;
+		crtc_state->do_async_flip = false;
 	}
 
 	return 0;
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 54c517ca9632fb..9ccae7a4602009 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -1249,6 +1249,9 @@  struct intel_crtc_state {
 	/* bitmask of planes that will be updated during the commit */
 	u8 update_planes;
 
+	/* bitmask of planes with async flip active */
+	u8 async_flip_planes;
+
 	u8 framestart_delay; /* 1-4 */
 	u8 msa_timing_delay; /* 0-3 */
 
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index ae4e9e680c2e30..261cdab390b484 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -2397,6 +2397,8 @@  skl_ddb_add_affected_planes(const struct intel_crtc_state *old_crtc_state,
 			return PTR_ERR(plane_state);
 
 		new_crtc_state->update_planes |= BIT(plane_id);
+		new_crtc_state->async_flip_planes = 0;
+		new_crtc_state->do_async_flip = false;
 	}
 
 	return 0;
@@ -2754,6 +2756,8 @@  static int skl_wm_add_affected_planes(struct intel_atomic_state *state,
 			return PTR_ERR(plane_state);
 
 		new_crtc_state->update_planes |= BIT(plane_id);
+		new_crtc_state->async_flip_planes = 0;
+		new_crtc_state->do_async_flip = false;
 	}
 
 	return 0;