All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
@ 2023-10-16  8:08 Jouni Högander
  2023-10-16  9:26 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Jouni Högander @ 2023-10-16  8:08 UTC (permalink / raw)
  To: intel-gfx

We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
implementation. Lets drop i915_sw_fence usage from display code and
use dma_fence interfaces directly.

For this purpose stack dma fences from related objects into old and new
plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
stacked fences during atomic commit.

There is no be need for separate GPU reset handling in
intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
detected and GPU is being reset.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: José Roberto de Souza <jose.souza@intel.com>

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
 .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
 drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
 .../drm/i915/display/intel_display_types.h    |  2 -
 4 files changed, 37 insertions(+), 95 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
index 5d18145da279..ec0d5168b503 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic.c
@@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
 
 	drm_atomic_state_default_release(&state->base);
 	kfree(state->global_objs);
-
-	i915_sw_fence_fini(&state->commit_ready);
-
 	kfree(state);
 }
 
diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
index b1074350616c..d4f9168ec42c 100644
--- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
@@ -32,6 +32,7 @@
  */
 
 #include <drm/drm_atomic_helper.h>
+#include <drm/drm_gem_atomic_helper.h>
 #include <drm/drm_blend.h>
 #include <drm/drm_fourcc.h>
 
@@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
 	struct intel_atomic_state *state =
 		to_intel_atomic_state(new_plane_state->uapi.state);
 	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
-	const struct intel_plane_state *old_plane_state =
+	struct intel_plane_state *old_plane_state =
 		intel_atomic_get_old_plane_state(state, plane);
 	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
 	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
@@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
 		 * This should only fail upon a hung GPU, in which case we
 		 * can safely continue.
 		 */
-		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
-			ret = i915_sw_fence_await_reservation(&state->commit_ready,
-							      old_obj->base.resv,
-							      false, 0,
-							      GFP_KERNEL);
+		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
+		    !dma_resv_test_signaled(old_obj->base.resv,
+					    dma_resv_usage_rw(false))) {
+			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);
 			if (ret < 0)
 				return ret;
 		}
 	}
 
-	if (new_plane_state->uapi.fence) { /* explicit fencing */
-		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
-					     &attr);
-		ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
-						    new_plane_state->uapi.fence,
-						    i915_fence_timeout(dev_priv),
-						    GFP_KERNEL);
-		if (ret < 0)
-			return ret;
-	}
-
 	if (!obj)
 		return 0;
 
-
 	ret = intel_plane_pin_fb(new_plane_state);
 	if (ret)
 		return ret;
 
-	i915_gem_object_wait_priority(obj, 0, &attr);
-
-	if (!new_plane_state->uapi.fence) { /* implicit fencing */
-		struct dma_resv_iter cursor;
-		struct dma_fence *fence;
+	ret = drm_gem_plane_helper_prepare_fb(_plane, &new_plane_state->uapi);
+	if (ret < 0)
+		goto unpin_fb;
 
-		ret = i915_sw_fence_await_reservation(&state->commit_ready,
-						      obj->base.resv, false,
-						      i915_fence_timeout(dev_priv),
-						      GFP_KERNEL);
-		if (ret < 0)
-			goto unpin_fb;
+	if (new_plane_state->uapi.fence) {
+		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
+					     &attr);
 
-		dma_resv_iter_begin(&cursor, obj->base.resv,
-				    DMA_RESV_USAGE_WRITE);
-		dma_resv_for_each_fence_unlocked(&cursor, fence) {
-			intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
-							     fence);
-		}
-		dma_resv_iter_end(&cursor);
-	} else {
 		intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
 						     new_plane_state->uapi.fence);
 	}
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 28d85e1e858e..48df0559df00 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -48,6 +48,7 @@
 #include "g4x_dp.h"
 #include "g4x_hdmi.h"
 #include "hsw_ips.h"
+#include "i915_config.h"
 #include "i915_drv.h"
 #include "i915_reg.h"
 #include "i915_utils.h"
@@ -7056,29 +7057,34 @@ void intel_atomic_helper_free_state_worker(struct work_struct *work)
 
 static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_state)
 {
-	struct wait_queue_entry wait_fence, wait_reset;
-	struct drm_i915_private *dev_priv = to_i915(intel_state->base.dev);
-
-	init_wait_entry(&wait_fence, 0);
-	init_wait_entry(&wait_reset, 0);
-	for (;;) {
-		prepare_to_wait(&intel_state->commit_ready.wait,
-				&wait_fence, TASK_UNINTERRUPTIBLE);
-		prepare_to_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
-					      I915_RESET_MODESET),
-				&wait_reset, TASK_UNINTERRUPTIBLE);
+	struct drm_i915_private *i915 = to_i915(intel_state->base.dev);
+	struct drm_plane *plane;
+	struct drm_plane_state *new_plane_state, *old_plane_state;
+	int ret, i;
 
+	for_each_oldnew_plane_in_state(&intel_state->base, plane,
+				       old_plane_state, new_plane_state, i) {
+		if (new_plane_state->fence) {
+			ret = dma_fence_wait_timeout(new_plane_state->fence,
+						     false,
+						     i915_fence_timeout(i915));
+			if (ret <= 0)
+				break;
 
-		if (i915_sw_fence_done(&intel_state->commit_ready) ||
-		    test_bit(I915_RESET_MODESET, &to_gt(dev_priv)->reset.flags))
-			break;
+			dma_fence_put(new_plane_state->fence);
+			new_plane_state->fence = NULL;
+		}
+		if (old_plane_state->fence) {
+			ret = dma_fence_wait_timeout(old_plane_state->fence,
+						     false,
+						     i915_fence_timeout(i915));
+			if (ret <= 0)
+				break;
 
-		schedule();
+			dma_fence_put(old_plane_state->fence);
+			old_plane_state->fence = NULL;
+		}
 	}
-	finish_wait(&intel_state->commit_ready.wait, &wait_fence);
-	finish_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
-				  I915_RESET_MODESET),
-		    &wait_reset);
 }
 
 static void intel_atomic_cleanup_work(struct work_struct *work)
@@ -7370,32 +7376,6 @@ static void intel_atomic_commit_work(struct work_struct *work)
 	intel_atomic_commit_tail(state);
 }
 
-static int
-intel_atomic_commit_ready(struct i915_sw_fence *fence,
-			  enum i915_sw_fence_notify notify)
-{
-	struct intel_atomic_state *state =
-		container_of(fence, struct intel_atomic_state, commit_ready);
-
-	switch (notify) {
-	case FENCE_COMPLETE:
-		/* we do blocking waits in the worker, nothing to do here */
-		break;
-	case FENCE_FREE:
-		{
-			struct drm_i915_private *i915 = to_i915(state->base.dev);
-			struct intel_atomic_helper *helper =
-				&i915->display.atomic_helper;
-
-			if (llist_add(&state->freed, &helper->free_list))
-				queue_work(i915->unordered_wq, &helper->free_work);
-			break;
-		}
-	}
-
-	return NOTIFY_DONE;
-}
-
 static void intel_atomic_track_fbs(struct intel_atomic_state *state)
 {
 	struct intel_plane_state *old_plane_state, *new_plane_state;
@@ -7418,10 +7398,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
 
 	state->wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
 
-	drm_atomic_state_get(&state->base);
-	i915_sw_fence_init(&state->commit_ready,
-			   intel_atomic_commit_ready);
-
 	/*
 	 * The intel_legacy_cursor_update() fast path takes care
 	 * of avoiding the vblank waits for simple cursor
@@ -7454,7 +7430,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
 	if (ret) {
 		drm_dbg_atomic(&dev_priv->drm,
 			       "Preparing state failed with %i\n", ret);
-		i915_sw_fence_commit(&state->commit_ready);
 		intel_runtime_pm_put(&dev_priv->runtime_pm, state->wakeref);
 		return ret;
 	}
@@ -7470,8 +7445,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
 		struct intel_crtc *crtc;
 		int i;
 
-		i915_sw_fence_commit(&state->commit_ready);
-
 		for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
 			intel_color_cleanup_commit(new_crtc_state);
 
@@ -7485,7 +7458,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
 	drm_atomic_state_get(&state->base);
 	INIT_WORK(&state->base.commit_work, intel_atomic_commit_work);
 
-	i915_sw_fence_commit(&state->commit_ready);
 	if (nonblock && state->modeset) {
 		queue_work(dev_priv->display.wq.modeset, &state->base.commit_work);
 	} else if (nonblock) {
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 8d8b2f8d37a9..a685c527c7d1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -670,8 +670,6 @@ struct intel_atomic_state {
 
 	bool rps_interactive;
 
-	struct i915_sw_fence commit_ready;
-
 	struct llist_node freed;
 };
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-16  8:08 [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence Jouni Högander
@ 2023-10-16  9:26 ` Patchwork
  2023-10-16 11:23 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2023-10-16  9:26 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 2682 bytes --]

== Series Details ==

Series: drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
URL   : https://patchwork.freedesktop.org/series/125160/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13756 -> Patchwork_125160v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/index.html

Participating hosts (34 -> 22)
------------------------------

  Additional (1): fi-apl-guc 
  Missing    (13): fi-kbl-7567u fi-rkl-11600 bat-dg2-14 bat-dg2-8 bat-adlm-1 bat-dg2-9 bat-adlp-6 fi-snb-2520m fi-bsw-nick fi-cfl-8109u fi-pnv-d510 bat-rplp-1 bat-jsl-3 

Known issues
------------

  Here are the changes found in Patchwork_125160v1 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_lmem_swapping@basic:
    - fi-apl-guc:         NOTRUN -> [SKIP][1] ([fdo#109271] / [i915#4613]) +3 other tests skip
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/fi-apl-guc/igt@gem_lmem_swapping@basic.html

  * igt@kms_hdmi_inject@inject-audio:
    - fi-apl-guc:         NOTRUN -> [SKIP][2] ([fdo#109271]) +16 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/fi-apl-guc/igt@kms_hdmi_inject@inject-audio.html

  
#### Possible fixes ####

  * igt@kms_hdmi_inject@inject-audio:
    - fi-kbl-guc:         [FAIL][3] ([IGT#3]) -> [PASS][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/fi-kbl-guc/igt@kms_hdmi_inject@inject-audio.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/fi-kbl-guc/igt@kms_hdmi_inject@inject-audio.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [IGT#3]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/3
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613


Build changes
-------------

  * Linux: CI_DRM_13756 -> Patchwork_125160v1

  CI-20190529: 20190529
  CI_DRM_13756: c8e15d10895c44b271894850429c74500511cd1c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7539: 08e87a32fa113a9b6f30cbd9766fec346b53faac @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_125160v1: c8e15d10895c44b271894850429c74500511cd1c @ git://anongit.freedesktop.org/gfx-ci/linux


### Linux commits

2fdff34d550f drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/index.html

[-- Attachment #2: Type: text/html, Size: 3422 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-16  8:08 [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence Jouni Högander
  2023-10-16  9:26 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
@ 2023-10-16 11:23 ` Patchwork
  2023-10-18 13:01 ` [Intel-gfx] [PATCH] " Maarten Lankhorst
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 11+ messages in thread
From: Patchwork @ 2023-10-16 11:23 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 77842 bytes --]

== Series Details ==

Series: drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
URL   : https://patchwork.freedesktop.org/series/125160/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_13756_full -> Patchwork_125160v1_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_125160v1_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_125160v1_full, please notify your bug team (lgci.bug.filing@intel.com) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (10 -> 10)
------------------------------

  Additional (1): shard-rkl0 
  Missing    (1): shard-tglu0 

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_125160v1_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gen9_exec_parse@allowed-single:
    - shard-apl:          [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-apl3/igt@gen9_exec_parse@allowed-single.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl2/igt@gen9_exec_parse@allowed-single.html

  * igt@kms_flip@wf_vblank-ts-check@a-dp4:
    - shard-dg2:          [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-dg2-11/igt@kms_flip@wf_vblank-ts-check@a-dp4.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-11/igt@kms_flip@wf_vblank-ts-check@a-dp4.html

  
#### Warnings ####

  * igt@i915_module_load@reload-no-display:
    - shard-snb:          [INCOMPLETE][5] ([i915#4528]) -> [INCOMPLETE][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-snb2/igt@i915_module_load@reload-no-display.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-snb6/igt@i915_module_load@reload-no-display.html

  
New tests
---------

  New tests have been introduced between CI_DRM_13756_full and Patchwork_125160v1_full:

### New IGT tests (15) ###

  * igt@kms_atomic@crtc-invalid-params@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_invalid_mode@zero-clock@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_invalid_mode@zero-clock@pipe-b-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_invalid_mode@zero-clock@pipe-c-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_invalid_mode@zero-clock@pipe-d-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_universal_plane@universal-plane-functional@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_universal_plane@universal-plane-functional@pipe-b-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_universal_plane@universal-plane-functional@pipe-c-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_universal_plane@universal-plane-functional@pipe-d-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_vblank@query-forked-busy-hang@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_vblank@query-forked-busy-hang@pipe-d-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_vblank@wait-forked-busy-hang@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_vblank@wait-forked-busy-hang@pipe-d-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_vblank@wait-forked-hang@pipe-a-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  * igt@kms_vblank@wait-forked-hang@pipe-d-dp-4:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  

Known issues
------------

  Here are the changes found in Patchwork_125160v1_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@crc32:
    - shard-rkl:          NOTRUN -> [SKIP][7] ([i915#6230])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@api_intel_bb@crc32.html

  * igt@device_reset@cold-reset-bound:
    - shard-dg2:          NOTRUN -> [SKIP][8] ([i915#7701])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@device_reset@cold-reset-bound.html

  * igt@device_reset@unbind-cold-reset-rebind:
    - shard-rkl:          NOTRUN -> [SKIP][9] ([i915#7701])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@device_reset@unbind-cold-reset-rebind.html
    - shard-tglu:         NOTRUN -> [SKIP][10] ([i915#7701])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@device_reset@unbind-cold-reset-rebind.html

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg1:          NOTRUN -> [INCOMPLETE][11] ([i915#9408])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@device_reset@unbind-reset-rebind.html

  * igt@drm_fdinfo@busy-hang@rcs0:
    - shard-mtlp:         NOTRUN -> [SKIP][12] ([i915#8414]) +5 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@drm_fdinfo@busy-hang@rcs0.html

  * igt@drm_fdinfo@busy-idle@bcs0:
    - shard-dg1:          NOTRUN -> [SKIP][13] ([i915#8414]) +9 other tests skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@drm_fdinfo@busy-idle@bcs0.html

  * igt@drm_fdinfo@most-busy-idle-check-all@vecs1:
    - shard-dg2:          NOTRUN -> [SKIP][14] ([i915#8414]) +10 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@drm_fdinfo@most-busy-idle-check-all@vecs1.html

  * igt@gem_caching@read-writes:
    - shard-mtlp:         NOTRUN -> [SKIP][15] ([i915#4873])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_caching@read-writes.html

  * igt@gem_ccs@ctrl-surf-copy-new-ctx:
    - shard-dg1:          NOTRUN -> [SKIP][16] ([i915#9323])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@gem_ccs@ctrl-surf-copy-new-ctx.html
    - shard-tglu:         NOTRUN -> [SKIP][17] ([i915#9323])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@gem_ccs@ctrl-surf-copy-new-ctx.html

  * igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][18] ([i915#7297])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0.html

  * igt@gem_close_race@multigpu-basic-process:
    - shard-rkl:          NOTRUN -> [SKIP][19] ([i915#7697])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@gem_close_race@multigpu-basic-process.html

  * igt@gem_close_race@multigpu-basic-threads:
    - shard-dg1:          NOTRUN -> [SKIP][20] ([i915#7697])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@gem_close_race@multigpu-basic-threads.html

  * igt@gem_create@create-ext-cpu-access-big:
    - shard-dg2:          NOTRUN -> [INCOMPLETE][21] ([i915#9364])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@gem_create@create-ext-cpu-access-big.html

  * igt@gem_ctx_param@set-priority-not-supported:
    - shard-dg1:          NOTRUN -> [SKIP][22] ([fdo#109314])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@gem_ctx_param@set-priority-not-supported.html
    - shard-tglu:         NOTRUN -> [SKIP][23] ([fdo#109314])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@gem_ctx_param@set-priority-not-supported.html

  * igt@gem_ctx_persistence@heartbeat-stop:
    - shard-dg2:          NOTRUN -> [SKIP][24] ([i915#8555])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@gem_ctx_persistence@heartbeat-stop.html

  * igt@gem_eio@hibernate:
    - shard-rkl:          NOTRUN -> [ABORT][25] ([i915#7975] / [i915#8213])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@gem_eio@hibernate.html

  * igt@gem_exec_balancer@sliced:
    - shard-mtlp:         NOTRUN -> [SKIP][26] ([i915#4812])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_exec_balancer@sliced.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-rkl:          [PASS][27] -> [FAIL][28] ([i915#2842]) +2 other tests fail
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-4/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_flush@basic-batch-kernel-default-wb:
    - shard-mtlp:         [PASS][29] -> [DMESG-FAIL][30] ([i915#8962]) +1 other test dmesg-fail
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-8/igt@gem_exec_flush@basic-batch-kernel-default-wb.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-4/igt@gem_exec_flush@basic-batch-kernel-default-wb.html

  * igt@gem_exec_flush@basic-uc-pro-default:
    - shard-dg2:          NOTRUN -> [SKIP][31] ([i915#3539] / [i915#4852]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@gem_exec_flush@basic-uc-pro-default.html

  * igt@gem_exec_gttfill@multigpu-basic:
    - shard-mtlp:         NOTRUN -> [SKIP][32] ([i915#7697])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_exec_gttfill@multigpu-basic.html

  * igt@gem_exec_params@rsvd2-dirt:
    - shard-dg1:          NOTRUN -> [SKIP][33] ([fdo#109283])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@gem_exec_params@rsvd2-dirt.html
    - shard-tglu:         NOTRUN -> [SKIP][34] ([fdo#109283])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@gem_exec_params@rsvd2-dirt.html

  * igt@gem_exec_params@secure-non-master:
    - shard-rkl:          NOTRUN -> [SKIP][35] ([fdo#112283])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@gem_exec_params@secure-non-master.html

  * igt@gem_exec_reloc@basic-cpu-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][36] ([i915#3281]) +5 other tests skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@gem_exec_reloc@basic-cpu-gtt.html

  * igt@gem_exec_reloc@basic-gtt-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][37] ([i915#3281]) +3 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_exec_reloc@basic-gtt-noreloc.html

  * igt@gem_exec_reloc@basic-wc-read:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#3281]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@gem_exec_reloc@basic-wc-read.html

  * igt@gem_exec_schedule@preempt-queue-chain:
    - shard-mtlp:         NOTRUN -> [SKIP][39] ([i915#4537] / [i915#4812]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_exec_schedule@preempt-queue-chain.html

  * igt@gem_exec_schedule@semaphore-power:
    - shard-dg1:          NOTRUN -> [SKIP][40] ([i915#4812]) +6 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@gem_exec_schedule@semaphore-power.html

  * igt@gem_fenced_exec_thrash@no-spare-fences:
    - shard-dg2:          NOTRUN -> [SKIP][41] ([i915#4860])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@gem_fenced_exec_thrash@no-spare-fences.html

  * igt@gem_fenced_exec_thrash@no-spare-fences-busy:
    - shard-dg1:          NOTRUN -> [SKIP][42] ([i915#4860])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@gem_fenced_exec_thrash@no-spare-fences-busy.html

  * igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0:
    - shard-dg1:          NOTRUN -> [SKIP][43] ([i915#4565])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@gem_lmem_swapping@heavy-verify-multi-ccs@lmem0.html

  * igt@gem_lmem_swapping@massive-random:
    - shard-mtlp:         NOTRUN -> [SKIP][44] ([i915#4613])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_lmem_swapping@massive-random.html

  * igt@gem_lmem_swapping@verify:
    - shard-apl:          NOTRUN -> [SKIP][45] ([fdo#109271] / [i915#4613])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl6/igt@gem_lmem_swapping@verify.html
    - shard-rkl:          NOTRUN -> [SKIP][46] ([i915#4613]) +1 other test skip
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@gem_lmem_swapping@verify.html

  * igt@gem_mmap_gtt@basic-write-read:
    - shard-mtlp:         NOTRUN -> [SKIP][47] ([i915#4077]) +3 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_mmap_gtt@basic-write-read.html

  * igt@gem_mmap_gtt@cpuset-medium-copy-xy:
    - shard-dg2:          NOTRUN -> [SKIP][48] ([i915#4077]) +2 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@gem_mmap_gtt@cpuset-medium-copy-xy.html

  * igt@gem_mmap_gtt@fault-concurrent-y:
    - shard-dg1:          NOTRUN -> [SKIP][49] ([i915#4077]) +6 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@gem_mmap_gtt@fault-concurrent-y.html

  * igt@gem_mmap_wc@write-read:
    - shard-dg1:          NOTRUN -> [SKIP][50] ([i915#4083]) +3 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@gem_mmap_wc@write-read.html
    - shard-mtlp:         NOTRUN -> [SKIP][51] ([i915#4083]) +3 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_mmap_wc@write-read.html

  * igt@gem_partial_pwrite_pread@write-display:
    - shard-dg1:          NOTRUN -> [SKIP][52] ([i915#3282]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@gem_partial_pwrite_pread@write-display.html

  * igt@gem_pwrite@basic-random:
    - shard-dg2:          NOTRUN -> [SKIP][53] ([i915#3282]) +3 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@gem_pwrite@basic-random.html

  * igt@gem_pxp@create-regular-context-2:
    - shard-rkl:          NOTRUN -> [SKIP][54] ([i915#4270])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@gem_pxp@create-regular-context-2.html

  * igt@gem_pxp@regular-baseline-src-copy-readible:
    - shard-dg1:          NOTRUN -> [SKIP][55] ([i915#4270]) +1 other test skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@gem_pxp@regular-baseline-src-copy-readible.html
    - shard-mtlp:         NOTRUN -> [SKIP][56] ([i915#4270]) +1 other test skip
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_pxp@regular-baseline-src-copy-readible.html

  * igt@gem_pxp@verify-pxp-stale-buf-optout-execution:
    - shard-dg2:          NOTRUN -> [SKIP][57] ([i915#4270])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@gem_pxp@verify-pxp-stale-buf-optout-execution.html

  * igt@gem_readwrite@beyond-eob:
    - shard-rkl:          NOTRUN -> [SKIP][58] ([i915#3282]) +2 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@gem_readwrite@beyond-eob.html

  * igt@gem_render_copy@y-tiled-ccs-to-yf-tiled:
    - shard-mtlp:         NOTRUN -> [SKIP][59] ([i915#8428]) +2 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_render_copy@y-tiled-ccs-to-yf-tiled.html

  * igt@gem_softpin@evict-snoop-interruptible:
    - shard-dg1:          NOTRUN -> [SKIP][60] ([i915#4885])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@gem_softpin@evict-snoop-interruptible.html

  * igt@gem_userptr_blits@dmabuf-unsync:
    - shard-dg1:          NOTRUN -> [SKIP][61] ([i915#3297]) +2 other tests skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@gem_userptr_blits@dmabuf-unsync.html
    - shard-mtlp:         NOTRUN -> [SKIP][62] ([i915#3297]) +1 other test skip
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_userptr_blits@dmabuf-unsync.html

  * igt@gem_userptr_blits@relocations:
    - shard-rkl:          NOTRUN -> [SKIP][63] ([i915#3281]) +5 other tests skip
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@gem_userptr_blits@relocations.html

  * igt@gem_userptr_blits@unsync-unmap:
    - shard-dg2:          NOTRUN -> [SKIP][64] ([i915#3297])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@gem_userptr_blits@unsync-unmap.html

  * igt@gem_userptr_blits@unsync-unmap-after-close:
    - shard-rkl:          NOTRUN -> [SKIP][65] ([i915#3297])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@gem_userptr_blits@unsync-unmap-after-close.html

  * igt@gen3_render_linear_blits:
    - shard-rkl:          NOTRUN -> [SKIP][66] ([fdo#109289]) +1 other test skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@gen3_render_linear_blits.html

  * igt@gen3_render_tiledx_blits:
    - shard-dg2:          NOTRUN -> [SKIP][67] ([fdo#109289]) +1 other test skip
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@gen3_render_tiledx_blits.html

  * igt@gen7_exec_parse@basic-allowed:
    - shard-tglu:         NOTRUN -> [SKIP][68] ([fdo#109289]) +1 other test skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@gen7_exec_parse@basic-allowed.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-dg1:          NOTRUN -> [SKIP][69] ([i915#2527]) +2 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@gen9_exec_parse@allowed-all.html
    - shard-tglu:         NOTRUN -> [SKIP][70] ([i915#2527] / [i915#2856])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@gen9_exec_parse@allowed-all.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-glk:          [PASS][71] -> [INCOMPLETE][72] ([i915#5566])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-glk2/igt@gen9_exec_parse@allowed-single.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-glk4/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@batch-zero-length:
    - shard-mtlp:         NOTRUN -> [SKIP][73] ([i915#2856])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gen9_exec_parse@batch-zero-length.html

  * igt@gen9_exec_parse@bb-chained:
    - shard-rkl:          NOTRUN -> [SKIP][74] ([i915#2527])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@gen9_exec_parse@bb-chained.html

  * igt@gen9_exec_parse@bb-start-param:
    - shard-dg2:          NOTRUN -> [SKIP][75] ([i915#2856]) +2 other tests skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@gen9_exec_parse@bb-start-param.html

  * igt@i915_fb_tiling:
    - shard-dg1:          NOTRUN -> [SKIP][76] ([i915#4881])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@i915_fb_tiling.html

  * igt@i915_hangman@gt-error-state-capture@vecs0:
    - shard-mtlp:         [PASS][77] -> [ABORT][78] ([i915#9414]) +2 other tests abort
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-5/igt@i915_hangman@gt-error-state-capture@vecs0.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-3/igt@i915_hangman@gt-error-state-capture@vecs0.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-dg1:          NOTRUN -> [SKIP][79] ([fdo#109289]) +1 other test skip
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_rps@basic-api:
    - shard-dg1:          NOTRUN -> [SKIP][80] ([i915#6621])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@i915_pm_rps@basic-api.html

  * igt@i915_pm_rps@thresholds-idle-park@gt0:
    - shard-dg1:          NOTRUN -> [SKIP][81] ([i915#8925])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@i915_pm_rps@thresholds-idle-park@gt0.html

  * igt@i915_pm_rps@thresholds-idle@gt0:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#8925])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@i915_pm_rps@thresholds-idle@gt0.html

  * igt@i915_pm_rps@thresholds@gt0:
    - shard-mtlp:         NOTRUN -> [SKIP][83] ([i915#8925])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@i915_pm_rps@thresholds@gt0.html

  * igt@i915_pm_rps@thresholds@gt1:
    - shard-mtlp:         NOTRUN -> [SKIP][84] ([i915#3555] / [i915#8925])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@i915_pm_rps@thresholds@gt1.html

  * igt@i915_query@query-topology-known-pci-ids:
    - shard-dg2:          NOTRUN -> [SKIP][85] ([fdo#109303])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@i915_query@query-topology-known-pci-ids.html

  * igt@i915_suspend@basic-s3-without-i915:
    - shard-rkl:          [PASS][86] -> [FAIL][87] ([fdo#103375])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-6/igt@i915_suspend@basic-s3-without-i915.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-2/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - shard-dg1:          NOTRUN -> [SKIP][88] ([i915#4212])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_async_flips@invalid-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][89] ([i915#6228])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_async_flips@invalid-async-flip.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-apl:          NOTRUN -> [SKIP][90] ([fdo#109271] / [i915#1769])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl6/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html
    - shard-tglu:         NOTRUN -> [SKIP][91] ([i915#1769] / [i915#3555])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_big_fb@4-tiled-16bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][92] ([i915#4538] / [i915#5286]) +2 other tests skip
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_big_fb@4-tiled-16bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-180:
    - shard-mtlp:         [PASS][93] -> [FAIL][94] ([i915#5138])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-5/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-8/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-addfb-size-overflow:
    - shard-dg1:          NOTRUN -> [SKIP][95] ([i915#5286])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_big_fb@4-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-rkl:          NOTRUN -> [SKIP][96] ([i915#5286]) +2 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
    - shard-tglu:         NOTRUN -> [SKIP][97] ([fdo#111615] / [i915#5286]) +1 other test skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_fb@linear-16bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][98] ([fdo#111614] / [i915#3638])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_big_fb@linear-16bpp-rotate-270.html

  * igt@kms_big_fb@linear-16bpp-rotate-90:
    - shard-mtlp:         NOTRUN -> [SKIP][99] ([fdo#111614]) +1 other test skip
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_big_fb@linear-16bpp-rotate-90.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-dg2:          NOTRUN -> [SKIP][100] ([fdo#111614])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-270:
    - shard-tglu:         NOTRUN -> [SKIP][101] ([fdo#111614]) +1 other test skip
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_big_fb@x-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-0:
    - shard-dg2:          NOTRUN -> [SKIP][102] ([i915#5190]) +3 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@kms_big_fb@y-tiled-64bpp-rotate-0.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][103] ([i915#3638]) +5 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_big_fb@y-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-tglu:         NOTRUN -> [FAIL][104] ([i915#3743])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-rkl:          [PASS][105] -> [FAIL][106] ([i915#3743])
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-6/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-270:
    - shard-dg1:          NOTRUN -> [SKIP][107] ([i915#4538]) +3 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@kms_big_fb@yf-tiled-16bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-32bpp-rotate-0:
    - shard-mtlp:         NOTRUN -> [SKIP][108] ([fdo#111615]) +3 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-90:
    - shard-rkl:          NOTRUN -> [SKIP][109] ([fdo#110723]) +2 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_big_fb@yf-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-dg1:          NOTRUN -> [SKIP][110] ([fdo#111615])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-dg2:          NOTRUN -> [SKIP][111] ([i915#4538] / [i915#5190])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-tglu:         NOTRUN -> [SKIP][112] ([fdo#111615]) +2 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_cdclk@plane-scaling@pipe-b-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][113] ([i915#4087]) +3 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-11/igt@kms_cdclk@plane-scaling@pipe-b-dp-4.html

  * igt@kms_chamelium_audio@dp-audio:
    - shard-tglu:         NOTRUN -> [SKIP][114] ([i915#7828]) +3 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_chamelium_audio@dp-audio.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-rkl:          NOTRUN -> [SKIP][115] ([fdo#111827])
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_frames@dp-frame-dump:
    - shard-dg2:          NOTRUN -> [SKIP][116] ([i915#7828]) +2 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_chamelium_frames@dp-frame-dump.html

  * igt@kms_chamelium_hpd@dp-hpd-fast:
    - shard-dg1:          NOTRUN -> [SKIP][117] ([i915#7828]) +6 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_chamelium_hpd@dp-hpd-fast.html

  * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe:
    - shard-mtlp:         NOTRUN -> [SKIP][118] ([i915#7828]) +3 other tests skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html

  * igt@kms_chamelium_hpd@vga-hpd-fast:
    - shard-rkl:          NOTRUN -> [SKIP][119] ([i915#7828]) +3 other tests skip
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_chamelium_hpd@vga-hpd-fast.html

  * igt@kms_content_protection@atomic@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [TIMEOUT][120] ([i915#7173]) +1 other test timeout
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-11/igt@kms_content_protection@atomic@pipe-a-dp-4.html

  * igt@kms_content_protection@dp-mst-type-0:
    - shard-dg2:          NOTRUN -> [SKIP][121] ([i915#3299])
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_content_protection@dp-mst-type-0.html

  * igt@kms_content_protection@uevent:
    - shard-tglu:         NOTRUN -> [SKIP][122] ([i915#6944] / [i915#7116] / [i915#7118])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_content_protection@uevent.html

  * igt@kms_content_protection@uevent@pipe-a-dp-1:
    - shard-apl:          NOTRUN -> [FAIL][123] ([i915#1339])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl6/igt@kms_content_protection@uevent@pipe-a-dp-1.html

  * igt@kms_cursor_crc@cursor-offscreen-max-size:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([i915#3555])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_cursor_crc@cursor-offscreen-max-size.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-dg1:          NOTRUN -> [SKIP][125] ([i915#3359]) +2 other tests skip
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@kms_cursor_crc@cursor-random-512x170.html
    - shard-tglu:         NOTRUN -> [SKIP][126] ([i915#3359]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_crc@cursor-random-max-size:
    - shard-dg1:          NOTRUN -> [SKIP][127] ([i915#3555]) +4 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_cursor_crc@cursor-random-max-size.html

  * igt@kms_cursor_crc@cursor-sliding-32x10:
    - shard-rkl:          NOTRUN -> [SKIP][128] ([i915#3555]) +2 other tests skip
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_cursor_crc@cursor-sliding-32x10.html

  * igt@kms_cursor_crc@cursor-sliding-32x32:
    - shard-mtlp:         NOTRUN -> [SKIP][129] ([i915#3555] / [i915#8814]) +1 other test skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_cursor_crc@cursor-sliding-32x32.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][130] ([fdo#109274] / [i915#5354]) +2 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
    - shard-rkl:          NOTRUN -> [SKIP][131] ([i915#4103])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html

  * igt@kms_cursor_legacy@forked-bo@all-pipes:
    - shard-mtlp:         [PASS][132] -> [DMESG-WARN][133] ([i915#2017])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-8/igt@kms_cursor_legacy@forked-bo@all-pipes.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-4/igt@kms_cursor_legacy@forked-bo@all-pipes.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
    - shard-dg1:          NOTRUN -> [SKIP][134] ([i915#4103] / [i915#4213])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html

  * igt@kms_dirtyfb@dirtyfb-ioctl@fbc-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][135] ([i915#9227])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_dirtyfb@dirtyfb-ioctl@fbc-hdmi-a-4.html

  * igt@kms_dirtyfb@dirtyfb-ioctl@psr-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][136] ([i915#9226] / [i915#9261]) +1 other test skip
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_dirtyfb@dirtyfb-ioctl@psr-hdmi-a-4.html

  * igt@kms_draw_crc@draw-method-mmap-gtt:
    - shard-dg1:          NOTRUN -> [SKIP][137] ([i915#8812])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_draw_crc@draw-method-mmap-gtt.html
    - shard-mtlp:         NOTRUN -> [SKIP][138] ([i915#3555] / [i915#8812])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_draw_crc@draw-method-mmap-gtt.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-rkl:          NOTRUN -> [SKIP][139] ([i915#3555] / [i915#3840])
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-dg1:          NOTRUN -> [SKIP][140] ([i915#3469])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_flip@2x-blocking-absolute-wf_vblank:
    - shard-tglu:         NOTRUN -> [SKIP][141] ([fdo#109274] / [i915#3637]) +3 other tests skip
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_flip@2x-blocking-absolute-wf_vblank.html

  * igt@kms_flip@2x-busy-flip:
    - shard-mtlp:         NOTRUN -> [SKIP][142] ([i915#3637])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_flip@2x-busy-flip.html

  * igt@kms_flip@2x-flip-vs-fences:
    - shard-dg1:          NOTRUN -> [SKIP][143] ([i915#8381]) +1 other test skip
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_flip@2x-flip-vs-fences.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-dg2:          NOTRUN -> [SKIP][144] ([fdo#109274]) +5 other tests skip
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

  * igt@kms_flip@2x-flip-vs-rmfb-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([fdo#109274] / [fdo#111767])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-rkl:          NOTRUN -> [SKIP][146] ([fdo#111825]) +1 other test skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@flip-vs-fences:
    - shard-dg2:          NOTRUN -> [SKIP][147] ([i915#8381])
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_flip@flip-vs-fences.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][148] ([i915#2672])
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][149] ([i915#2672]) +2 other tests skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][150] ([i915#2587] / [i915#2672]) +2 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][151] ([i915#2672]) +2 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][152] ([i915#2672] / [i915#3555])
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-dg1:          NOTRUN -> [SKIP][153] ([i915#2587] / [i915#2672]) +2 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][154] ([i915#2672] / [i915#3555])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_force_connector_basic@force-load-detect:
    - shard-dg2:          NOTRUN -> [SKIP][155] ([fdo#109285])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - shard-dg2:          NOTRUN -> [SKIP][156] ([i915#5274])
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-cpu:
    - shard-dg1:          NOTRUN -> [SKIP][157] ([fdo#111825]) +22 other tests skip
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-mtlp:         NOTRUN -> [SKIP][158] ([i915#1825]) +15 other tests skip
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
    - shard-rkl:          NOTRUN -> [SKIP][159] ([i915#3023]) +9 other tests skip
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu:
    - shard-dg2:          NOTRUN -> [SKIP][160] ([i915#3458]) +5 other tests skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt:
    - shard-glk:          NOTRUN -> [SKIP][161] ([fdo#109271]) +10 other tests skip
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-glk4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][162] ([fdo#111825] / [i915#1825]) +12 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-spr-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][163] ([i915#5354]) +12 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][164] ([i915#8708]) +12 other tests skip
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt:
    - shard-dg1:          NOTRUN -> [SKIP][165] ([i915#3458]) +12 other tests skip
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu:
    - shard-tglu:         NOTRUN -> [SKIP][166] ([fdo#110189]) +12 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-spr-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][167] ([i915#8708]) +3 other tests skip
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen:
    - shard-apl:          NOTRUN -> [SKIP][168] ([fdo#109271]) +40 other tests skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-spr-indfb-fullscreen.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][169] ([i915#8708]) +5 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc:
    - shard-tglu:         NOTRUN -> [SKIP][170] ([fdo#109280]) +11 other tests skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-mmap-wc.html

  * igt@kms_hdr@static-swap:
    - shard-dg1:          NOTRUN -> [SKIP][171] ([i915#3555] / [i915#8228]) +1 other test skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_hdr@static-swap.html
    - shard-mtlp:         NOTRUN -> [SKIP][172] ([i915#3555] / [i915#8228])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_hdr@static-swap.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][173] ([i915#3555] / [i915#8228]) +1 other test skip
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_panel_fitting@legacy:
    - shard-rkl:          NOTRUN -> [SKIP][174] ([i915#6301])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_panel_fitting@legacy.html

  * igt@kms_pipe_b_c_ivb@from-pipe-c-to-b-with-3-lanes:
    - shard-mtlp:         NOTRUN -> [SKIP][175] ([fdo#109289]) +1 other test skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_pipe_b_c_ivb@from-pipe-c-to-b-with-3-lanes.html

  * igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-1:
    - shard-apl:          NOTRUN -> [INCOMPLETE][176] ([i915#180] / [i915#9392])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl2/igt@kms_pipe_crc_basic@suspend-read-crc@pipe-c-dp-1.html

  * igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [FAIL][177] ([i915#8292])
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-12/igt@kms_plane_scaling@intel-max-src-size@pipe-a-hdmi-a-3.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-vga-1:
    - shard-snb:          NOTRUN -> [SKIP][178] ([fdo#109271]) +26 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-snb5/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-a-vga-1.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][179] ([i915#5176] / [i915#9423]) +1 other test skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-b-hdmi-a-2.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][180] ([i915#5176] / [i915#9423]) +3 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-1:
    - shard-dg1:          NOTRUN -> [SKIP][181] ([i915#5235]) +15 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][182] ([i915#5235]) +7 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-d-edp-1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-1:
    - shard-rkl:          NOTRUN -> [SKIP][183] ([i915#5235]) +1 other test skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-b-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][184] ([i915#5235]) +7 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-11/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-dp-4.html

  * igt@kms_prime@d3hot:
    - shard-mtlp:         NOTRUN -> [SKIP][185] ([i915#6524])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_prime@d3hot.html

  * igt@kms_psr2_sf@cursor-plane-update-sf:
    - shard-apl:          NOTRUN -> [SKIP][186] ([fdo#109271] / [i915#658])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl6/igt@kms_psr2_sf@cursor-plane-update-sf.html

  * igt@kms_psr2_sf@plane-move-sf-dmg-area:
    - shard-glk:          NOTRUN -> [SKIP][187] ([fdo#109271] / [i915#658])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-glk4/igt@kms_psr2_sf@plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area:
    - shard-dg2:          NOTRUN -> [SKIP][188] ([i915#658])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-dg1:          NOTRUN -> [SKIP][189] ([fdo#111068] / [i915#658]) +1 other test skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-mtlp:         NOTRUN -> [SKIP][190] ([i915#4348])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-rkl:          NOTRUN -> [SKIP][191] ([fdo#111068] / [i915#658]) +1 other test skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr@cursor_render:
    - shard-dg1:          NOTRUN -> [SKIP][192] ([i915#1072] / [i915#4078]) +2 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_psr@cursor_render.html

  * igt@kms_psr@psr2_dpms:
    - shard-rkl:          NOTRUN -> [SKIP][193] ([i915#1072]) +2 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_psr@psr2_dpms.html

  * igt@kms_psr@psr2_sprite_blt:
    - shard-dg2:          NOTRUN -> [SKIP][194] ([i915#1072]) +1 other test skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@kms_psr@psr2_sprite_blt.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg1:          NOTRUN -> [SKIP][195] ([i915#5461] / [i915#658])
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_rotation_crc@sprite-rotation-90:
    - shard-mtlp:         NOTRUN -> [SKIP][196] ([i915#4235])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@kms_rotation_crc@sprite-rotation-90.html

  * igt@kms_setmode@basic@pipe-a-vga-1:
    - shard-snb:          NOTRUN -> [FAIL][197] ([i915#5465]) +1 other test fail
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-snb5/igt@kms_setmode@basic@pipe-a-vga-1.html

  * igt@kms_setmode@invalid-clone-single-crtc:
    - shard-dg2:          NOTRUN -> [SKIP][198] ([i915#3555] / [i915#4098])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@kms_setmode@invalid-clone-single-crtc.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-dg1:          NOTRUN -> [SKIP][199] ([i915#8623])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
    - shard-tglu:         NOTRUN -> [SKIP][200] ([i915#8623])
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-dg1:          NOTRUN -> [SKIP][201] ([fdo#109309])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-1:
    - shard-apl:          [PASS][202] -> [FAIL][203] ([i915#9196])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-apl1/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-1.html
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl7/igt@kms_universal_plane@cursor-fb-leak@pipe-b-dp-1.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1:
    - shard-mtlp:         [PASS][204] -> [FAIL][205] ([i915#9196])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-5/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-8/igt@kms_universal_plane@cursor-fb-leak@pipe-d-edp-1.html

  * igt@kms_writeback@writeback-fb-id:
    - shard-dg2:          NOTRUN -> [SKIP][206] ([i915#2437])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-6/igt@kms_writeback@writeback-fb-id.html

  * igt@perf@mi-rpc:
    - shard-dg2:          NOTRUN -> [SKIP][207] ([i915#2434])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@perf@mi-rpc.html

  * igt@perf_pmu@busy-double-start@bcs0:
    - shard-mtlp:         [PASS][208] -> [FAIL][209] ([i915#4349])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-4/igt@perf_pmu@busy-double-start@bcs0.html
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-5/igt@perf_pmu@busy-double-start@bcs0.html

  * igt@perf_pmu@event-wait@rcs0:
    - shard-dg2:          NOTRUN -> [SKIP][210] ([fdo#112283])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@perf_pmu@event-wait@rcs0.html

  * igt@perf_pmu@frequency@gt0:
    - shard-dg1:          NOTRUN -> [FAIL][211] ([i915#6806])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@perf_pmu@frequency@gt0.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-dg1:          NOTRUN -> [SKIP][212] ([i915#8516])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-14/igt@perf_pmu@rc6-all-gts.html
    - shard-tglu:         NOTRUN -> [SKIP][213] ([i915#8516])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_udl:
    - shard-dg1:          NOTRUN -> [SKIP][214] ([fdo#109291])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@prime_udl.html
    - shard-mtlp:         NOTRUN -> [SKIP][215] ([fdo#109291])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@prime_udl.html

  * igt@prime_vgem@basic-fence-read:
    - shard-dg1:          NOTRUN -> [SKIP][216] ([i915#3708])
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@prime_vgem@basic-fence-read.html

  * igt@v3d/v3d_perfmon@destroy-invalid-perfmon:
    - shard-dg2:          NOTRUN -> [SKIP][217] ([i915#2575]) +2 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@v3d/v3d_perfmon@destroy-invalid-perfmon.html

  * igt@v3d/v3d_perfmon@get-values-invalid-perfmon:
    - shard-dg1:          NOTRUN -> [SKIP][218] ([i915#2575]) +9 other tests skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@v3d/v3d_perfmon@get-values-invalid-perfmon.html

  * igt@v3d/v3d_submit_cl@bad-flag:
    - shard-mtlp:         NOTRUN -> [SKIP][219] ([i915#2575]) +5 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@v3d/v3d_submit_cl@bad-flag.html

  * igt@v3d/v3d_submit_cl@valid-submission:
    - shard-tglu:         NOTRUN -> [SKIP][220] ([fdo#109315] / [i915#2575]) +4 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@v3d/v3d_submit_cl@valid-submission.html

  * igt@v3d/v3d_submit_csd@bad-multisync-pad:
    - shard-rkl:          NOTRUN -> [SKIP][221] ([fdo#109315]) +6 other tests skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@v3d/v3d_submit_csd@bad-multisync-pad.html

  * igt@vc4/vc4_dmabuf_poll@poll-read-waits-until-write-done:
    - shard-dg2:          NOTRUN -> [SKIP][222] ([i915#7711]) +2 other tests skip
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-1/igt@vc4/vc4_dmabuf_poll@poll-read-waits-until-write-done.html

  * igt@vc4/vc4_label_bo@set-bad-name:
    - shard-dg1:          NOTRUN -> [SKIP][223] ([i915#7711]) +3 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-19/igt@vc4/vc4_label_bo@set-bad-name.html
    - shard-mtlp:         NOTRUN -> [SKIP][224] ([i915#7711]) +2 other tests skip
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@vc4/vc4_label_bo@set-bad-name.html

  * igt@vc4/vc4_mmap@mmap-bo:
    - shard-rkl:          NOTRUN -> [SKIP][225] ([i915#7711]) +2 other tests skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@vc4/vc4_mmap@mmap-bo.html

  * igt@vc4/vc4_wait_seqno@bad-seqno-0ns:
    - shard-tglu:         NOTRUN -> [SKIP][226] ([i915#2575])
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@vc4/vc4_wait_seqno@bad-seqno-0ns.html

  
#### Possible fixes ####

  * igt@gem_eio@unwedge-stress:
    - shard-mtlp:         [ABORT][227] ([i915#7941] / [i915#9262]) -> [PASS][228]
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-8/igt@gem_eio@unwedge-stress.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_schedule@noreorder@ccs0:
    - shard-mtlp:         [DMESG-WARN][229] ([i915#8962]) -> [PASS][230]
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-4/igt@gem_exec_schedule@noreorder@ccs0.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-5/igt@gem_exec_schedule@noreorder@ccs0.html

  * igt@gem_exec_schedule@noreorder@rcs0:
    - shard-mtlp:         [DMESG-FAIL][231] ([i915#8962]) -> [PASS][232]
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-4/igt@gem_exec_schedule@noreorder@rcs0.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-5/igt@gem_exec_schedule@noreorder@rcs0.html

  * igt@gem_exec_schedule@noreorder@vcs0:
    - shard-mtlp:         [FAIL][233] ([i915#8758]) -> [PASS][234]
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-4/igt@gem_exec_schedule@noreorder@vcs0.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-5/igt@gem_exec_schedule@noreorder@vcs0.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg2:          [DMESG-WARN][235] ([i915#8617]) -> [PASS][236]
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-dg2-2/igt@i915_module_load@reload-with-fault-injection.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-11/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rps@reset:
    - shard-tglu:         [INCOMPLETE][237] -> [PASS][238]
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-tglu-2/igt@i915_pm_rps@reset.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-3/igt@i915_pm_rps@reset.html

  * igt@i915_selftest@live@gt_heartbeat:
    - shard-apl:          [DMESG-FAIL][239] ([i915#5334]) -> [PASS][240]
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-apl7/igt@i915_selftest@live@gt_heartbeat.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-apl7/igt@i915_selftest@live@gt_heartbeat.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0:
    - shard-mtlp:         [FAIL][241] ([i915#5138]) -> [PASS][242]
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-8/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-4/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-tglu:         [FAIL][243] ([i915#3743]) -> [PASS][244] +1 other test pass
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-tglu-3/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-10/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_color@legacy-gamma-reset@pipe-a:
    - shard-dg1:          [INCOMPLETE][245] -> [PASS][246] +1 other test pass
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-dg1-18/igt@kms_color@legacy-gamma-reset@pipe-a.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-17/igt@kms_color@legacy-gamma-reset@pipe-a.html

  * igt@kms_cursor_crc@cursor-onscreen-64x64@pipe-b-hdmi-a-2:
    - shard-rkl:          [INCOMPLETE][247] -> [PASS][248] +1 other test pass
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-6/igt@kms_cursor_crc@cursor-onscreen-64x64@pipe-b-hdmi-a-2.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-4/igt@kms_cursor_crc@cursor-onscreen-64x64@pipe-b-hdmi-a-2.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          [FAIL][249] ([i915#2346]) -> [PASS][250]
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-glk9/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@single-bo@all-pipes:
    - shard-mtlp:         [DMESG-WARN][251] ([i915#2017]) -> [PASS][252]
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-4/igt@kms_cursor_legacy@single-bo@all-pipes.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-5/igt@kms_cursor_legacy@single-bo@all-pipes.html

  * {igt@kms_pm_dc@dc6-dpms}:
    - shard-tglu:         [FAIL][253] ([i915#9295]) -> [PASS][254]
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-tglu-6/igt@kms_pm_dc@dc6-dpms.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-2/igt@kms_pm_dc@dc6-dpms.html

  * {igt@kms_pm_rpm@i2c}:
    - shard-dg2:          [FAIL][255] -> [PASS][256]
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-dg2-2/igt@kms_pm_rpm@i2c.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-11/igt@kms_pm_rpm@i2c.html

  * {igt@kms_pm_rpm@modeset-lpsp}:
    - shard-rkl:          [SKIP][257] ([i915#9519]) -> [PASS][258]
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_pm_rpm@modeset-lpsp.html

  * igt@perf_pmu@all-busy-check-all:
    - shard-mtlp:         [ABORT][259] ([i915#9262]) -> [PASS][260]
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-4/igt@perf_pmu@all-busy-check-all.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-6/igt@perf_pmu@all-busy-check-all.html

  * igt@perf_pmu@busy-double-start@vcs1:
    - shard-mtlp:         [FAIL][261] ([i915#4349]) -> [PASS][262] +3 other tests pass
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-mtlp-4/igt@perf_pmu@busy-double-start@vcs1.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-mtlp-5/igt@perf_pmu@busy-double-start@vcs1.html

  
#### Warnings ####

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg1:          [TIMEOUT][263] ([i915#5493]) -> [DMESG-WARN][264] ([i915#4936] / [i915#5493])
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-dg1-15/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg1-15/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@i915_pm_rc6_residency@rc6-idle@vecs0:
    - shard-tglu:         [WARN][265] ([i915#2681]) -> [FAIL][266] ([i915#2681] / [i915#3591]) +1 other test fail
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-tglu-5/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-tglu-5/igt@i915_pm_rc6_residency@rc6-idle@vecs0.html

  * igt@kms_fbcon_fbt@psr:
    - shard-rkl:          [SKIP][267] ([fdo#110189] / [i915#3955]) -> [SKIP][268] ([i915#3955])
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-1/igt@kms_fbcon_fbt@psr.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_fbcon_fbt@psr.html

  * igt@kms_force_connector_basic@force-load-detect:
    - shard-rkl:          [SKIP][269] ([fdo#109285] / [i915#4098]) -> [SKIP][270] ([fdo#109285])
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-1/igt@kms_force_connector_basic@force-load-detect.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-7/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-rkl:          [SKIP][271] ([i915#4816]) -> [SKIP][272] ([i915#4070] / [i915#4816])
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-rkl-4/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-rkl-1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem:
    - shard-dg2:          [CRASH][273] ([i915#9351]) -> [INCOMPLETE][274] ([i915#5493])
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13756/shard-dg2-2/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/shard-dg2-11/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109293]: https://bugs.freedesktop.org/show_bug.cgi?id=109293
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109309]: https://bugs.freedesktop.org/show_bug.cgi?id=109309
  [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111767]: https://bugs.freedesktop.org/show_bug.cgi?id=111767
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1339]: https://gitlab.freedesktop.org/drm/intel/issues/1339
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#2017]: https://gitlab.freedesktop.org/drm/intel/issues/2017
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/intel/issues/3023
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4087]: https://gitlab.freedesktop.org/drm/intel/issues/4087
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4235]: https://gitlab.freedesktop.org/drm/intel/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/intel/issues/4281
  [i915#4348]: https://gitlab.freedesktop.org/drm/intel/issues/4348
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4537]: https://gitlab.freedesktop.org/drm/intel/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4816]: https://gitlab.freedesktop.org/drm/intel/issues/4816
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#4936]: https://gitlab.freedesktop.org/drm/intel/issues/4936
  [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5465]: https://gitlab.freedesktop.org/drm/intel/issues/5465
  [i915#5493]: https://gitlab.freedesktop.org/drm/intel/issues/5493
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6228]: https://gitlab.freedesktop.org/drm/intel/issues/6228
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6806]: https://gitlab.freedesktop.org/drm/intel/issues/6806
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7173]: https://gitlab.freedesktop.org/drm/intel/issues/7173
  [i915#7297]: https://gitlab.freedesktop.org/drm/intel/issues/7297
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7941]: https://gitlab.freedesktop.org/drm/intel/issues/7941
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8292]: https://gitlab.freedesktop.org/drm/intel/issues/8292
  [i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381
  [i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/intel/issues/8428
  [i915#8430]: https://gitlab.freedesktop.org/drm/intel/issues/8430
  [i915#8516]: https://gitlab.freedesktop.org/drm/intel/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/intel/issues/8555
  [i915#8617]: https://gitlab.freedesktop.org/drm/intel/issues/8617
  [i915#8623]: https://gitlab.freedesktop.org/drm/intel/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/intel/issues/8708
  [i915#8758]: https://gitlab.freedesktop.org/drm/intel/issues/8758
  [i915#8812]: https://gitlab.freedesktop.org/drm/intel/issues/8812
  [i915#8814]: https://gitlab.freedesktop.org/drm/intel/issues/8814
  [i915#8925]: https://gitlab.freedesktop.org/drm/intel/issues/8925
  [i915#8962]: https://gitlab.freedesktop.org/drm/intel/issues/8962
  [i915#9196]: https://gitlab.freedesktop.org/drm/intel/issues/9196
  [i915#9226]: https://gitlab.freedesktop.org/drm/intel/issues/9226
  [i915#9227]: https://gitlab.freedesktop.org/drm/intel/issues/9227
  [i915#9261]: https://gitlab.freedesktop.org/drm/intel/issues/9261
  [i915#9262]: https://gitlab.freedesktop.org/drm/intel/issues/9262
  [i915#9295]: https://gitlab.freedesktop.org/drm/intel/issues/9295
  [i915#9323]: https://gitlab.freedesktop.org/drm/intel/issues/9323
  [i915#9351]: https://gitlab.freedesktop.org/drm/intel/issues/9351
  [i915#9364]: https://gitlab.freedesktop.org/drm/intel/issues/9364
  [i915#9392]: https://gitlab.freedesktop.org/drm/intel/issues/9392
  [i915#9408]: https://gitlab.freedesktop.org/drm/intel/issues/9408
  [i915#9414]: https://gitlab.freedesktop.org/drm/intel/issues/9414
  [i915#9423]: https://gitlab.freedesktop.org/drm/intel/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/intel/issues/9424
  [i915#9519]: https://gitlab.freedesktop.org/drm/intel/issues/9519


Build changes
-------------

  * Linux: CI_DRM_13756 -> Patchwork_125160v1

  CI-20190529: 20190529
  CI_DRM_13756: c8e15d10895c44b271894850429c74500511cd1c @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7539: 08e87a32fa113a9b6f30cbd9766fec346b53faac @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_125160v1: c8e15d10895c44b271894850429c74500511cd1c @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_125160v1/index.html

[-- Attachment #2: Type: text/html, Size: 93619 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-16  8:08 [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence Jouni Högander
  2023-10-16  9:26 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
  2023-10-16 11:23 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
@ 2023-10-18 13:01 ` Maarten Lankhorst
  2023-10-18 15:19 ` Ville Syrjälä
  2023-10-18 15:38 ` Ville Syrjälä
  4 siblings, 0 replies; 11+ messages in thread
From: Maarten Lankhorst @ 2023-10-18 13:01 UTC (permalink / raw)
  To: Jouni Högander, intel-gfx

Hey,

Thanks, this version looks a lot better than duplicating 
drm_gem_plane_helper_prepare_fb functionality. :)

Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>

On 2023-10-16 10:08, Jouni Högander wrote:
> We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
> implementation. Lets drop i915_sw_fence usage from display code and
> use dma_fence interfaces directly.
> 
> For this purpose stack dma fences from related objects into old and new
> plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
> stacked fences during atomic commit.
> 
> There is no be need for separate GPU reset handling in
> intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
> detected and GPU is being reset.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: José Roberto de Souza <jose.souza@intel.com>
> 
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>   drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
>   .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
>   drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
>   .../drm/i915/display/intel_display_types.h    |  2 -
>   4 files changed, 37 insertions(+), 95 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
> index 5d18145da279..ec0d5168b503 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
> @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
>   
>   	drm_atomic_state_default_release(&state->base);
>   	kfree(state->global_objs);
> -
> -	i915_sw_fence_fini(&state->commit_ready);
> -
>   	kfree(state);
>   }
>   
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index b1074350616c..d4f9168ec42c 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -32,6 +32,7 @@
>    */
>   
>   #include <drm/drm_atomic_helper.h>
> +#include <drm/drm_gem_atomic_helper.h>
>   #include <drm/drm_blend.h>
>   #include <drm/drm_fourcc.h>
>   
> @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>   	struct intel_atomic_state *state =
>   		to_intel_atomic_state(new_plane_state->uapi.state);
>   	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
> -	const struct intel_plane_state *old_plane_state =
> +	struct intel_plane_state *old_plane_state =
>   		intel_atomic_get_old_plane_state(state, plane);
>   	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
>   	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
> @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>   		 * This should only fail upon a hung GPU, in which case we
>   		 * can safely continue.
>   		 */
> -		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
> -			ret = i915_sw_fence_await_reservation(&state->commit_ready,
> -							      old_obj->base.resv,
> -							      false, 0,
> -							      GFP_KERNEL);
> +		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
> +		    !dma_resv_test_signaled(old_obj->base.resv,
> +					    dma_resv_usage_rw(false))) {
> +			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);
>   			if (ret < 0)
>   				return ret;
>   		}
>   	}
>   
> -	if (new_plane_state->uapi.fence) { /* explicit fencing */
> -		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
> -					     &attr);
> -		ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
> -						    new_plane_state->uapi.fence,
> -						    i915_fence_timeout(dev_priv),
> -						    GFP_KERNEL);
> -		if (ret < 0)
> -			return ret;
> -	}
> -
>   	if (!obj)
>   		return 0;
>   
> -
>   	ret = intel_plane_pin_fb(new_plane_state);
>   	if (ret)
>   		return ret;
>   
> -	i915_gem_object_wait_priority(obj, 0, &attr);
> -
> -	if (!new_plane_state->uapi.fence) { /* implicit fencing */
> -		struct dma_resv_iter cursor;
> -		struct dma_fence *fence;
> +	ret = drm_gem_plane_helper_prepare_fb(_plane, &new_plane_state->uapi);
> +	if (ret < 0)
> +		goto unpin_fb;
>   
> -		ret = i915_sw_fence_await_reservation(&state->commit_ready,
> -						      obj->base.resv, false,
> -						      i915_fence_timeout(dev_priv),
> -						      GFP_KERNEL);
> -		if (ret < 0)
> -			goto unpin_fb;
> +	if (new_plane_state->uapi.fence) {
> +		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
> +					     &attr);
>   
> -		dma_resv_iter_begin(&cursor, obj->base.resv,
> -				    DMA_RESV_USAGE_WRITE);
> -		dma_resv_for_each_fence_unlocked(&cursor, fence) {
> -			intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
> -							     fence);
> -		}
> -		dma_resv_iter_end(&cursor);
> -	} else {
>   		intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
>   						     new_plane_state->uapi.fence);
>   	}
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 28d85e1e858e..48df0559df00 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -48,6 +48,7 @@
>   #include "g4x_dp.h"
>   #include "g4x_hdmi.h"
>   #include "hsw_ips.h"
> +#include "i915_config.h"
>   #include "i915_drv.h"
>   #include "i915_reg.h"
>   #include "i915_utils.h"
> @@ -7056,29 +7057,34 @@ void intel_atomic_helper_free_state_worker(struct work_struct *work)
>   
>   static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_state)
>   {
> -	struct wait_queue_entry wait_fence, wait_reset;
> -	struct drm_i915_private *dev_priv = to_i915(intel_state->base.dev);
> -
> -	init_wait_entry(&wait_fence, 0);
> -	init_wait_entry(&wait_reset, 0);
> -	for (;;) {
> -		prepare_to_wait(&intel_state->commit_ready.wait,
> -				&wait_fence, TASK_UNINTERRUPTIBLE);
> -		prepare_to_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
> -					      I915_RESET_MODESET),
> -				&wait_reset, TASK_UNINTERRUPTIBLE);
> +	struct drm_i915_private *i915 = to_i915(intel_state->base.dev);
> +	struct drm_plane *plane;
> +	struct drm_plane_state *new_plane_state, *old_plane_state;
> +	int ret, i;
>   
> +	for_each_oldnew_plane_in_state(&intel_state->base, plane,
> +				       old_plane_state, new_plane_state, i) {
> +		if (new_plane_state->fence) {
> +			ret = dma_fence_wait_timeout(new_plane_state->fence,
> +						     false,
> +						     i915_fence_timeout(i915));
> +			if (ret <= 0)
> +				break;
>   
> -		if (i915_sw_fence_done(&intel_state->commit_ready) ||
> -		    test_bit(I915_RESET_MODESET, &to_gt(dev_priv)->reset.flags))
> -			break;
> +			dma_fence_put(new_plane_state->fence);
> +			new_plane_state->fence = NULL;
> +		}
> +		if (old_plane_state->fence) {
> +			ret = dma_fence_wait_timeout(old_plane_state->fence,
> +						     false,
> +						     i915_fence_timeout(i915));
> +			if (ret <= 0)
> +				break;
>   
> -		schedule();
> +			dma_fence_put(old_plane_state->fence);
> +			old_plane_state->fence = NULL;
> +		}
>   	}
> -	finish_wait(&intel_state->commit_ready.wait, &wait_fence);
> -	finish_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
> -				  I915_RESET_MODESET),
> -		    &wait_reset);
>   }
>   
>   static void intel_atomic_cleanup_work(struct work_struct *work)
> @@ -7370,32 +7376,6 @@ static void intel_atomic_commit_work(struct work_struct *work)
>   	intel_atomic_commit_tail(state);
>   }
>   
> -static int
> -intel_atomic_commit_ready(struct i915_sw_fence *fence,
> -			  enum i915_sw_fence_notify notify)
> -{
> -	struct intel_atomic_state *state =
> -		container_of(fence, struct intel_atomic_state, commit_ready);
> -
> -	switch (notify) {
> -	case FENCE_COMPLETE:
> -		/* we do blocking waits in the worker, nothing to do here */
> -		break;
> -	case FENCE_FREE:
> -		{
> -			struct drm_i915_private *i915 = to_i915(state->base.dev);
> -			struct intel_atomic_helper *helper =
> -				&i915->display.atomic_helper;
> -
> -			if (llist_add(&state->freed, &helper->free_list))
> -				queue_work(i915->unordered_wq, &helper->free_work);
> -			break;
> -		}
> -	}
> -
> -	return NOTIFY_DONE;
> -}
> -
>   static void intel_atomic_track_fbs(struct intel_atomic_state *state)
>   {
>   	struct intel_plane_state *old_plane_state, *new_plane_state;
> @@ -7418,10 +7398,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>   
>   	state->wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
>   
> -	drm_atomic_state_get(&state->base);
> -	i915_sw_fence_init(&state->commit_ready,
> -			   intel_atomic_commit_ready);
> -
>   	/*
>   	 * The intel_legacy_cursor_update() fast path takes care
>   	 * of avoiding the vblank waits for simple cursor
> @@ -7454,7 +7430,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>   	if (ret) {
>   		drm_dbg_atomic(&dev_priv->drm,
>   			       "Preparing state failed with %i\n", ret);
> -		i915_sw_fence_commit(&state->commit_ready);
>   		intel_runtime_pm_put(&dev_priv->runtime_pm, state->wakeref);
>   		return ret;
>   	}
> @@ -7470,8 +7445,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>   		struct intel_crtc *crtc;
>   		int i;
>   
> -		i915_sw_fence_commit(&state->commit_ready);
> -
>   		for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
>   			intel_color_cleanup_commit(new_crtc_state);
>   
> @@ -7485,7 +7458,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>   	drm_atomic_state_get(&state->base);
>   	INIT_WORK(&state->base.commit_work, intel_atomic_commit_work);
>   
> -	i915_sw_fence_commit(&state->commit_ready);
>   	if (nonblock && state->modeset) {
>   		queue_work(dev_priv->display.wq.modeset, &state->base.commit_work);
>   	} else if (nonblock) {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 8d8b2f8d37a9..a685c527c7d1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -670,8 +670,6 @@ struct intel_atomic_state {
>   
>   	bool rps_interactive;
>   
> -	struct i915_sw_fence commit_ready;
> -
>   	struct llist_node freed;
>   };
>   

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-16  8:08 [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence Jouni Högander
                   ` (2 preceding siblings ...)
  2023-10-18 13:01 ` [Intel-gfx] [PATCH] " Maarten Lankhorst
@ 2023-10-18 15:19 ` Ville Syrjälä
  2023-10-18 15:23   ` Maarten Lankhorst
  2023-10-18 15:38 ` Ville Syrjälä
  4 siblings, 1 reply; 11+ messages in thread
From: Ville Syrjälä @ 2023-10-18 15:19 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-gfx

On Mon, Oct 16, 2023 at 11:08:03AM +0300, Jouni Högander wrote:
> We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
> implementation. Lets drop i915_sw_fence usage from display code and
> use dma_fence interfaces directly.
> 
> For this purpose stack dma fences from related objects into old and new
> plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
> stacked fences during atomic commit.
> 
> There is no be need for separate GPU reset handling in
> intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
> detected and GPU is being reset.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: José Roberto de Souza <jose.souza@intel.com>
> 
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
>  .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
>  drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
>  .../drm/i915/display/intel_display_types.h    |  2 -
>  4 files changed, 37 insertions(+), 95 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
> index 5d18145da279..ec0d5168b503 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
> @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
>  
>  	drm_atomic_state_default_release(&state->base);
>  	kfree(state->global_objs);
> -
> -	i915_sw_fence_fini(&state->commit_ready);
> -
>  	kfree(state);
>  }
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index b1074350616c..d4f9168ec42c 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -32,6 +32,7 @@
>   */
>  
>  #include <drm/drm_atomic_helper.h>
> +#include <drm/drm_gem_atomic_helper.h>
>  #include <drm/drm_blend.h>
>  #include <drm/drm_fourcc.h>
>  
> @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>  	struct intel_atomic_state *state =
>  		to_intel_atomic_state(new_plane_state->uapi.state);
>  	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
> -	const struct intel_plane_state *old_plane_state =
> +	struct intel_plane_state *old_plane_state =
>  		intel_atomic_get_old_plane_state(state, plane);
>  	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
>  	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
> @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>  		 * This should only fail upon a hung GPU, in which case we
>  		 * can safely continue.
>  		 */
> -		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
> -			ret = i915_sw_fence_await_reservation(&state->commit_ready,
> -							      old_obj->base.resv,
> -							      false, 0,
> -							      GFP_KERNEL);
> +		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
> +		    !dma_resv_test_signaled(old_obj->base.resv,
> +					    dma_resv_usage_rw(false))) {
> +			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);
>  			if (ret < 0)
>  				return ret;
>  		}
>  	}
>  
> -	if (new_plane_state->uapi.fence) { /* explicit fencing */
> -		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
> -					     &attr);
> -		ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
> -						    new_plane_state->uapi.fence,
> -						    i915_fence_timeout(dev_priv),
> -						    GFP_KERNEL);
> -		if (ret < 0)
> -			return ret;
> -	}
> -
>  	if (!obj)
>  		return 0;
>  
> -
>  	ret = intel_plane_pin_fb(new_plane_state);
>  	if (ret)
>  		return ret;
>  
> -	i915_gem_object_wait_priority(obj, 0, &attr);
> -
> -	if (!new_plane_state->uapi.fence) { /* implicit fencing */
> -		struct dma_resv_iter cursor;
> -		struct dma_fence *fence;
> +	ret = drm_gem_plane_helper_prepare_fb(_plane, &new_plane_state->uapi);

I don't think we can use that as is due to bigjoiner stuff.
I think we'd need a slightly lower level variant that takes
the fb+fence in explicitly instead of the full plane state.

And I suppose we already have a slight bug here where only the
master pipe's plane will consult the explicit fence and the rest
will take the implicit sync path.

> +	if (ret < 0)
> +		goto unpin_fb;
>  
> -		ret = i915_sw_fence_await_reservation(&state->commit_ready,
> -						      obj->base.resv, false,
> -						      i915_fence_timeout(dev_priv),
> -						      GFP_KERNEL);
> -		if (ret < 0)
> -			goto unpin_fb;
> +	if (new_plane_state->uapi.fence) {
> +		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
> +					     &attr);
>  
> -		dma_resv_iter_begin(&cursor, obj->base.resv,
> -				    DMA_RESV_USAGE_WRITE);
> -		dma_resv_for_each_fence_unlocked(&cursor, fence) {
> -			intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
> -							     fence);
> -		}
> -		dma_resv_iter_end(&cursor);
> -	} else {
>  		intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
>  						     new_plane_state->uapi.fence);
>  	}
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 28d85e1e858e..48df0559df00 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -48,6 +48,7 @@
>  #include "g4x_dp.h"
>  #include "g4x_hdmi.h"
>  #include "hsw_ips.h"
> +#include "i915_config.h"
>  #include "i915_drv.h"
>  #include "i915_reg.h"
>  #include "i915_utils.h"
> @@ -7056,29 +7057,34 @@ void intel_atomic_helper_free_state_worker(struct work_struct *work)
>  
>  static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_state)
>  {
> -	struct wait_queue_entry wait_fence, wait_reset;
> -	struct drm_i915_private *dev_priv = to_i915(intel_state->base.dev);
> -
> -	init_wait_entry(&wait_fence, 0);
> -	init_wait_entry(&wait_reset, 0);
> -	for (;;) {
> -		prepare_to_wait(&intel_state->commit_ready.wait,
> -				&wait_fence, TASK_UNINTERRUPTIBLE);
> -		prepare_to_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
> -					      I915_RESET_MODESET),
> -				&wait_reset, TASK_UNINTERRUPTIBLE);
> +	struct drm_i915_private *i915 = to_i915(intel_state->base.dev);
> +	struct drm_plane *plane;
> +	struct drm_plane_state *new_plane_state, *old_plane_state;
> +	int ret, i;
>  
> +	for_each_oldnew_plane_in_state(&intel_state->base, plane,
> +				       old_plane_state, new_plane_state, i) {
> +		if (new_plane_state->fence) {
> +			ret = dma_fence_wait_timeout(new_plane_state->fence,
> +						     false,
> +						     i915_fence_timeout(i915));
> +			if (ret <= 0)
> +				break;
>  
> -		if (i915_sw_fence_done(&intel_state->commit_ready) ||
> -		    test_bit(I915_RESET_MODESET, &to_gt(dev_priv)->reset.flags))
> -			break;
> +			dma_fence_put(new_plane_state->fence);
> +			new_plane_state->fence = NULL;
> +		}
> +		if (old_plane_state->fence) {
> +			ret = dma_fence_wait_timeout(old_plane_state->fence,
> +						     false,
> +						     i915_fence_timeout(i915));
> +			if (ret <= 0)
> +				break;
>  
> -		schedule();
> +			dma_fence_put(old_plane_state->fence);
> +			old_plane_state->fence = NULL;
> +		}
>  	}
> -	finish_wait(&intel_state->commit_ready.wait, &wait_fence);
> -	finish_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
> -				  I915_RESET_MODESET),
> -		    &wait_reset);
>  }
>  
>  static void intel_atomic_cleanup_work(struct work_struct *work)
> @@ -7370,32 +7376,6 @@ static void intel_atomic_commit_work(struct work_struct *work)
>  	intel_atomic_commit_tail(state);
>  }
>  
> -static int
> -intel_atomic_commit_ready(struct i915_sw_fence *fence,
> -			  enum i915_sw_fence_notify notify)
> -{
> -	struct intel_atomic_state *state =
> -		container_of(fence, struct intel_atomic_state, commit_ready);
> -
> -	switch (notify) {
> -	case FENCE_COMPLETE:
> -		/* we do blocking waits in the worker, nothing to do here */
> -		break;
> -	case FENCE_FREE:
> -		{
> -			struct drm_i915_private *i915 = to_i915(state->base.dev);
> -			struct intel_atomic_helper *helper =
> -				&i915->display.atomic_helper;
> -
> -			if (llist_add(&state->freed, &helper->free_list))
> -				queue_work(i915->unordered_wq, &helper->free_work);
> -			break;
> -		}
> -	}
> -
> -	return NOTIFY_DONE;
> -}
> -
>  static void intel_atomic_track_fbs(struct intel_atomic_state *state)
>  {
>  	struct intel_plane_state *old_plane_state, *new_plane_state;
> @@ -7418,10 +7398,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  
>  	state->wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
>  
> -	drm_atomic_state_get(&state->base);
> -	i915_sw_fence_init(&state->commit_ready,
> -			   intel_atomic_commit_ready);
> -
>  	/*
>  	 * The intel_legacy_cursor_update() fast path takes care
>  	 * of avoiding the vblank waits for simple cursor
> @@ -7454,7 +7430,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  	if (ret) {
>  		drm_dbg_atomic(&dev_priv->drm,
>  			       "Preparing state failed with %i\n", ret);
> -		i915_sw_fence_commit(&state->commit_ready);
>  		intel_runtime_pm_put(&dev_priv->runtime_pm, state->wakeref);
>  		return ret;
>  	}
> @@ -7470,8 +7445,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  		struct intel_crtc *crtc;
>  		int i;
>  
> -		i915_sw_fence_commit(&state->commit_ready);
> -
>  		for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
>  			intel_color_cleanup_commit(new_crtc_state);
>  
> @@ -7485,7 +7458,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  	drm_atomic_state_get(&state->base);
>  	INIT_WORK(&state->base.commit_work, intel_atomic_commit_work);
>  
> -	i915_sw_fence_commit(&state->commit_ready);
>  	if (nonblock && state->modeset) {
>  		queue_work(dev_priv->display.wq.modeset, &state->base.commit_work);
>  	} else if (nonblock) {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 8d8b2f8d37a9..a685c527c7d1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -670,8 +670,6 @@ struct intel_atomic_state {
>  
>  	bool rps_interactive;
>  
> -	struct i915_sw_fence commit_ready;
> -
>  	struct llist_node freed;
>  };
>  
> -- 
> 2.34.1

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-18 15:19 ` Ville Syrjälä
@ 2023-10-18 15:23   ` Maarten Lankhorst
  2023-10-18 15:35     ` Ville Syrjälä
  0 siblings, 1 reply; 11+ messages in thread
From: Maarten Lankhorst @ 2023-10-18 15:23 UTC (permalink / raw)
  To: Ville Syrjälä, Jouni Högander; +Cc: intel-gfx



On 2023-10-18 17:19, Ville Syrjälä wrote:
> On Mon, Oct 16, 2023 at 11:08:03AM +0300, Jouni Högander wrote:
>> We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
>> implementation. Lets drop i915_sw_fence usage from display code and
>> use dma_fence interfaces directly.
>>
>> For this purpose stack dma fences from related objects into old and new
>> plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
>> stacked fences during atomic commit.
>>
>> There is no be need for separate GPU reset handling in
>> intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
>> detected and GPU is being reset.
>>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Cc: José Roberto de Souza <jose.souza@intel.com>
>>
>> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
>> ---
>>   drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
>>   .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
>>   drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
>>   .../drm/i915/display/intel_display_types.h    |  2 -
>>   4 files changed, 37 insertions(+), 95 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
>> index 5d18145da279..ec0d5168b503 100644
>> --- a/drivers/gpu/drm/i915/display/intel_atomic.c
>> +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
>> @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
>>   
>>   	drm_atomic_state_default_release(&state->base);
>>   	kfree(state->global_objs);
>> -
>> -	i915_sw_fence_fini(&state->commit_ready);
>> -
>>   	kfree(state);
>>   }
>>   
>> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>> index b1074350616c..d4f9168ec42c 100644
>> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>> @@ -32,6 +32,7 @@
>>    */
>>   
>>   #include <drm/drm_atomic_helper.h>
>> +#include <drm/drm_gem_atomic_helper.h>
>>   #include <drm/drm_blend.h>
>>   #include <drm/drm_fourcc.h>
>>   
>> @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>>   	struct intel_atomic_state *state =
>>   		to_intel_atomic_state(new_plane_state->uapi.state);
>>   	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
>> -	const struct intel_plane_state *old_plane_state =
>> +	struct intel_plane_state *old_plane_state =
>>   		intel_atomic_get_old_plane_state(state, plane);
>>   	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
>>   	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
>> @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>>   		 * This should only fail upon a hung GPU, in which case we
>>   		 * can safely continue.
>>   		 */
>> -		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
>> -			ret = i915_sw_fence_await_reservation(&state->commit_ready,
>> -							      old_obj->base.resv,
>> -							      false, 0,
>> -							      GFP_KERNEL);
>> +		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
>> +		    !dma_resv_test_signaled(old_obj->base.resv,
>> +					    dma_resv_usage_rw(false))) {
>> +			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);
>>   			if (ret < 0)
>>   				return ret;
>>   		}
>>   	}
>>   
>> -	if (new_plane_state->uapi.fence) { /* explicit fencing */
>> -		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
>> -					     &attr);
>> -		ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
>> -						    new_plane_state->uapi.fence,
>> -						    i915_fence_timeout(dev_priv),
>> -						    GFP_KERNEL);
>> -		if (ret < 0)
>> -			return ret;
>> -	}
>> -
>>   	if (!obj)
>>   		return 0;
>>   
>> -
>>   	ret = intel_plane_pin_fb(new_plane_state);
>>   	if (ret)
>>   		return ret;
>>   
>> -	i915_gem_object_wait_priority(obj, 0, &attr);
>> -
>> -	if (!new_plane_state->uapi.fence) { /* implicit fencing */
>> -		struct dma_resv_iter cursor;
>> -		struct dma_fence *fence;
>> +	ret = drm_gem_plane_helper_prepare_fb(_plane, &new_plane_state->uapi);
> 
> I don't think we can use that as is due to bigjoiner stuff.
> I think we'd need a slightly lower level variant that takes
> the fb+fence in explicitly instead of the full plane state.
> 
> And I suppose we already have a slight bug here where only the
> master pipe's plane will consult the explicit fence and the rest
> will take the implicit sync path.
Why would bigjoiner fail? If bigjoiner happens, the uapi fb will be 
fenced at least once.

Cheers,
~Maarten

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-18 15:23   ` Maarten Lankhorst
@ 2023-10-18 15:35     ` Ville Syrjälä
  0 siblings, 0 replies; 11+ messages in thread
From: Ville Syrjälä @ 2023-10-18 15:35 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Wed, Oct 18, 2023 at 05:23:00PM +0200, Maarten Lankhorst wrote:
> 
> 
> On 2023-10-18 17:19, Ville Syrjälä wrote:
> > On Mon, Oct 16, 2023 at 11:08:03AM +0300, Jouni Högander wrote:
> >> We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
> >> implementation. Lets drop i915_sw_fence usage from display code and
> >> use dma_fence interfaces directly.
> >>
> >> For this purpose stack dma fences from related objects into old and new
> >> plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
> >> stacked fences during atomic commit.
> >>
> >> There is no be need for separate GPU reset handling in
> >> intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
> >> detected and GPU is being reset.
> >>
> >> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >> Cc: José Roberto de Souza <jose.souza@intel.com>
> >>
> >> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> >> ---
> >>   drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
> >>   .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
> >>   drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
> >>   .../drm/i915/display/intel_display_types.h    |  2 -
> >>   4 files changed, 37 insertions(+), 95 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
> >> index 5d18145da279..ec0d5168b503 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_atomic.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
> >> @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
> >>   
> >>   	drm_atomic_state_default_release(&state->base);
> >>   	kfree(state->global_objs);
> >> -
> >> -	i915_sw_fence_fini(&state->commit_ready);
> >> -
> >>   	kfree(state);
> >>   }
> >>   
> >> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> >> index b1074350616c..d4f9168ec42c 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> >> @@ -32,6 +32,7 @@
> >>    */
> >>   
> >>   #include <drm/drm_atomic_helper.h>
> >> +#include <drm/drm_gem_atomic_helper.h>
> >>   #include <drm/drm_blend.h>
> >>   #include <drm/drm_fourcc.h>
> >>   
> >> @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
> >>   	struct intel_atomic_state *state =
> >>   		to_intel_atomic_state(new_plane_state->uapi.state);
> >>   	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
> >> -	const struct intel_plane_state *old_plane_state =
> >> +	struct intel_plane_state *old_plane_state =
> >>   		intel_atomic_get_old_plane_state(state, plane);
> >>   	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
> >>   	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
> >> @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
> >>   		 * This should only fail upon a hung GPU, in which case we
> >>   		 * can safely continue.
> >>   		 */
> >> -		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
> >> -			ret = i915_sw_fence_await_reservation(&state->commit_ready,
> >> -							      old_obj->base.resv,
> >> -							      false, 0,
> >> -							      GFP_KERNEL);
> >> +		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
> >> +		    !dma_resv_test_signaled(old_obj->base.resv,
> >> +					    dma_resv_usage_rw(false))) {
> >> +			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);
> >>   			if (ret < 0)
> >>   				return ret;
> >>   		}
> >>   	}
> >>   
> >> -	if (new_plane_state->uapi.fence) { /* explicit fencing */
> >> -		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
> >> -					     &attr);
> >> -		ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
> >> -						    new_plane_state->uapi.fence,
> >> -						    i915_fence_timeout(dev_priv),
> >> -						    GFP_KERNEL);
> >> -		if (ret < 0)
> >> -			return ret;
> >> -	}
> >> -
> >>   	if (!obj)
> >>   		return 0;
> >>   
> >> -
> >>   	ret = intel_plane_pin_fb(new_plane_state);
> >>   	if (ret)
> >>   		return ret;
> >>   
> >> -	i915_gem_object_wait_priority(obj, 0, &attr);
> >> -
> >> -	if (!new_plane_state->uapi.fence) { /* implicit fencing */
> >> -		struct dma_resv_iter cursor;
> >> -		struct dma_fence *fence;
> >> +	ret = drm_gem_plane_helper_prepare_fb(_plane, &new_plane_state->uapi);
> > 
> > I don't think we can use that as is due to bigjoiner stuff.
> > I think we'd need a slightly lower level variant that takes
> > the fb+fence in explicitly instead of the full plane state.
> > 
> > And I suppose we already have a slight bug here where only the
> > master pipe's plane will consult the explicit fence and the rest
> > will take the implicit sync path.
> Why would bigjoiner fail? If bigjoiner happens, the uapi fb will be 
> fenced at least once.

Hmm. Yeah, I suppose that should cover it since we don't consider
plane visibility anywhere.

And, I guess I was wrong about the existing bug as well since
there should be no uapi.fb set on the slave planes, and so no
extra implicit sync fence will be added.

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-16  8:08 [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence Jouni Högander
                   ` (3 preceding siblings ...)
  2023-10-18 15:19 ` Ville Syrjälä
@ 2023-10-18 15:38 ` Ville Syrjälä
  2023-10-18 17:13   ` Maarten Lankhorst
  4 siblings, 1 reply; 11+ messages in thread
From: Ville Syrjälä @ 2023-10-18 15:38 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-gfx

On Mon, Oct 16, 2023 at 11:08:03AM +0300, Jouni Högander wrote:
> We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
> implementation. Lets drop i915_sw_fence usage from display code and
> use dma_fence interfaces directly.
> 
> For this purpose stack dma fences from related objects into old and new
> plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
> stacked fences during atomic commit.
> 
> There is no be need for separate GPU reset handling in
> intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
> detected and GPU is being reset.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> Cc: José Roberto de Souza <jose.souza@intel.com>
> 
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
>  .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
>  drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
>  .../drm/i915/display/intel_display_types.h    |  2 -
>  4 files changed, 37 insertions(+), 95 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
> index 5d18145da279..ec0d5168b503 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
> @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
>  
>  	drm_atomic_state_default_release(&state->base);
>  	kfree(state->global_objs);
> -
> -	i915_sw_fence_fini(&state->commit_ready);
> -
>  	kfree(state);
>  }
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> index b1074350616c..d4f9168ec42c 100644
> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> @@ -32,6 +32,7 @@
>   */
>  
>  #include <drm/drm_atomic_helper.h>
> +#include <drm/drm_gem_atomic_helper.h>
>  #include <drm/drm_blend.h>
>  #include <drm/drm_fourcc.h>
>  
> @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>  	struct intel_atomic_state *state =
>  		to_intel_atomic_state(new_plane_state->uapi.state);
>  	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
> -	const struct intel_plane_state *old_plane_state =
> +	struct intel_plane_state *old_plane_state =
>  		intel_atomic_get_old_plane_state(state, plane);
>  	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
>  	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
> @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>  		 * This should only fail upon a hung GPU, in which case we
>  		 * can safely continue.
>  		 */
> -		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
> -			ret = i915_sw_fence_await_reservation(&state->commit_ready,
> -							      old_obj->base.resv,
> -							      false, 0,
> -							      GFP_KERNEL);
> +		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
> +		    !dma_resv_test_signaled(old_obj->base.resv,
> +					    dma_resv_usage_rw(false))) {
> +			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);

This I think is broken. The old plane state and its fence can still be
in use by the previous commit, so we cannot mutate it here. Thus we
really need to get the implicit fence from the old fb chained into the
new plane state's fence.

>  			if (ret < 0)
>  				return ret;
>  		}
>  	}
>  
> -	if (new_plane_state->uapi.fence) { /* explicit fencing */
> -		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
> -					     &attr);
> -		ret = i915_sw_fence_await_dma_fence(&state->commit_ready,
> -						    new_plane_state->uapi.fence,
> -						    i915_fence_timeout(dev_priv),
> -						    GFP_KERNEL);
> -		if (ret < 0)
> -			return ret;
> -	}
> -
>  	if (!obj)
>  		return 0;
>  
> -
>  	ret = intel_plane_pin_fb(new_plane_state);
>  	if (ret)
>  		return ret;
>  
> -	i915_gem_object_wait_priority(obj, 0, &attr);
> -
> -	if (!new_plane_state->uapi.fence) { /* implicit fencing */
> -		struct dma_resv_iter cursor;
> -		struct dma_fence *fence;
> +	ret = drm_gem_plane_helper_prepare_fb(_plane, &new_plane_state->uapi);
> +	if (ret < 0)
> +		goto unpin_fb;
>  
> -		ret = i915_sw_fence_await_reservation(&state->commit_ready,
> -						      obj->base.resv, false,
> -						      i915_fence_timeout(dev_priv),
> -						      GFP_KERNEL);
> -		if (ret < 0)
> -			goto unpin_fb;
> +	if (new_plane_state->uapi.fence) {
> +		i915_gem_fence_wait_priority(new_plane_state->uapi.fence,
> +					     &attr);
>  
> -		dma_resv_iter_begin(&cursor, obj->base.resv,
> -				    DMA_RESV_USAGE_WRITE);
> -		dma_resv_for_each_fence_unlocked(&cursor, fence) {
> -			intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
> -							     fence);
> -		}
> -		dma_resv_iter_end(&cursor);
> -	} else {
>  		intel_display_rps_boost_after_vblank(new_plane_state->hw.crtc,
>  						     new_plane_state->uapi.fence);
>  	}
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index 28d85e1e858e..48df0559df00 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -48,6 +48,7 @@
>  #include "g4x_dp.h"
>  #include "g4x_hdmi.h"
>  #include "hsw_ips.h"
> +#include "i915_config.h"
>  #include "i915_drv.h"
>  #include "i915_reg.h"
>  #include "i915_utils.h"
> @@ -7056,29 +7057,34 @@ void intel_atomic_helper_free_state_worker(struct work_struct *work)
>  
>  static void intel_atomic_commit_fence_wait(struct intel_atomic_state *intel_state)
>  {
> -	struct wait_queue_entry wait_fence, wait_reset;
> -	struct drm_i915_private *dev_priv = to_i915(intel_state->base.dev);
> -
> -	init_wait_entry(&wait_fence, 0);
> -	init_wait_entry(&wait_reset, 0);
> -	for (;;) {
> -		prepare_to_wait(&intel_state->commit_ready.wait,
> -				&wait_fence, TASK_UNINTERRUPTIBLE);
> -		prepare_to_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
> -					      I915_RESET_MODESET),
> -				&wait_reset, TASK_UNINTERRUPTIBLE);
> +	struct drm_i915_private *i915 = to_i915(intel_state->base.dev);
> +	struct drm_plane *plane;
> +	struct drm_plane_state *new_plane_state, *old_plane_state;
> +	int ret, i;
>  
> +	for_each_oldnew_plane_in_state(&intel_state->base, plane,
> +				       old_plane_state, new_plane_state, i) {
> +		if (new_plane_state->fence) {
> +			ret = dma_fence_wait_timeout(new_plane_state->fence,
> +						     false,
> +						     i915_fence_timeout(i915));
> +			if (ret <= 0)
> +				break;
>  
> -		if (i915_sw_fence_done(&intel_state->commit_ready) ||
> -		    test_bit(I915_RESET_MODESET, &to_gt(dev_priv)->reset.flags))
> -			break;
> +			dma_fence_put(new_plane_state->fence);
> +			new_plane_state->fence = NULL;
> +		}
> +		if (old_plane_state->fence) {
> +			ret = dma_fence_wait_timeout(old_plane_state->fence,
> +						     false,
> +						     i915_fence_timeout(i915));
> +			if (ret <= 0)
> +				break;
>  
> -		schedule();
> +			dma_fence_put(old_plane_state->fence);
> +			old_plane_state->fence = NULL;
> +		}
>  	}
> -	finish_wait(&intel_state->commit_ready.wait, &wait_fence);
> -	finish_wait(bit_waitqueue(&to_gt(dev_priv)->reset.flags,
> -				  I915_RESET_MODESET),
> -		    &wait_reset);
>  }
>  
>  static void intel_atomic_cleanup_work(struct work_struct *work)
> @@ -7370,32 +7376,6 @@ static void intel_atomic_commit_work(struct work_struct *work)
>  	intel_atomic_commit_tail(state);
>  }
>  
> -static int
> -intel_atomic_commit_ready(struct i915_sw_fence *fence,
> -			  enum i915_sw_fence_notify notify)
> -{
> -	struct intel_atomic_state *state =
> -		container_of(fence, struct intel_atomic_state, commit_ready);
> -
> -	switch (notify) {
> -	case FENCE_COMPLETE:
> -		/* we do blocking waits in the worker, nothing to do here */
> -		break;
> -	case FENCE_FREE:
> -		{
> -			struct drm_i915_private *i915 = to_i915(state->base.dev);
> -			struct intel_atomic_helper *helper =
> -				&i915->display.atomic_helper;
> -
> -			if (llist_add(&state->freed, &helper->free_list))
> -				queue_work(i915->unordered_wq, &helper->free_work);
> -			break;
> -		}
> -	}
> -
> -	return NOTIFY_DONE;
> -}
> -
>  static void intel_atomic_track_fbs(struct intel_atomic_state *state)
>  {
>  	struct intel_plane_state *old_plane_state, *new_plane_state;
> @@ -7418,10 +7398,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  
>  	state->wakeref = intel_runtime_pm_get(&dev_priv->runtime_pm);
>  
> -	drm_atomic_state_get(&state->base);
> -	i915_sw_fence_init(&state->commit_ready,
> -			   intel_atomic_commit_ready);
> -
>  	/*
>  	 * The intel_legacy_cursor_update() fast path takes care
>  	 * of avoiding the vblank waits for simple cursor
> @@ -7454,7 +7430,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  	if (ret) {
>  		drm_dbg_atomic(&dev_priv->drm,
>  			       "Preparing state failed with %i\n", ret);
> -		i915_sw_fence_commit(&state->commit_ready);
>  		intel_runtime_pm_put(&dev_priv->runtime_pm, state->wakeref);
>  		return ret;
>  	}
> @@ -7470,8 +7445,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  		struct intel_crtc *crtc;
>  		int i;
>  
> -		i915_sw_fence_commit(&state->commit_ready);
> -
>  		for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i)
>  			intel_color_cleanup_commit(new_crtc_state);
>  
> @@ -7485,7 +7458,6 @@ int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
>  	drm_atomic_state_get(&state->base);
>  	INIT_WORK(&state->base.commit_work, intel_atomic_commit_work);
>  
> -	i915_sw_fence_commit(&state->commit_ready);
>  	if (nonblock && state->modeset) {
>  		queue_work(dev_priv->display.wq.modeset, &state->base.commit_work);
>  	} else if (nonblock) {
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 8d8b2f8d37a9..a685c527c7d1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -670,8 +670,6 @@ struct intel_atomic_state {
>  
>  	bool rps_interactive;
>  
> -	struct i915_sw_fence commit_ready;
> -
>  	struct llist_node freed;
>  };
>  
> -- 
> 2.34.1

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-18 15:38 ` Ville Syrjälä
@ 2023-10-18 17:13   ` Maarten Lankhorst
  2023-10-18 17:59     ` Ville Syrjälä
  0 siblings, 1 reply; 11+ messages in thread
From: Maarten Lankhorst @ 2023-10-18 17:13 UTC (permalink / raw)
  To: Ville Syrjälä, Jouni Högander; +Cc: intel-gfx



On 2023-10-18 17:38, Ville Syrjälä wrote:
> On Mon, Oct 16, 2023 at 11:08:03AM +0300, Jouni Högander wrote:
>> We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
>> implementation. Lets drop i915_sw_fence usage from display code and
>> use dma_fence interfaces directly.
>>
>> For this purpose stack dma fences from related objects into old and new
>> plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
>> stacked fences during atomic commit.
>>
>> There is no be need for separate GPU reset handling in
>> intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
>> detected and GPU is being reset.
>>
>> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
>> Cc: José Roberto de Souza <jose.souza@intel.com>
>>
>> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
>> ---
>>   drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
>>   .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
>>   drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
>>   .../drm/i915/display/intel_display_types.h    |  2 -
>>   4 files changed, 37 insertions(+), 95 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
>> index 5d18145da279..ec0d5168b503 100644
>> --- a/drivers/gpu/drm/i915/display/intel_atomic.c
>> +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
>> @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
>>   
>>   	drm_atomic_state_default_release(&state->base);
>>   	kfree(state->global_objs);
>> -
>> -	i915_sw_fence_fini(&state->commit_ready);
>> -
>>   	kfree(state);
>>   }
>>   
>> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>> index b1074350616c..d4f9168ec42c 100644
>> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
>> @@ -32,6 +32,7 @@
>>    */
>>   
>>   #include <drm/drm_atomic_helper.h>
>> +#include <drm/drm_gem_atomic_helper.h>
>>   #include <drm/drm_blend.h>
>>   #include <drm/drm_fourcc.h>
>>   
>> @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>>   	struct intel_atomic_state *state =
>>   		to_intel_atomic_state(new_plane_state->uapi.state);
>>   	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
>> -	const struct intel_plane_state *old_plane_state =
>> +	struct intel_plane_state *old_plane_state =
>>   		intel_atomic_get_old_plane_state(state, plane);
>>   	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
>>   	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
>> @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
>>   		 * This should only fail upon a hung GPU, in which case we
>>   		 * can safely continue.
>>   		 */
>> -		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
>> -			ret = i915_sw_fence_await_reservation(&state->commit_ready,
>> -							      old_obj->base.resv,
>> -							      false, 0,
>> -							      GFP_KERNEL);
>> +		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
>> +		    !dma_resv_test_signaled(old_obj->base.resv,
>> +					    dma_resv_usage_rw(false))) {
>> +			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);
> 
> This I think is broken. The old plane state and its fence can still be
> in use by the previous commit, so we cannot mutate it here. Thus we
> really need to get the implicit fence from the old fb chained into the
> new plane state's fence.
Is it even needed though? If new_plane_state always calls prepare_fb.

Cheers,
~Maarten

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-18 17:13   ` Maarten Lankhorst
@ 2023-10-18 17:59     ` Ville Syrjälä
  2023-10-20  9:44       ` Hogander, Jouni
  0 siblings, 1 reply; 11+ messages in thread
From: Ville Syrjälä @ 2023-10-18 17:59 UTC (permalink / raw)
  To: Maarten Lankhorst; +Cc: intel-gfx

On Wed, Oct 18, 2023 at 07:13:12PM +0200, Maarten Lankhorst wrote:
> 
> 
> On 2023-10-18 17:38, Ville Syrjälä wrote:
> > On Mon, Oct 16, 2023 at 11:08:03AM +0300, Jouni Högander wrote:
> >> We are preparing for Xe driver. Xe driver doesn't have i915_sw_fence
> >> implementation. Lets drop i915_sw_fence usage from display code and
> >> use dma_fence interfaces directly.
> >>
> >> For this purpose stack dma fences from related objects into old and new
> >> plane states using drm_gem_plane_helper_prepare_fb. Then wait for these
> >> stacked fences during atomic commit.
> >>
> >> There is no be need for separate GPU reset handling in
> >> intel_atomic_commit_fence_wait as the fences are signaled when GPU hang is
> >> detected and GPU is being reset.
> >>
> >> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> >> Cc: José Roberto de Souza <jose.souza@intel.com>
> >>
> >> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> >> ---
> >>   drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
> >>   .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++---------
> >>   drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++-------------
> >>   .../drm/i915/display/intel_display_types.h    |  2 -
> >>   4 files changed, 37 insertions(+), 95 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c b/drivers/gpu/drm/i915/display/intel_atomic.c
> >> index 5d18145da279..ec0d5168b503 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_atomic.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
> >> @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct drm_atomic_state *_state)
> >>   
> >>   	drm_atomic_state_default_release(&state->base);
> >>   	kfree(state->global_objs);
> >> -
> >> -	i915_sw_fence_fini(&state->commit_ready);
> >> -
> >>   	kfree(state);
> >>   }
> >>   
> >> diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> >> index b1074350616c..d4f9168ec42c 100644
> >> --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> >> +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> >> @@ -32,6 +32,7 @@
> >>    */
> >>   
> >>   #include <drm/drm_atomic_helper.h>
> >> +#include <drm/drm_gem_atomic_helper.h>
> >>   #include <drm/drm_blend.h>
> >>   #include <drm/drm_fourcc.h>
> >>   
> >> @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
> >>   	struct intel_atomic_state *state =
> >>   		to_intel_atomic_state(new_plane_state->uapi.state);
> >>   	struct drm_i915_private *dev_priv = to_i915(plane->base.dev);
> >> -	const struct intel_plane_state *old_plane_state =
> >> +	struct intel_plane_state *old_plane_state =
> >>   		intel_atomic_get_old_plane_state(state, plane);
> >>   	struct drm_i915_gem_object *obj = intel_fb_obj(new_plane_state->hw.fb);
> >>   	struct drm_i915_gem_object *old_obj = intel_fb_obj(old_plane_state->hw.fb);
> >> @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane *_plane,
> >>   		 * This should only fail upon a hung GPU, in which case we
> >>   		 * can safely continue.
> >>   		 */
> >> -		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state)) {
> >> -			ret = i915_sw_fence_await_reservation(&state->commit_ready,
> >> -							      old_obj->base.resv,
> >> -							      false, 0,
> >> -							      GFP_KERNEL);
> >> +		if (new_crtc_state && intel_crtc_needs_modeset(new_crtc_state) &&
> >> +		    !dma_resv_test_signaled(old_obj->base.resv,
> >> +					    dma_resv_usage_rw(false))) {
> >> +			ret = drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state->uapi);
> > 
> > This I think is broken. The old plane state and its fence can still be
> > in use by the previous commit, so we cannot mutate it here. Thus we
> > really need to get the implicit fence from the old fb chained into the
> > new plane state's fence.
> Is it even needed though? If new_plane_state always calls prepare_fb.

It's explained in the comment.

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence
  2023-10-18 17:59     ` Ville Syrjälä
@ 2023-10-20  9:44       ` Hogander, Jouni
  0 siblings, 0 replies; 11+ messages in thread
From: Hogander, Jouni @ 2023-10-20  9:44 UTC (permalink / raw)
  To: ville.syrjala, maarten.lankhorst; +Cc: intel-gfx

On Wed, 2023-10-18 at 20:59 +0300, Ville Syrjälä wrote:
> On Wed, Oct 18, 2023 at 07:13:12PM +0200, Maarten Lankhorst wrote:
> > 
> > 
> > On 2023-10-18 17:38, Ville Syrjälä wrote:
> > > On Mon, Oct 16, 2023 at 11:08:03AM +0300, Jouni Högander wrote:
> > > > We are preparing for Xe driver. Xe driver doesn't have
> > > > i915_sw_fence
> > > > implementation. Lets drop i915_sw_fence usage from display code
> > > > and
> > > > use dma_fence interfaces directly.
> > > > 
> > > > For this purpose stack dma fences from related objects into old
> > > > and new
> > > > plane states using drm_gem_plane_helper_prepare_fb. Then wait
> > > > for these
> > > > stacked fences during atomic commit.
> > > > 
> > > > There is no be need for separate GPU reset handling in
> > > > intel_atomic_commit_fence_wait as the fences are signaled when
> > > > GPU hang is
> > > > detected and GPU is being reset.
> > > > 
> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
> > > > Cc: José Roberto de Souza <jose.souza@intel.com>
> > > > 
> > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > > ---
> > > >   drivers/gpu/drm/i915/display/intel_atomic.c   |  3 -
> > > >   .../gpu/drm/i915/display/intel_atomic_plane.c | 49 +++-------
> > > > --
> > > >   drivers/gpu/drm/i915/display/intel_display.c  | 78 ++++++----
> > > > ---------
> > > >   .../drm/i915/display/intel_display_types.h    |  2 -
> > > >   4 files changed, 37 insertions(+), 95 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_atomic.c
> > > > b/drivers/gpu/drm/i915/display/intel_atomic.c
> > > > index 5d18145da279..ec0d5168b503 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_atomic.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_atomic.c
> > > > @@ -331,9 +331,6 @@ void intel_atomic_state_free(struct
> > > > drm_atomic_state *_state)
> > > >   
> > > >         drm_atomic_state_default_release(&state->base);
> > > >         kfree(state->global_objs);
> > > > -
> > > > -       i915_sw_fence_fini(&state->commit_ready);
> > > > -
> > > >         kfree(state);
> > > >   }
> > > >   
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> > > > b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> > > > index b1074350616c..d4f9168ec42c 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_atomic_plane.c
> > > > @@ -32,6 +32,7 @@
> > > >    */
> > > >   
> > > >   #include <drm/drm_atomic_helper.h>
> > > > +#include <drm/drm_gem_atomic_helper.h>
> > > >   #include <drm/drm_blend.h>
> > > >   #include <drm/drm_fourcc.h>
> > > >   
> > > > @@ -1035,7 +1036,7 @@ intel_prepare_plane_fb(struct drm_plane
> > > > *_plane,
> > > >         struct intel_atomic_state *state =
> > > >                 to_intel_atomic_state(new_plane_state-
> > > > >uapi.state);
> > > >         struct drm_i915_private *dev_priv = to_i915(plane-
> > > > >base.dev);
> > > > -       const struct intel_plane_state *old_plane_state =
> > > > +       struct intel_plane_state *old_plane_state =
> > > >                 intel_atomic_get_old_plane_state(state, plane);
> > > >         struct drm_i915_gem_object *obj =
> > > > intel_fb_obj(new_plane_state->hw.fb);
> > > >         struct drm_i915_gem_object *old_obj =
> > > > intel_fb_obj(old_plane_state->hw.fb);
> > > > @@ -1057,56 +1058,30 @@ intel_prepare_plane_fb(struct drm_plane
> > > > *_plane,
> > > >                  * This should only fail upon a hung GPU, in
> > > > which case we
> > > >                  * can safely continue.
> > > >                  */
> > > > -               if (new_crtc_state &&
> > > > intel_crtc_needs_modeset(new_crtc_state)) {
> > > > -                       ret =
> > > > i915_sw_fence_await_reservation(&state->commit_ready,
> > > > -                                                            
> > > > old_obj->base.resv,
> > > > -                                                            
> > > > false, 0,
> > > > -                                                            
> > > > GFP_KERNEL);
> > > > +               if (new_crtc_state &&
> > > > intel_crtc_needs_modeset(new_crtc_state) &&
> > > > +                   !dma_resv_test_signaled(old_obj->base.resv,
> > > > +                                          
> > > > dma_resv_usage_rw(false))) {
> > > > +                       ret =
> > > > drm_gem_plane_helper_prepare_fb(_plane, &old_plane_state-
> > > > >uapi);
> > > 
> > > This I think is broken. The old plane state and its fence can
> > > still be
> > > in use by the previous commit, so we cannot mutate it here. Thus
> > > we
> > > really need to get the implicit fence from the old fb chained
> > > into the
> > > new plane state's fence.
> > Is it even needed though? If new_plane_state always calls
> > prepare_fb.
> 
> It's explained in the comment.

Thank you Ville and Maarten for checking my patch. I have addressed
Villes comment about old plane state fence. Please check new version.

BR,

Jouni Högander

> 


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2023-10-20  9:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-16  8:08 [Intel-gfx] [PATCH] drm/i915/display: Use dma_fence interfaces instead of i915_sw_fence Jouni Högander
2023-10-16  9:26 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-10-16 11:23 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2023-10-18 13:01 ` [Intel-gfx] [PATCH] " Maarten Lankhorst
2023-10-18 15:19 ` Ville Syrjälä
2023-10-18 15:23   ` Maarten Lankhorst
2023-10-18 15:35     ` Ville Syrjälä
2023-10-18 15:38 ` Ville Syrjälä
2023-10-18 17:13   ` Maarten Lankhorst
2023-10-18 17:59     ` Ville Syrjälä
2023-10-20  9:44       ` Hogander, Jouni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.