Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate
@ 2024-12-19 21:48 Gustavo Sousa
  2024-12-19 21:48 ` [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state Gustavo Sousa
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-19 21:48 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Ville Syrjälä, Jani Nikula

If we look at how the members of struct intel_global_state_funcs, we see
a common pattern repeating itself. We can reduce such boilerplate by
moving the common implementation to the generic global state code. This
series proposes that.

Gustavo Sousa (3):
  drm/i915/display: Do not assume zero offset when duplicating global
    state
  drm/i915/display: Add infra to reduce global state funcs boilerplate
  drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS

 drivers/gpu/drm/i915/display/intel_bw.c       | 21 +---------
 drivers/gpu/drm/i915/display/intel_cdclk.c    | 16 +++-----
 .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
 .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
 drivers/gpu/drm/i915/display/intel_pmdemand.c | 21 +---------
 drivers/gpu/drm/i915/display/skl_watermark.c  | 20 +--------
 6 files changed, 63 insertions(+), 71 deletions(-)

-- 
2.47.1


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

* [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state
  2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
@ 2024-12-19 21:48 ` Gustavo Sousa
  2024-12-19 22:43   ` Cavitt, Jonathan
  2024-12-20  9:11   ` Ville Syrjälä
  2024-12-19 21:48 ` [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate Gustavo Sousa
                   ` (5 subsequent siblings)
  6 siblings, 2 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-19 21:48 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Ville Syrjälä, Jani Nikula

The current intel_*_duplicate_state() functions assume the offset for
the base member of their state structures is zero when calling
kmemdup(). While that is true today, such assumption should not be made
and proper offset must be applied when calling kmemdup(), otherwise we
will be duplicating the wrong memory area if, for some reason, the
offset is changed in the future.

As such, update each of those functions to use its respective
to_*_state() as the parameter to kmemdup().

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bw.c       | 4 ++--
 drivers/gpu/drm/i915/display/intel_cdclk.c    | 4 ++--
 drivers/gpu/drm/i915/display/intel_pmdemand.c | 4 ++--
 drivers/gpu/drm/i915/display/skl_watermark.c  | 4 ++--
 4 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c
index 08e8a67ca74c..30236010e0ed 100644
--- a/drivers/gpu/drm/i915/display/intel_bw.c
+++ b/drivers/gpu/drm/i915/display/intel_bw.c
@@ -1425,9 +1425,9 @@ int intel_bw_atomic_check(struct intel_atomic_state *state)
 static struct intel_global_state *
 intel_bw_duplicate_state(struct intel_global_obj *obj)
 {
-	struct intel_bw_state *state;
+	struct intel_bw_state *state = to_intel_bw_state(obj->state);
 
-	state = kmemdup(obj->state, sizeof(*state), GFP_KERNEL);
+	state = kmemdup(state, sizeof(*state), GFP_KERNEL);
 	if (!state)
 		return NULL;
 
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 3506e576bf6b..fc084e2a4c6a 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -3130,9 +3130,9 @@ static int fixed_modeset_calc_cdclk(struct intel_atomic_state *state)
 
 static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_global_obj *obj)
 {
-	struct intel_cdclk_state *cdclk_state;
+	struct intel_cdclk_state *cdclk_state = to_intel_cdclk_state(obj->state);
 
-	cdclk_state = kmemdup(obj->state, sizeof(*cdclk_state), GFP_KERNEL);
+	cdclk_state = kmemdup(cdclk_state, sizeof(*cdclk_state), GFP_KERNEL);
 	if (!cdclk_state)
 		return NULL;
 
diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
index cdd314956a31..1f71efb7d04d 100644
--- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
+++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
@@ -18,9 +18,9 @@
 static struct intel_global_state *
 intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
 {
-	struct intel_pmdemand_state *pmdemand_state;
+	struct intel_pmdemand_state *pmdemand_state = to_intel_pmdemand_state(obj->state);
 
-	pmdemand_state = kmemdup(obj->state, sizeof(*pmdemand_state), GFP_KERNEL);
+	pmdemand_state = kmemdup(pmdemand_state, sizeof(*pmdemand_state), GFP_KERNEL);
 	if (!pmdemand_state)
 		return NULL;
 
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index 29e8ea91c858..b3d38e09df5a 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -3291,9 +3291,9 @@ static void skl_setup_wm_latency(struct drm_i915_private *i915)
 
 static struct intel_global_state *intel_dbuf_duplicate_state(struct intel_global_obj *obj)
 {
-	struct intel_dbuf_state *dbuf_state;
+	struct intel_dbuf_state *dbuf_state = to_intel_dbuf_state(obj->state);
 
-	dbuf_state = kmemdup(obj->state, sizeof(*dbuf_state), GFP_KERNEL);
+	dbuf_state = kmemdup(dbuf_state, sizeof(*dbuf_state), GFP_KERNEL);
 	if (!dbuf_state)
 		return NULL;
 
-- 
2.47.1


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

* [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
  2024-12-19 21:48 ` [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state Gustavo Sousa
@ 2024-12-19 21:48 ` Gustavo Sousa
  2024-12-19 22:44   ` Cavitt, Jonathan
                     ` (3 more replies)
  2024-12-19 21:48 ` [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS Gustavo Sousa
                   ` (4 subsequent siblings)
  6 siblings, 4 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-19 21:48 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Ville Syrjälä, Jani Nikula

If we look at how the members of struct intel_global_state_funcs, we see
a common pattern repeating itself. Let's add the necessary
infra-structure to allow reducing the boilerplate. We do that by
adding common generic implementations for each member and adding a macro
INTEL_GLOBAL_STATE_DEFAULTS() to be used when initializing an instance
of struct intel_global_state_funcs.

That way, a global state that does not need custom behavior can have
its funcs structure be initialized as in the following example,

    static const struct intel_global_state_funcs <prefix>_funcs = {
           INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),
    };

, without the need to implementing the functions.

That doesn't come without cost - we will need to store two size_t
members -, but that cost is arguably justified by the simplification
gained.

In an upcoming change we will put that infra into action on existing
users.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
 .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
 2 files changed, 54 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_global_state.c b/drivers/gpu/drm/i915/display/intel_global_state.c
index cbcd1e91b7be..4b4c33fa99fb 100644
--- a/drivers/gpu/drm/i915/display/intel_global_state.c
+++ b/drivers/gpu/drm/i915/display/intel_global_state.c
@@ -59,7 +59,10 @@ static void __intel_atomic_global_state_free(struct kref *kref)
 
 	commit_put(obj_state->commit);
 
-	obj->funcs->atomic_destroy_state(obj, obj_state);
+	if (obj->funcs->atomic_destroy_state)
+		obj->funcs->atomic_destroy_state(obj, obj_state);
+	else
+		intel_atomic_global_destroy_state_common(obj, obj_state);
 }
 
 static void intel_atomic_global_state_put(struct intel_global_state *obj_state)
@@ -164,7 +167,11 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
 	index = state->num_global_objs;
 	memset(&state->global_objs[index], 0, sizeof(*state->global_objs));
 
-	obj_state = obj->funcs->atomic_duplicate_state(obj);
+	if (obj->funcs->atomic_duplicate_state)
+		obj_state = obj->funcs->atomic_duplicate_state(obj);
+	else
+		obj_state = intel_atomic_global_duplicate_state_common(obj);
+
 	if (!obj_state)
 		return ERR_PTR(-ENOMEM);
 
@@ -382,3 +389,33 @@ intel_atomic_global_state_commit_done(struct intel_atomic_state *state)
 		complete_all(&commit->done);
 	}
 }
+
+struct intel_global_state *
+intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj)
+{
+	void *state_wrapper;
+
+	if (WARN_ON(obj->funcs->state_size == 0))
+		return NULL;
+
+	state_wrapper = (void *)obj->state - obj->funcs->base_offset;
+
+	state_wrapper = kmemdup(state_wrapper, obj->funcs->state_size, GFP_KERNEL);
+	if (!state_wrapper)
+		return NULL;
+
+	return state_wrapper + obj->funcs->base_offset;
+}
+
+void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
+					      struct intel_global_state *state)
+{
+	void *state_wrapper;
+
+	if (WARN_ON(obj->funcs->state_size == 0))
+		return;
+
+	state_wrapper = (void *)state - obj->funcs->base_offset;
+
+	kfree(state_wrapper);
+}
diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
index 6506a8e32972..e47e007225cc 100644
--- a/drivers/gpu/drm/i915/display/intel_global_state.h
+++ b/drivers/gpu/drm/i915/display/intel_global_state.h
@@ -8,6 +8,8 @@
 
 #include <linux/kref.h>
 #include <linux/list.h>
+#include <linux/stddef.h>
+#include <linux/types.h>
 
 struct drm_i915_private;
 struct intel_atomic_state;
@@ -15,6 +17,10 @@ struct intel_global_obj;
 struct intel_global_state;
 
 struct intel_global_state_funcs {
+	/* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
+	size_t state_size;
+	size_t base_offset;
+
 	struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
 	void (*atomic_destroy_state)(struct intel_global_obj *obj,
 				     struct intel_global_state *state);
@@ -26,6 +32,10 @@ struct intel_global_obj {
 	const struct intel_global_state_funcs *funcs;
 };
 
+#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
+	.state_size = sizeof(type), \
+	.base_offset = offsetof(type, base_member)
+
 #define intel_for_each_global_obj(obj, dev_priv) \
 	list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
 
@@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
 
 bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
 
+struct intel_global_state *
+intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
+void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
+					      struct intel_global_state *state);
+
 #endif
-- 
2.47.1


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

* [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS
  2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
  2024-12-19 21:48 ` [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state Gustavo Sousa
  2024-12-19 21:48 ` [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate Gustavo Sousa
@ 2024-12-19 21:48 ` Gustavo Sousa
  2024-12-19 22:45   ` Cavitt, Jonathan
  2024-12-19 22:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: Reduce global state funcs boilerplate Patchwork
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-19 21:48 UTC (permalink / raw)
  To: intel-gfx, intel-xe; +Cc: Ville Syrjälä, Jani Nikula

Reduce global state boilerplate by using INTEL_GLOBAL_STATE_DEFAULTS().
The only case that requires customization is for the duplication of
CDCLK state, which is resolved by wrapping the generic implementation.

Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_bw.c       | 21 +------------------
 drivers/gpu/drm/i915/display/intel_cdclk.c    | 18 +++++++---------
 drivers/gpu/drm/i915/display/intel_pmdemand.c | 21 +------------------
 drivers/gpu/drm/i915/display/skl_watermark.c  | 20 +-----------------
 4 files changed, 10 insertions(+), 70 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c
index 30236010e0ed..f040dfa70fd9 100644
--- a/drivers/gpu/drm/i915/display/intel_bw.c
+++ b/drivers/gpu/drm/i915/display/intel_bw.c
@@ -1422,27 +1422,8 @@ int intel_bw_atomic_check(struct intel_atomic_state *state)
 	return 0;
 }
 
-static struct intel_global_state *
-intel_bw_duplicate_state(struct intel_global_obj *obj)
-{
-	struct intel_bw_state *state = to_intel_bw_state(obj->state);
-
-	state = kmemdup(state, sizeof(*state), GFP_KERNEL);
-	if (!state)
-		return NULL;
-
-	return &state->base;
-}
-
-static void intel_bw_destroy_state(struct intel_global_obj *obj,
-				   struct intel_global_state *state)
-{
-	kfree(state);
-}
-
 static const struct intel_global_state_funcs intel_bw_funcs = {
-	.atomic_duplicate_state = intel_bw_duplicate_state,
-	.atomic_destroy_state = intel_bw_destroy_state,
+	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_bw_state, base),
 };
 
 int intel_bw_init(struct drm_i915_private *i915)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index fc084e2a4c6a..a9dfbd53e812 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -3130,27 +3130,23 @@ static int fixed_modeset_calc_cdclk(struct intel_atomic_state *state)
 
 static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_global_obj *obj)
 {
-	struct intel_cdclk_state *cdclk_state = to_intel_cdclk_state(obj->state);
+	struct intel_global_state *obj_state;
+	struct intel_cdclk_state *cdclk_state;
 
-	cdclk_state = kmemdup(cdclk_state, sizeof(*cdclk_state), GFP_KERNEL);
-	if (!cdclk_state)
+	obj_state = intel_atomic_global_duplicate_state_common(obj);
+	if (!obj_state)
 		return NULL;
 
+	cdclk_state = to_intel_cdclk_state(obj_state);
 	cdclk_state->pipe = INVALID_PIPE;
 	cdclk_state->disable_pipes = false;
 
-	return &cdclk_state->base;
-}
-
-static void intel_cdclk_destroy_state(struct intel_global_obj *obj,
-				      struct intel_global_state *state)
-{
-	kfree(state);
+	return obj_state;
 }
 
 static const struct intel_global_state_funcs intel_cdclk_funcs = {
+	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_cdclk_state, base),
 	.atomic_duplicate_state = intel_cdclk_duplicate_state,
-	.atomic_destroy_state = intel_cdclk_destroy_state,
 };
 
 struct intel_cdclk_state *
diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
index 1f71efb7d04d..5bf245a9ac8d 100644
--- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
+++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
@@ -15,27 +15,8 @@
 #include "intel_pmdemand.h"
 #include "skl_watermark.h"
 
-static struct intel_global_state *
-intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
-{
-	struct intel_pmdemand_state *pmdemand_state = to_intel_pmdemand_state(obj->state);
-
-	pmdemand_state = kmemdup(pmdemand_state, sizeof(*pmdemand_state), GFP_KERNEL);
-	if (!pmdemand_state)
-		return NULL;
-
-	return &pmdemand_state->base;
-}
-
-static void intel_pmdemand_destroy_state(struct intel_global_obj *obj,
-					 struct intel_global_state *state)
-{
-	kfree(state);
-}
-
 static const struct intel_global_state_funcs intel_pmdemand_funcs = {
-	.atomic_duplicate_state = intel_pmdemand_duplicate_state,
-	.atomic_destroy_state = intel_pmdemand_destroy_state,
+	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_pmdemand_state, base),
 };
 
 static struct intel_pmdemand_state *
diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
index b3d38e09df5a..8aa041be8277 100644
--- a/drivers/gpu/drm/i915/display/skl_watermark.c
+++ b/drivers/gpu/drm/i915/display/skl_watermark.c
@@ -3289,26 +3289,8 @@ static void skl_setup_wm_latency(struct drm_i915_private *i915)
 	intel_print_wm_latency(i915, "Gen9 Plane", display->wm.skl_latency);
 }
 
-static struct intel_global_state *intel_dbuf_duplicate_state(struct intel_global_obj *obj)
-{
-	struct intel_dbuf_state *dbuf_state = to_intel_dbuf_state(obj->state);
-
-	dbuf_state = kmemdup(dbuf_state, sizeof(*dbuf_state), GFP_KERNEL);
-	if (!dbuf_state)
-		return NULL;
-
-	return &dbuf_state->base;
-}
-
-static void intel_dbuf_destroy_state(struct intel_global_obj *obj,
-				     struct intel_global_state *state)
-{
-	kfree(state);
-}
-
 static const struct intel_global_state_funcs intel_dbuf_funcs = {
-	.atomic_duplicate_state = intel_dbuf_duplicate_state,
-	.atomic_destroy_state = intel_dbuf_destroy_state,
+	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_dbuf_state, base),
 };
 
 struct intel_dbuf_state *
-- 
2.47.1


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

* ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: Reduce global state funcs boilerplate
  2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
                   ` (2 preceding siblings ...)
  2024-12-19 21:48 ` [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS Gustavo Sousa
@ 2024-12-19 22:23 ` Patchwork
  2024-12-19 22:23 ` ✗ Fi.CI.SPARSE: " Patchwork
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-12-19 22:23 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: Reduce global state funcs boilerplate
URL   : https://patchwork.freedesktop.org/series/142853/
State : warning

== Summary ==

Error: dim checkpatch failed
ec99e692f6f4 drm/i915/display: Do not assume zero offset when duplicating global state
b3d1feeb2763 drm/i915/display: Add infra to reduce global state funcs boilerplate
-:18: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#18: 
           INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),

total: 0 errors, 1 warnings, 0 checks, 93 lines checked
488bdf44e0b9 drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS



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

* ✗ Fi.CI.SPARSE: warning for drm/i915/display: Reduce global state funcs boilerplate
  2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
                   ` (3 preceding siblings ...)
  2024-12-19 22:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: Reduce global state funcs boilerplate Patchwork
@ 2024-12-19 22:23 ` Patchwork
  2024-12-19 23:00 ` ✓ i915.CI.BAT: success " Patchwork
  2024-12-20 19:50 ` ✓ i915.CI.Full: " Patchwork
  6 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-12-19 22:23 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: Reduce global state funcs boilerplate
URL   : https://patchwork.freedesktop.org/series/142853/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



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

* RE: [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state
  2024-12-19 21:48 ` [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state Gustavo Sousa
@ 2024-12-19 22:43   ` Cavitt, Jonathan
  2024-12-20  9:11   ` Ville Syrjälä
  1 sibling, 0 replies; 21+ messages in thread
From: Cavitt, Jonathan @ 2024-12-19 22:43 UTC (permalink / raw)
  To: Sousa, Gustavo, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Ville Syrjälä, Nikula, Jani, Cavitt, Jonathan

-----Original Message-----
From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Gustavo Sousa
Sent: Thursday, December 19, 2024 1:49 PM
To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>; Nikula, Jani <jani.nikula@intel.com>
Subject: [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state
> 
> The current intel_*_duplicate_state() functions assume the offset for
> the base member of their state structures is zero when calling
> kmemdup(). While that is true today, such assumption should not be made
> and proper offset must be applied when calling kmemdup(), otherwise we
> will be duplicating the wrong memory area if, for some reason, the
> offset is changed in the future.
> 
> As such, update each of those functions to use its respective
> to_*_state() as the parameter to kmemdup().
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>

LGTM.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt

> ---
>  drivers/gpu/drm/i915/display/intel_bw.c       | 4 ++--
>  drivers/gpu/drm/i915/display/intel_cdclk.c    | 4 ++--
>  drivers/gpu/drm/i915/display/intel_pmdemand.c | 4 ++--
>  drivers/gpu/drm/i915/display/skl_watermark.c  | 4 ++--
>  4 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c
> index 08e8a67ca74c..30236010e0ed 100644
> --- a/drivers/gpu/drm/i915/display/intel_bw.c
> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
> @@ -1425,9 +1425,9 @@ int intel_bw_atomic_check(struct intel_atomic_state *state)
>  static struct intel_global_state *
>  intel_bw_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_bw_state *state;
> +	struct intel_bw_state *state = to_intel_bw_state(obj->state);
>  
> -	state = kmemdup(obj->state, sizeof(*state), GFP_KERNEL);
> +	state = kmemdup(state, sizeof(*state), GFP_KERNEL);
>  	if (!state)
>  		return NULL;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index 3506e576bf6b..fc084e2a4c6a 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -3130,9 +3130,9 @@ static int fixed_modeset_calc_cdclk(struct intel_atomic_state *state)
>  
>  static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_cdclk_state *cdclk_state;
> +	struct intel_cdclk_state *cdclk_state = to_intel_cdclk_state(obj->state);
>  
> -	cdclk_state = kmemdup(obj->state, sizeof(*cdclk_state), GFP_KERNEL);
> +	cdclk_state = kmemdup(cdclk_state, sizeof(*cdclk_state), GFP_KERNEL);
>  	if (!cdclk_state)
>  		return NULL;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> index cdd314956a31..1f71efb7d04d 100644
> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> @@ -18,9 +18,9 @@
>  static struct intel_global_state *
>  intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_pmdemand_state *pmdemand_state;
> +	struct intel_pmdemand_state *pmdemand_state = to_intel_pmdemand_state(obj->state);
>  
> -	pmdemand_state = kmemdup(obj->state, sizeof(*pmdemand_state), GFP_KERNEL);
> +	pmdemand_state = kmemdup(pmdemand_state, sizeof(*pmdemand_state), GFP_KERNEL);
>  	if (!pmdemand_state)
>  		return NULL;
>  
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 29e8ea91c858..b3d38e09df5a 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -3291,9 +3291,9 @@ static void skl_setup_wm_latency(struct drm_i915_private *i915)
>  
>  static struct intel_global_state *intel_dbuf_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_dbuf_state *dbuf_state;
> +	struct intel_dbuf_state *dbuf_state = to_intel_dbuf_state(obj->state);
>  
> -	dbuf_state = kmemdup(obj->state, sizeof(*dbuf_state), GFP_KERNEL);
> +	dbuf_state = kmemdup(dbuf_state, sizeof(*dbuf_state), GFP_KERNEL);
>  	if (!dbuf_state)
>  		return NULL;
>  
> -- 
> 2.47.1
> 
> 

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

* RE: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-19 21:48 ` [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate Gustavo Sousa
@ 2024-12-19 22:44   ` Cavitt, Jonathan
  2024-12-20 13:43     ` Gustavo Sousa
  2024-12-20  8:50   ` Jani Nikula
                     ` (2 subsequent siblings)
  3 siblings, 1 reply; 21+ messages in thread
From: Cavitt, Jonathan @ 2024-12-19 22:44 UTC (permalink / raw)
  To: Sousa, Gustavo, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Ville Syrjälä, Nikula, Jani, Cavitt, Jonathan

-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Gustavo Sousa
Sent: Thursday, December 19, 2024 1:49 PM
To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>; Nikula, Jani <jani.nikula@intel.com>
Subject: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
> 
> If we look at how the members of struct intel_global_state_funcs, we see
> a common pattern repeating itself. Let's add the necessary
> infra-structure to allow reducing the boilerplate. We do that by
> adding common generic implementations for each member and adding a macro
> INTEL_GLOBAL_STATE_DEFAULTS() to be used when initializing an instance
> of struct intel_global_state_funcs.
> 
> That way, a global state that does not need custom behavior can have
> its funcs structure be initialized as in the following example,
> 
>     static const struct intel_global_state_funcs <prefix>_funcs = {
>            INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),
>     };
> 
> , without the need to implementing the functions.
> 
> That doesn't come without cost - we will need to store two size_t
> members -, but that cost is arguably justified by the simplification
> gained.
> 
> In an upcoming change we will put that infra into action on existing
> users.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
>  .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
>  2 files changed, 54 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.c b/drivers/gpu/drm/i915/display/intel_global_state.c
> index cbcd1e91b7be..4b4c33fa99fb 100644
> --- a/drivers/gpu/drm/i915/display/intel_global_state.c
> +++ b/drivers/gpu/drm/i915/display/intel_global_state.c
> @@ -59,7 +59,10 @@ static void __intel_atomic_global_state_free(struct kref *kref)
>  
>  	commit_put(obj_state->commit);
>  
> -	obj->funcs->atomic_destroy_state(obj, obj_state);
> +	if (obj->funcs->atomic_destroy_state)

This is good, though I think it's standard practice as a part of
these kinds of sanity checks to assert that the functions pointer
also exists before attempting to dereference into a function itself.

Or, in simpler terms, I think we want to check obj->funcs here,
in addition to the atomic_destroy_state:
"""
	If (obj->funcs && obj->funcs->atomic_destroy_state)
"""
Though maybe obj->funcs has some guarantee associated with
it that ensures it always exists, making this sanity check unnecessary?
Much like the guarantee obj exists?  I'm not familiar enough with the
display driver one way or the other to make that declaration, so I
won't block on this.

> +		obj->funcs->atomic_destroy_state(obj, obj_state);
> +	else
> +		intel_atomic_global_destroy_state_common(obj, obj_state);
>  }
>  
>  static void intel_atomic_global_state_put(struct intel_global_state *obj_state)
> @@ -164,7 +167,11 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
>  	index = state->num_global_objs;
>  	memset(&state->global_objs[index], 0, sizeof(*state->global_objs));
>  
> -	obj_state = obj->funcs->atomic_duplicate_state(obj);
> +	if (obj->funcs->atomic_duplicate_state)

Same comment as above, except with atomic_duplicate_state
instead of atomic_destroy_state.

> +		obj_state = obj->funcs->atomic_duplicate_state(obj);
> +	else
> +		obj_state = intel_atomic_global_duplicate_state_common(obj);
> +
>  	if (!obj_state)
>  		return ERR_PTR(-ENOMEM);
>  
> @@ -382,3 +389,33 @@ intel_atomic_global_state_commit_done(struct intel_atomic_state *state)
>  		complete_all(&commit->done);
>  	}
>  }
> +
> +struct intel_global_state *
> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj)

I personally prefer these kinds of functions to be defined before their
first usage when possible, as it mirrors how we need to define static
functions before their first uses.  However, I recognize that because
this function is defined in intel_global_state.h, it's not necessary to
maintain that kind of function ordering and, in fact, it's more
important to maintain function ordering parity with the header
file.  So I'll leave that kind of change to your discretion.

> +{
> +	void *state_wrapper;
> +
> +	if (WARN_ON(obj->funcs->state_size == 0))
> +		return NULL;
> +
> +	state_wrapper = (void *)obj->state - obj->funcs->base_offset;
> +
> +	state_wrapper = kmemdup(state_wrapper, obj->funcs->state_size, GFP_KERNEL);
> +	if (!state_wrapper)
> +		return NULL;
> +
> +	return state_wrapper + obj->funcs->base_offset;
> +}
> +
> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
> +					      struct intel_global_state *state)
> +{
> +	void *state_wrapper;
> +
> +	if (WARN_ON(obj->funcs->state_size == 0))
> +		return;
> +
> +	state_wrapper = (void *)state - obj->funcs->base_offset;
> +
> +	kfree(state_wrapper);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
> index 6506a8e32972..e47e007225cc 100644
> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
> @@ -8,6 +8,8 @@
>  
>  #include <linux/kref.h>
>  #include <linux/list.h>
> +#include <linux/stddef.h>
> +#include <linux/types.h>
>  
>  struct drm_i915_private;
>  struct intel_atomic_state;
> @@ -15,6 +17,10 @@ struct intel_global_obj;
>  struct intel_global_state;
>  
>  struct intel_global_state_funcs {
> +	/* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
> +	size_t state_size;
> +	size_t base_offset;
> +
>  	struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>  	void (*atomic_destroy_state)(struct intel_global_obj *obj,
>  				     struct intel_global_state *state);
> @@ -26,6 +32,10 @@ struct intel_global_obj {
>  	const struct intel_global_state_funcs *funcs;
>  };
>  
> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
> +	.state_size = sizeof(type), \
> +	.base_offset = offsetof(type, base_member)
> +
>  #define intel_for_each_global_obj(obj, dev_priv) \
>  	list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>  
> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>  
>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>  
> +struct intel_global_state *
> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
> +					      struct intel_global_state *state);
> +

I have no major complaints.  Just some notes above.
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
-Jonathan Cavitt

>  #endif
> -- 
> 2.47.1
> 
> 

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

* RE: [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS
  2024-12-19 21:48 ` [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS Gustavo Sousa
@ 2024-12-19 22:45   ` Cavitt, Jonathan
  2024-12-20 14:08     ` Gustavo Sousa
  0 siblings, 1 reply; 21+ messages in thread
From: Cavitt, Jonathan @ 2024-12-19 22:45 UTC (permalink / raw)
  To: Sousa, Gustavo, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Ville Syrjälä, Nikula, Jani, Cavitt, Jonathan

-----Original Message-----
From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Gustavo Sousa
Sent: Thursday, December 19, 2024 1:49 PM
To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>; Nikula, Jani <jani.nikula@intel.com>
Subject: [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS
> 
> Reduce global state boilerplate by using INTEL_GLOBAL_STATE_DEFAULTS().
> The only case that requires customization is for the duplication of
> CDCLK state, which is resolved by wrapping the generic implementation.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>

LGTM, though I am a bit curious under what circumstances we expect
obj->funcs->atomic_destroy_state to return a valid function pointer
with these changes?  I'm guessing we aren't depreciating/erasing that
function pointer because we might need it in the future?
Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel>
-Jonathan Cavitt

> ---
>  drivers/gpu/drm/i915/display/intel_bw.c       | 21 +------------------
>  drivers/gpu/drm/i915/display/intel_cdclk.c    | 18 +++++++---------
>  drivers/gpu/drm/i915/display/intel_pmdemand.c | 21 +------------------
>  drivers/gpu/drm/i915/display/skl_watermark.c  | 20 +-----------------
>  4 files changed, 10 insertions(+), 70 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c
> index 30236010e0ed..f040dfa70fd9 100644
> --- a/drivers/gpu/drm/i915/display/intel_bw.c
> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
> @@ -1422,27 +1422,8 @@ int intel_bw_atomic_check(struct intel_atomic_state *state)
>  	return 0;
>  }
>  
> -static struct intel_global_state *
> -intel_bw_duplicate_state(struct intel_global_obj *obj)
> -{
> -	struct intel_bw_state *state = to_intel_bw_state(obj->state);
> -
> -	state = kmemdup(state, sizeof(*state), GFP_KERNEL);
> -	if (!state)
> -		return NULL;
> -
> -	return &state->base;
> -}
> -
> -static void intel_bw_destroy_state(struct intel_global_obj *obj,
> -				   struct intel_global_state *state)
> -{
> -	kfree(state);
> -}
> -
>  static const struct intel_global_state_funcs intel_bw_funcs = {
> -	.atomic_duplicate_state = intel_bw_duplicate_state,
> -	.atomic_destroy_state = intel_bw_destroy_state,
> +	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_bw_state, base),
>  };
>  
>  int intel_bw_init(struct drm_i915_private *i915)
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index fc084e2a4c6a..a9dfbd53e812 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -3130,27 +3130,23 @@ static int fixed_modeset_calc_cdclk(struct intel_atomic_state *state)
>  
>  static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_cdclk_state *cdclk_state = to_intel_cdclk_state(obj->state);
> +	struct intel_global_state *obj_state;
> +	struct intel_cdclk_state *cdclk_state;
>  
> -	cdclk_state = kmemdup(cdclk_state, sizeof(*cdclk_state), GFP_KERNEL);
> -	if (!cdclk_state)
> +	obj_state = intel_atomic_global_duplicate_state_common(obj);
> +	if (!obj_state)
>  		return NULL;
>  
> +	cdclk_state = to_intel_cdclk_state(obj_state);
>  	cdclk_state->pipe = INVALID_PIPE;
>  	cdclk_state->disable_pipes = false;
>  
> -	return &cdclk_state->base;
> -}
> -
> -static void intel_cdclk_destroy_state(struct intel_global_obj *obj,
> -				      struct intel_global_state *state)
> -{
> -	kfree(state);
> +	return obj_state;
>  }
>  
>  static const struct intel_global_state_funcs intel_cdclk_funcs = {
> +	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_cdclk_state, base),
>  	.atomic_duplicate_state = intel_cdclk_duplicate_state,
> -	.atomic_destroy_state = intel_cdclk_destroy_state,
>  };
>  
>  struct intel_cdclk_state *
> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> index 1f71efb7d04d..5bf245a9ac8d 100644
> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> @@ -15,27 +15,8 @@
>  #include "intel_pmdemand.h"
>  #include "skl_watermark.h"
>  
> -static struct intel_global_state *
> -intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
> -{
> -	struct intel_pmdemand_state *pmdemand_state = to_intel_pmdemand_state(obj->state);
> -
> -	pmdemand_state = kmemdup(pmdemand_state, sizeof(*pmdemand_state), GFP_KERNEL);
> -	if (!pmdemand_state)
> -		return NULL;
> -
> -	return &pmdemand_state->base;
> -}
> -
> -static void intel_pmdemand_destroy_state(struct intel_global_obj *obj,
> -					 struct intel_global_state *state)
> -{
> -	kfree(state);
> -}
> -
>  static const struct intel_global_state_funcs intel_pmdemand_funcs = {
> -	.atomic_duplicate_state = intel_pmdemand_duplicate_state,
> -	.atomic_destroy_state = intel_pmdemand_destroy_state,
> +	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_pmdemand_state, base),
>  };
>  
>  static struct intel_pmdemand_state *
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
> index b3d38e09df5a..8aa041be8277 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -3289,26 +3289,8 @@ static void skl_setup_wm_latency(struct drm_i915_private *i915)
>  	intel_print_wm_latency(i915, "Gen9 Plane", display->wm.skl_latency);
>  }
>  
> -static struct intel_global_state *intel_dbuf_duplicate_state(struct intel_global_obj *obj)
> -{
> -	struct intel_dbuf_state *dbuf_state = to_intel_dbuf_state(obj->state);
> -
> -	dbuf_state = kmemdup(dbuf_state, sizeof(*dbuf_state), GFP_KERNEL);
> -	if (!dbuf_state)
> -		return NULL;
> -
> -	return &dbuf_state->base;
> -}
> -
> -static void intel_dbuf_destroy_state(struct intel_global_obj *obj,
> -				     struct intel_global_state *state)
> -{
> -	kfree(state);
> -}
> -
>  static const struct intel_global_state_funcs intel_dbuf_funcs = {
> -	.atomic_duplicate_state = intel_dbuf_duplicate_state,
> -	.atomic_destroy_state = intel_dbuf_destroy_state,
> +	INTEL_GLOBAL_STATE_DEFAULTS(struct intel_dbuf_state, base),
>  };
>  
>  struct intel_dbuf_state *
> -- 
> 2.47.1
> 
> 

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

* ✓ i915.CI.BAT: success for drm/i915/display: Reduce global state funcs boilerplate
  2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
                   ` (4 preceding siblings ...)
  2024-12-19 22:23 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-12-19 23:00 ` Patchwork
  2024-12-20 19:50 ` ✓ i915.CI.Full: " Patchwork
  6 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-12-19 23:00 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

== Series Details ==

Series: drm/i915/display: Reduce global state funcs boilerplate
URL   : https://patchwork.freedesktop.org/series/142853/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_15873 -> Patchwork_142853v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (45 -> 43)
------------------------------

  Missing    (2): fi-glk-j4005 fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_pm_rpm@module-reload:
    - bat-adls-6:         [PASS][1] -> [FAIL][2] ([i915#12903])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/bat-adls-6/igt@i915_pm_rpm@module-reload.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-adls-6/igt@i915_pm_rpm@module-reload.html
    - bat-apl-1:          [PASS][3] -> [FAIL][4] ([i915#12903])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/bat-apl-1/igt@i915_pm_rpm@module-reload.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-apl-1/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live:
    - bat-arls-5:         NOTRUN -> [ABORT][5] ([i915#12061])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-arls-5/igt@i915_selftest@live.html

  * igt@i915_selftest@live@gt_mocs:
    - bat-twl-2:          [PASS][6] -> [ABORT][7] ([i915#12919]) +1 other test abort
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/bat-twl-2/igt@i915_selftest@live@gt_mocs.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-twl-2/igt@i915_selftest@live@gt_mocs.html

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [PASS][8] -> [ABORT][9] ([i915#12061])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-arls-5/igt@i915_selftest@live@workarounds.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence:
    - bat-dg2-11:         [PASS][10] -> [SKIP][11] ([i915#9197]) +3 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-dg2-11/igt@kms_pipe_crc_basic@nonblocking-crc-frame-sequence.html

  * igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-b-dp-1:
    - bat-apl-1:          [PASS][12] -> [DMESG-WARN][13] ([i915#12921]) +1 other test dmesg-warn
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/bat-apl-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-b-dp-1.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-apl-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-b-dp-1.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@late_gt_pm:
    - fi-cfl-8109u:       [DMESG-WARN][14] ([i915#11621]) -> [PASS][15] +132 other tests pass
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/fi-cfl-8109u/igt@i915_selftest@live@late_gt_pm.html

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-2:         [ABORT][16] ([i915#12061]) -> [PASS][17] +1 other test pass
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/bat-arlh-2/igt@i915_selftest@live@workarounds.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/bat-arlh-2/igt@i915_selftest@live@workarounds.html

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

  [i915#11621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11621
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12903]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12903
  [i915#12919]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12919
  [i915#12921]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12921
  [i915#9197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9197


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

  * Linux: CI_DRM_15873 -> Patchwork_142853v1

  CI-20190529: 20190529
  CI_DRM_15873: a5b4c40929f3263a92e34e3f6b3c3c0de57e0e58 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8166: 197cca38ae5c494511843112d43351aeab2314be @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_142853v1: a5b4c40929f3263a92e34e3f6b3c3c0de57e0e58 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

* Re: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-19 21:48 ` [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate Gustavo Sousa
  2024-12-19 22:44   ` Cavitt, Jonathan
@ 2024-12-20  8:50   ` Jani Nikula
  2024-12-20 13:54     ` Gustavo Sousa
  2024-12-20  8:51   ` Jani Nikula
  2024-12-20  9:23   ` Ville Syrjälä
  3 siblings, 1 reply; 21+ messages in thread
From: Jani Nikula @ 2024-12-20  8:50 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Ville Syrjälä

On Thu, 19 Dec 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> If we look at how the members of struct intel_global_state_funcs, we see
> a common pattern repeating itself. Let's add the necessary
> infra-structure to allow reducing the boilerplate. We do that by
> adding common generic implementations for each member and adding a macro
> INTEL_GLOBAL_STATE_DEFAULTS() to be used when initializing an instance
> of struct intel_global_state_funcs.
>
> That way, a global state that does not need custom behavior can have
> its funcs structure be initialized as in the following example,
>
>     static const struct intel_global_state_funcs <prefix>_funcs = {
>            INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),
>     };
>
> , without the need to implementing the functions.
>
> That doesn't come without cost - we will need to store two size_t
> members -, but that cost is arguably justified by the simplification
> gained.
>
> In an upcoming change we will put that infra into action on existing
> users.
>
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
>  .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
>  2 files changed, 54 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.c b/drivers/gpu/drm/i915/display/intel_global_state.c
> index cbcd1e91b7be..4b4c33fa99fb 100644
> --- a/drivers/gpu/drm/i915/display/intel_global_state.c
> +++ b/drivers/gpu/drm/i915/display/intel_global_state.c
> @@ -59,7 +59,10 @@ static void __intel_atomic_global_state_free(struct kref *kref)
>  
>  	commit_put(obj_state->commit);
>  
> -	obj->funcs->atomic_destroy_state(obj, obj_state);
> +	if (obj->funcs->atomic_destroy_state)
> +		obj->funcs->atomic_destroy_state(obj, obj_state);
> +	else
> +		intel_atomic_global_destroy_state_common(obj, obj_state);
>  }
>  
>  static void intel_atomic_global_state_put(struct intel_global_state *obj_state)
> @@ -164,7 +167,11 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
>  	index = state->num_global_objs;
>  	memset(&state->global_objs[index], 0, sizeof(*state->global_objs));
>  
> -	obj_state = obj->funcs->atomic_duplicate_state(obj);
> +	if (obj->funcs->atomic_duplicate_state)
> +		obj_state = obj->funcs->atomic_duplicate_state(obj);
> +	else
> +		obj_state = intel_atomic_global_duplicate_state_common(obj);
> +
>  	if (!obj_state)
>  		return ERR_PTR(-ENOMEM);
>  
> @@ -382,3 +389,33 @@ intel_atomic_global_state_commit_done(struct intel_atomic_state *state)
>  		complete_all(&commit->done);
>  	}
>  }
> +
> +struct intel_global_state *
> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj)
> +{
> +	void *state_wrapper;
> +
> +	if (WARN_ON(obj->funcs->state_size == 0))
> +		return NULL;
> +
> +	state_wrapper = (void *)obj->state - obj->funcs->base_offset;
> +
> +	state_wrapper = kmemdup(state_wrapper, obj->funcs->state_size, GFP_KERNEL);
> +	if (!state_wrapper)
> +		return NULL;
> +
> +	return state_wrapper + obj->funcs->base_offset;
> +}
> +
> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
> +					      struct intel_global_state *state)
> +{
> +	void *state_wrapper;
> +
> +	if (WARN_ON(obj->funcs->state_size == 0))
> +		return;
> +
> +	state_wrapper = (void *)state - obj->funcs->base_offset;
> +
> +	kfree(state_wrapper);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
> index 6506a8e32972..e47e007225cc 100644
> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
> @@ -8,6 +8,8 @@
>  
>  #include <linux/kref.h>
>  #include <linux/list.h>
> +#include <linux/stddef.h>
> +#include <linux/types.h>
>  
>  struct drm_i915_private;
>  struct intel_atomic_state;
> @@ -15,6 +17,10 @@ struct intel_global_obj;
>  struct intel_global_state;
>  
>  struct intel_global_state_funcs {
> +	/* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
> +	size_t state_size;
> +	size_t base_offset;
> +

Gut feeling says these should be part of struct intel_global_state
rather than struct intel_global_state_funcs. Keyword being "funcs".

They would have to be passed to intel_atomic_global_obj_init() and
initialized runtime. That's a downside. But then you could do away with
the funcs struct altogether when defaults are used, and pass NULL.

And you could also drop INTEL_GLOBAL_STATE_DEFAULTS() which I don't find
particularly pretty.

BR,
Jani.

>  	struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>  	void (*atomic_destroy_state)(struct intel_global_obj *obj,
>  				     struct intel_global_state *state);
> @@ -26,6 +32,10 @@ struct intel_global_obj {
>  	const struct intel_global_state_funcs *funcs;
>  };
>  
> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
> +	.state_size = sizeof(type), \
> +	.base_offset = offsetof(type, base_member)
> +
>  #define intel_for_each_global_obj(obj, dev_priv) \
>  	list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>  
> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>  
>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>  
> +struct intel_global_state *
> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
> +					      struct intel_global_state *state);
> +
>  #endif

-- 
Jani Nikula, Intel

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

* Re: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-19 21:48 ` [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate Gustavo Sousa
  2024-12-19 22:44   ` Cavitt, Jonathan
  2024-12-20  8:50   ` Jani Nikula
@ 2024-12-20  8:51   ` Jani Nikula
  2024-12-20 13:56     ` Gustavo Sousa
  2024-12-20  9:23   ` Ville Syrjälä
  3 siblings, 1 reply; 21+ messages in thread
From: Jani Nikula @ 2024-12-20  8:51 UTC (permalink / raw)
  To: Gustavo Sousa, intel-gfx, intel-xe; +Cc: Ville Syrjälä

On Thu, 19 Dec 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
> index 6506a8e32972..e47e007225cc 100644
> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
> @@ -8,6 +8,8 @@
>  
>  #include <linux/kref.h>
>  #include <linux/list.h>
> +#include <linux/stddef.h>

What do you need this for?

> +#include <linux/types.h>
>  
>  struct drm_i915_private;
>  struct intel_atomic_state;
> @@ -15,6 +17,10 @@ struct intel_global_obj;
>  struct intel_global_state;
>  
>  struct intel_global_state_funcs {
> +	/* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
> +	size_t state_size;
> +	size_t base_offset;
> +
>  	struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>  	void (*atomic_destroy_state)(struct intel_global_obj *obj,
>  				     struct intel_global_state *state);
> @@ -26,6 +32,10 @@ struct intel_global_obj {
>  	const struct intel_global_state_funcs *funcs;
>  };
>  
> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
> +	.state_size = sizeof(type), \
> +	.base_offset = offsetof(type, base_member)
> +
>  #define intel_for_each_global_obj(obj, dev_priv) \
>  	list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>  
> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>  
>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>  
> +struct intel_global_state *
> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
> +					      struct intel_global_state *state);
> +
>  #endif

-- 
Jani Nikula, Intel

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

* Re: [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state
  2024-12-19 21:48 ` [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state Gustavo Sousa
  2024-12-19 22:43   ` Cavitt, Jonathan
@ 2024-12-20  9:11   ` Ville Syrjälä
  2024-12-20 13:37     ` Gustavo Sousa
  1 sibling, 1 reply; 21+ messages in thread
From: Ville Syrjälä @ 2024-12-20  9:11 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx, intel-xe, Jani Nikula

On Thu, Dec 19, 2024 at 06:48:36PM -0300, Gustavo Sousa wrote:
> The current intel_*_duplicate_state() functions assume the offset for
> the base member of their state structures is zero when calling
> kmemdup(). While that is true today, such assumption should not be made
> and proper offset must be applied when calling kmemdup(), otherwise we
> will be duplicating the wrong memory area if, for some reason, the
> offset is changed in the future.

All kms objects we use make that same assumption. I think the correct
thing to do is to just throw in some BUILD_BUG_ON()/etc. to make the
thing not build if that doesn't hold. I had a patch like that ages
ago, but it's no doubt 110% stale by now.

I suppose no real harm if avoiding that assumption in spots like
this, but the &foo->base==NULL <-> foo==NULL assumptions we have
all over the place are the far bigger issue.

> 
> As such, update each of those functions to use its respective
> to_*_state() as the parameter to kmemdup().
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_bw.c       | 4 ++--
>  drivers/gpu/drm/i915/display/intel_cdclk.c    | 4 ++--
>  drivers/gpu/drm/i915/display/intel_pmdemand.c | 4 ++--
>  drivers/gpu/drm/i915/display/skl_watermark.c  | 4 ++--
>  4 files changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c
> index 08e8a67ca74c..30236010e0ed 100644
> --- a/drivers/gpu/drm/i915/display/intel_bw.c
> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
> @@ -1425,9 +1425,9 @@ int intel_bw_atomic_check(struct intel_atomic_state *state)
>  static struct intel_global_state *
>  intel_bw_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_bw_state *state;
> +	struct intel_bw_state *state = to_intel_bw_state(obj->state);
>  
> -	state = kmemdup(obj->state, sizeof(*state), GFP_KERNEL);
> +	state = kmemdup(state, sizeof(*state), GFP_KERNEL);
>  	if (!state)
>  		return NULL;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index 3506e576bf6b..fc084e2a4c6a 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -3130,9 +3130,9 @@ static int fixed_modeset_calc_cdclk(struct intel_atomic_state *state)
>  
>  static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_cdclk_state *cdclk_state;
> +	struct intel_cdclk_state *cdclk_state = to_intel_cdclk_state(obj->state);
>  
> -	cdclk_state = kmemdup(obj->state, sizeof(*cdclk_state), GFP_KERNEL);
> +	cdclk_state = kmemdup(cdclk_state, sizeof(*cdclk_state), GFP_KERNEL);
>  	if (!cdclk_state)
>  		return NULL;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> index cdd314956a31..1f71efb7d04d 100644
> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
> @@ -18,9 +18,9 @@
>  static struct intel_global_state *
>  intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_pmdemand_state *pmdemand_state;
> +	struct intel_pmdemand_state *pmdemand_state = to_intel_pmdemand_state(obj->state);
>  
> -	pmdemand_state = kmemdup(obj->state, sizeof(*pmdemand_state), GFP_KERNEL);
> +	pmdemand_state = kmemdup(pmdemand_state, sizeof(*pmdemand_state), GFP_KERNEL);
>  	if (!pmdemand_state)
>  		return NULL;
>  
> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
> index 29e8ea91c858..b3d38e09df5a 100644
> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
> @@ -3291,9 +3291,9 @@ static void skl_setup_wm_latency(struct drm_i915_private *i915)
>  
>  static struct intel_global_state *intel_dbuf_duplicate_state(struct intel_global_obj *obj)
>  {
> -	struct intel_dbuf_state *dbuf_state;
> +	struct intel_dbuf_state *dbuf_state = to_intel_dbuf_state(obj->state);
>  
> -	dbuf_state = kmemdup(obj->state, sizeof(*dbuf_state), GFP_KERNEL);
> +	dbuf_state = kmemdup(dbuf_state, sizeof(*dbuf_state), GFP_KERNEL);
>  	if (!dbuf_state)
>  		return NULL;
>  
> -- 
> 2.47.1

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-19 21:48 ` [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate Gustavo Sousa
                     ` (2 preceding siblings ...)
  2024-12-20  8:51   ` Jani Nikula
@ 2024-12-20  9:23   ` Ville Syrjälä
  2024-12-20 14:02     ` Gustavo Sousa
  3 siblings, 1 reply; 21+ messages in thread
From: Ville Syrjälä @ 2024-12-20  9:23 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx, intel-xe, Jani Nikula

On Thu, Dec 19, 2024 at 06:48:37PM -0300, Gustavo Sousa wrote:
> If we look at how the members of struct intel_global_state_funcs, we see
> a common pattern repeating itself. Let's add the necessary
> infra-structure to allow reducing the boilerplate. We do that by
> adding common generic implementations for each member and adding a macro
> INTEL_GLOBAL_STATE_DEFAULTS() to be used when initializing an instance
> of struct intel_global_state_funcs.
> 
> That way, a global state that does not need custom behavior can have
> its funcs structure be initialized as in the following example,
> 
>     static const struct intel_global_state_funcs <prefix>_funcs = {
>            INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),
>     };
> 
> , without the need to implementing the functions.
> 
> That doesn't come without cost - we will need to store two size_t
> members -, but that cost is arguably justified by the simplification
> gained.
> 
> In an upcoming change we will put that infra into action on existing
> users.
> 
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
>  .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
>  2 files changed, 54 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.c b/drivers/gpu/drm/i915/display/intel_global_state.c
> index cbcd1e91b7be..4b4c33fa99fb 100644
> --- a/drivers/gpu/drm/i915/display/intel_global_state.c
> +++ b/drivers/gpu/drm/i915/display/intel_global_state.c
> @@ -59,7 +59,10 @@ static void __intel_atomic_global_state_free(struct kref *kref)
>  
>  	commit_put(obj_state->commit);
>  
> -	obj->funcs->atomic_destroy_state(obj, obj_state);
> +	if (obj->funcs->atomic_destroy_state)
> +		obj->funcs->atomic_destroy_state(obj, obj_state);
> +	else
> +		intel_atomic_global_destroy_state_common(obj, obj_state);
>  }
>  
>  static void intel_atomic_global_state_put(struct intel_global_state *obj_state)
> @@ -164,7 +167,11 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
>  	index = state->num_global_objs;
>  	memset(&state->global_objs[index], 0, sizeof(*state->global_objs));
>  
> -	obj_state = obj->funcs->atomic_duplicate_state(obj);
> +	if (obj->funcs->atomic_duplicate_state)
> +		obj_state = obj->funcs->atomic_duplicate_state(obj);
> +	else
> +		obj_state = intel_atomic_global_duplicate_state_common(obj);
> +
>  	if (!obj_state)
>  		return ERR_PTR(-ENOMEM);
>  
> @@ -382,3 +389,33 @@ intel_atomic_global_state_commit_done(struct intel_atomic_state *state)
>  		complete_all(&commit->done);
>  	}
>  }
> +
> +struct intel_global_state *
> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj)
> +{
> +	void *state_wrapper;
> +
> +	if (WARN_ON(obj->funcs->state_size == 0))
> +		return NULL;
> +
> +	state_wrapper = (void *)obj->state - obj->funcs->base_offset;
> +
> +	state_wrapper = kmemdup(state_wrapper, obj->funcs->state_size, GFP_KERNEL);
> +	if (!state_wrapper)
> +		return NULL;
> +
> +	return state_wrapper + obj->funcs->base_offset;

I'm not really a fan. What was obvious code before now looks 
complicated.

Also this no longer matches how any of the standard kms object
types work, which I don't think is a good idea. IMO if we
want to do something like this then it should probably try to
cover all kms object types.

> +}
> +
> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
> +					      struct intel_global_state *state)
> +{
> +	void *state_wrapper;
> +
> +	if (WARN_ON(obj->funcs->state_size == 0))
> +		return;
> +
> +	state_wrapper = (void *)state - obj->funcs->base_offset;
> +
> +	kfree(state_wrapper);
> +}
> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
> index 6506a8e32972..e47e007225cc 100644
> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
> @@ -8,6 +8,8 @@
>  
>  #include <linux/kref.h>
>  #include <linux/list.h>
> +#include <linux/stddef.h>
> +#include <linux/types.h>
>  
>  struct drm_i915_private;
>  struct intel_atomic_state;
> @@ -15,6 +17,10 @@ struct intel_global_obj;
>  struct intel_global_state;
>  
>  struct intel_global_state_funcs {
> +	/* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
> +	size_t state_size;
> +	size_t base_offset;
> +
>  	struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>  	void (*atomic_destroy_state)(struct intel_global_obj *obj,
>  				     struct intel_global_state *state);
> @@ -26,6 +32,10 @@ struct intel_global_obj {
>  	const struct intel_global_state_funcs *funcs;
>  };
>  
> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
> +	.state_size = sizeof(type), \
> +	.base_offset = offsetof(type, base_member)
> +
>  #define intel_for_each_global_obj(obj, dev_priv) \
>  	list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>  
> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>  
>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>  
> +struct intel_global_state *
> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
> +					      struct intel_global_state *state);
> +
>  #endif
> -- 
> 2.47.1

-- 
Ville Syrjälä
Intel

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

* Re: [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state
  2024-12-20  9:11   ` Ville Syrjälä
@ 2024-12-20 13:37     ` Gustavo Sousa
  0 siblings, 0 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-20 13:37 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx, intel-xe, Jani Nikula

Quoting Ville Syrjälä (2024-12-20 06:11:57-03:00)
>On Thu, Dec 19, 2024 at 06:48:36PM -0300, Gustavo Sousa wrote:
>> The current intel_*_duplicate_state() functions assume the offset for
>> the base member of their state structures is zero when calling
>> kmemdup(). While that is true today, such assumption should not be made
>> and proper offset must be applied when calling kmemdup(), otherwise we
>> will be duplicating the wrong memory area if, for some reason, the
>> offset is changed in the future.
>
>All kms objects we use make that same assumption. I think the correct
>thing to do is to just throw in some BUILD_BUG_ON()/etc. to make the
>thing not build if that doesn't hold. I had a patch like that ages
>ago, but it's no doubt 110% stale by now.

Okay. In this case, if we were to follow this route, some questions:

1) Where would be the best place to put BUILD_BUG_ON() (or
   static_assert())?

   Would requiring the usage of some macro provided by
   intel_global_state.h be acceptable? Something like:

   struct my_state {
       struct intel_global_state base;
       ...
   };
   INTEL_GLOBAL_STATE_SUBCLASS(struct my_state, base);

   Well, we are still requiring a macro call here when compared to the
   explicit assert on the offset, but now the semantics is that the
   developer advertising a subclass of intel_global_state instead of
   hand rolling the necessary checks herself.

2) If we require the embedded struct to be always the first member,
   would there be any point in defining and using the to_*_state()
   macros? I don't see much benefit of that over simply casting the
   pointer if the offset is always zero. I might be missing something
   though.

>
>I suppose no real harm if avoiding that assumption in spots like
>this, but the &foo->base==NULL <-> foo==NULL assumptions we have
>all over the place are the far bigger issue.

Yeah, maybe requiring base to be the first member is a more manageable
approach indeed.

--
Gustavo Sousa

>
>> 
>> As such, update each of those functions to use its respective
>> to_*_state() as the parameter to kmemdup().
>> 
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  drivers/gpu/drm/i915/display/intel_bw.c       | 4 ++--
>>  drivers/gpu/drm/i915/display/intel_cdclk.c    | 4 ++--
>>  drivers/gpu/drm/i915/display/intel_pmdemand.c | 4 ++--
>>  drivers/gpu/drm/i915/display/skl_watermark.c  | 4 ++--
>>  4 files changed, 8 insertions(+), 8 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c
>> index 08e8a67ca74c..30236010e0ed 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bw.c
>> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
>> @@ -1425,9 +1425,9 @@ int intel_bw_atomic_check(struct intel_atomic_state *state)
>>  static struct intel_global_state *
>>  intel_bw_duplicate_state(struct intel_global_obj *obj)
>>  {
>> -        struct intel_bw_state *state;
>> +        struct intel_bw_state *state = to_intel_bw_state(obj->state);
>>  
>> -        state = kmemdup(obj->state, sizeof(*state), GFP_KERNEL);
>> +        state = kmemdup(state, sizeof(*state), GFP_KERNEL);
>>          if (!state)
>>                  return NULL;
>>  
>> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> index 3506e576bf6b..fc084e2a4c6a 100644
>> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
>> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> @@ -3130,9 +3130,9 @@ static int fixed_modeset_calc_cdclk(struct intel_atomic_state *state)
>>  
>>  static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_global_obj *obj)
>>  {
>> -        struct intel_cdclk_state *cdclk_state;
>> +        struct intel_cdclk_state *cdclk_state = to_intel_cdclk_state(obj->state);
>>  
>> -        cdclk_state = kmemdup(obj->state, sizeof(*cdclk_state), GFP_KERNEL);
>> +        cdclk_state = kmemdup(cdclk_state, sizeof(*cdclk_state), GFP_KERNEL);
>>          if (!cdclk_state)
>>                  return NULL;
>>  
>> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> index cdd314956a31..1f71efb7d04d 100644
>> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> @@ -18,9 +18,9 @@
>>  static struct intel_global_state *
>>  intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
>>  {
>> -        struct intel_pmdemand_state *pmdemand_state;
>> +        struct intel_pmdemand_state *pmdemand_state = to_intel_pmdemand_state(obj->state);
>>  
>> -        pmdemand_state = kmemdup(obj->state, sizeof(*pmdemand_state), GFP_KERNEL);
>> +        pmdemand_state = kmemdup(pmdemand_state, sizeof(*pmdemand_state), GFP_KERNEL);
>>          if (!pmdemand_state)
>>                  return NULL;
>>  
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
>> index 29e8ea91c858..b3d38e09df5a 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
>> @@ -3291,9 +3291,9 @@ static void skl_setup_wm_latency(struct drm_i915_private *i915)
>>  
>>  static struct intel_global_state *intel_dbuf_duplicate_state(struct intel_global_obj *obj)
>>  {
>> -        struct intel_dbuf_state *dbuf_state;
>> +        struct intel_dbuf_state *dbuf_state = to_intel_dbuf_state(obj->state);
>>  
>> -        dbuf_state = kmemdup(obj->state, sizeof(*dbuf_state), GFP_KERNEL);
>> +        dbuf_state = kmemdup(dbuf_state, sizeof(*dbuf_state), GFP_KERNEL);
>>          if (!dbuf_state)
>>                  return NULL;
>>  
>> -- 
>> 2.47.1
>
>-- 
>Ville Syrjälä
>Intel

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

* RE: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-19 22:44   ` Cavitt, Jonathan
@ 2024-12-20 13:43     ` Gustavo Sousa
  0 siblings, 0 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-20 13:43 UTC (permalink / raw)
  To: Cavitt, Jonathan, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Ville Syrjälä, Nikula, Jani, Cavitt, Jonathan

Quoting Cavitt, Jonathan (2024-12-19 19:44:12-03:00)
>-----Original Message-----
>From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Gustavo Sousa
>Sent: Thursday, December 19, 2024 1:49 PM
>To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com>; Nikula, Jani <jani.nikula@intel.com>
>Subject: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
>> 
>> If we look at how the members of struct intel_global_state_funcs, we see
>> a common pattern repeating itself. Let's add the necessary
>> infra-structure to allow reducing the boilerplate. We do that by
>> adding common generic implementations for each member and adding a macro
>> INTEL_GLOBAL_STATE_DEFAULTS() to be used when initializing an instance
>> of struct intel_global_state_funcs.
>> 
>> That way, a global state that does not need custom behavior can have
>> its funcs structure be initialized as in the following example,
>> 
>>     static const struct intel_global_state_funcs <prefix>_funcs = {
>>            INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),
>>     };
>> 
>> , without the need to implementing the functions.
>> 
>> That doesn't come without cost - we will need to store two size_t
>> members -, but that cost is arguably justified by the simplification
>> gained.
>> 
>> In an upcoming change we will put that infra into action on existing
>> users.
>> 
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
>>  .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
>>  2 files changed, 54 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.c b/drivers/gpu/drm/i915/display/intel_global_state.c
>> index cbcd1e91b7be..4b4c33fa99fb 100644
>> --- a/drivers/gpu/drm/i915/display/intel_global_state.c
>> +++ b/drivers/gpu/drm/i915/display/intel_global_state.c
>> @@ -59,7 +59,10 @@ static void __intel_atomic_global_state_free(struct kref *kref)
>>  
>>          commit_put(obj_state->commit);
>>  
>> -        obj->funcs->atomic_destroy_state(obj, obj_state);
>> +        if (obj->funcs->atomic_destroy_state)
>
>This is good, though I think it's standard practice as a part of
>these kinds of sanity checks to assert that the functions pointer
>also exists before attempting to dereference into a function itself.
>
>Or, in simpler terms, I think we want to check obj->funcs here,
>in addition to the atomic_destroy_state:
>"""
>        If (obj->funcs && obj->funcs->atomic_destroy_state)
>"""
>Though maybe obj->funcs has some guarantee associated with
>it that ensures it always exists, making this sanity check unnecessary?
>Much like the guarantee obj exists?  I'm not familiar enough with the
>display driver one way or the other to make that declaration, so I
>won't block on this.

It is a bug obj->funcs to be NULL. The funcs member is initialized
with intel_atomic_global_obj_init(), which must be called for every
tracked global object.

Furthermore, checking (obj->funcs && obj->funcs->atomic_destroy_state)
would be problematic because
intel_atomic_global_duplicate_state_common() relies on obj->funcs being
a valid pointer (as does all of the global state logic).

--
Gustavo Sousa

>
>> +                obj->funcs->atomic_destroy_state(obj, obj_state);
>> +        else
>> +                intel_atomic_global_destroy_state_common(obj, obj_state);
>>  }
>>  
>>  static void intel_atomic_global_state_put(struct intel_global_state *obj_state)
>> @@ -164,7 +167,11 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
>>          index = state->num_global_objs;
>>          memset(&state->global_objs[index], 0, sizeof(*state->global_objs));
>>  
>> -        obj_state = obj->funcs->atomic_duplicate_state(obj);
>> +        if (obj->funcs->atomic_duplicate_state)
>
>Same comment as above, except with atomic_duplicate_state
>instead of atomic_destroy_state.
>
>> +                obj_state = obj->funcs->atomic_duplicate_state(obj);
>> +        else
>> +                obj_state = intel_atomic_global_duplicate_state_common(obj);
>> +
>>          if (!obj_state)
>>                  return ERR_PTR(-ENOMEM);
>>  
>> @@ -382,3 +389,33 @@ intel_atomic_global_state_commit_done(struct intel_atomic_state *state)
>>                  complete_all(&commit->done);
>>          }
>>  }
>> +
>> +struct intel_global_state *
>> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj)
>
>I personally prefer these kinds of functions to be defined before their
>first usage when possible, as it mirrors how we need to define static
>functions before their first uses.  However, I recognize that because
>this function is defined in intel_global_state.h, it's not necessary to
>maintain that kind of function ordering and, in fact, it's more
>important to maintain function ordering parity with the header
>file.  So I'll leave that kind of change to your discretion.
>
>> +{
>> +        void *state_wrapper;
>> +
>> +        if (WARN_ON(obj->funcs->state_size == 0))
>> +                return NULL;
>> +
>> +        state_wrapper = (void *)obj->state - obj->funcs->base_offset;
>> +
>> +        state_wrapper = kmemdup(state_wrapper, obj->funcs->state_size, GFP_KERNEL);
>> +        if (!state_wrapper)
>> +                return NULL;
>> +
>> +        return state_wrapper + obj->funcs->base_offset;
>> +}
>> +
>> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
>> +                                              struct intel_global_state *state)
>> +{
>> +        void *state_wrapper;
>> +
>> +        if (WARN_ON(obj->funcs->state_size == 0))
>> +                return;
>> +
>> +        state_wrapper = (void *)state - obj->funcs->base_offset;
>> +
>> +        kfree(state_wrapper);
>> +}
>> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
>> index 6506a8e32972..e47e007225cc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
>> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
>> @@ -8,6 +8,8 @@
>>  
>>  #include <linux/kref.h>
>>  #include <linux/list.h>
>> +#include <linux/stddef.h>
>> +#include <linux/types.h>
>>  
>>  struct drm_i915_private;
>>  struct intel_atomic_state;
>> @@ -15,6 +17,10 @@ struct intel_global_obj;
>>  struct intel_global_state;
>>  
>>  struct intel_global_state_funcs {
>> +        /* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
>> +        size_t state_size;
>> +        size_t base_offset;
>> +
>>          struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>>          void (*atomic_destroy_state)(struct intel_global_obj *obj,
>>                                       struct intel_global_state *state);
>> @@ -26,6 +32,10 @@ struct intel_global_obj {
>>          const struct intel_global_state_funcs *funcs;
>>  };
>>  
>> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
>> +        .state_size = sizeof(type), \
>> +        .base_offset = offsetof(type, base_member)
>> +
>>  #define intel_for_each_global_obj(obj, dev_priv) \
>>          list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>>  
>> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>>  
>>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>>  
>> +struct intel_global_state *
>> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
>> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
>> +                                              struct intel_global_state *state);
>> +
>
>I have no major complaints.  Just some notes above.
>Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
>-Jonathan Cavitt
>
>>  #endif
>> -- 
>> 2.47.1
>> 
>>

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

* Re: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-20  8:50   ` Jani Nikula
@ 2024-12-20 13:54     ` Gustavo Sousa
  0 siblings, 0 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-20 13:54 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Ville Syrjälä

Quoting Jani Nikula (2024-12-20 05:50:05-03:00)
>On Thu, 19 Dec 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> If we look at how the members of struct intel_global_state_funcs, we see
>> a common pattern repeating itself. Let's add the necessary
>> infra-structure to allow reducing the boilerplate. We do that by
>> adding common generic implementations for each member and adding a macro
>> INTEL_GLOBAL_STATE_DEFAULTS() to be used when initializing an instance
>> of struct intel_global_state_funcs.
>>
>> That way, a global state that does not need custom behavior can have
>> its funcs structure be initialized as in the following example,
>>
>>     static const struct intel_global_state_funcs <prefix>_funcs = {
>>            INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),
>>     };
>>
>> , without the need to implementing the functions.
>>
>> That doesn't come without cost - we will need to store two size_t
>> members -, but that cost is arguably justified by the simplification
>> gained.
>>
>> In an upcoming change we will put that infra into action on existing
>> users.
>>
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
>>  .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
>>  2 files changed, 54 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.c b/drivers/gpu/drm/i915/display/intel_global_state.c
>> index cbcd1e91b7be..4b4c33fa99fb 100644
>> --- a/drivers/gpu/drm/i915/display/intel_global_state.c
>> +++ b/drivers/gpu/drm/i915/display/intel_global_state.c
>> @@ -59,7 +59,10 @@ static void __intel_atomic_global_state_free(struct kref *kref)
>>  
>>          commit_put(obj_state->commit);
>>  
>> -        obj->funcs->atomic_destroy_state(obj, obj_state);
>> +        if (obj->funcs->atomic_destroy_state)
>> +                obj->funcs->atomic_destroy_state(obj, obj_state);
>> +        else
>> +                intel_atomic_global_destroy_state_common(obj, obj_state);
>>  }
>>  
>>  static void intel_atomic_global_state_put(struct intel_global_state *obj_state)
>> @@ -164,7 +167,11 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
>>          index = state->num_global_objs;
>>          memset(&state->global_objs[index], 0, sizeof(*state->global_objs));
>>  
>> -        obj_state = obj->funcs->atomic_duplicate_state(obj);
>> +        if (obj->funcs->atomic_duplicate_state)
>> +                obj_state = obj->funcs->atomic_duplicate_state(obj);
>> +        else
>> +                obj_state = intel_atomic_global_duplicate_state_common(obj);
>> +
>>          if (!obj_state)
>>                  return ERR_PTR(-ENOMEM);
>>  
>> @@ -382,3 +389,33 @@ intel_atomic_global_state_commit_done(struct intel_atomic_state *state)
>>                  complete_all(&commit->done);
>>          }
>>  }
>> +
>> +struct intel_global_state *
>> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj)
>> +{
>> +        void *state_wrapper;
>> +
>> +        if (WARN_ON(obj->funcs->state_size == 0))
>> +                return NULL;
>> +
>> +        state_wrapper = (void *)obj->state - obj->funcs->base_offset;
>> +
>> +        state_wrapper = kmemdup(state_wrapper, obj->funcs->state_size, GFP_KERNEL);
>> +        if (!state_wrapper)
>> +                return NULL;
>> +
>> +        return state_wrapper + obj->funcs->base_offset;
>> +}
>> +
>> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
>> +                                              struct intel_global_state *state)
>> +{
>> +        void *state_wrapper;
>> +
>> +        if (WARN_ON(obj->funcs->state_size == 0))
>> +                return;
>> +
>> +        state_wrapper = (void *)state - obj->funcs->base_offset;
>> +
>> +        kfree(state_wrapper);
>> +}
>> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
>> index 6506a8e32972..e47e007225cc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
>> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
>> @@ -8,6 +8,8 @@
>>  
>>  #include <linux/kref.h>
>>  #include <linux/list.h>
>> +#include <linux/stddef.h>
>> +#include <linux/types.h>
>>  
>>  struct drm_i915_private;
>>  struct intel_atomic_state;
>> @@ -15,6 +17,10 @@ struct intel_global_obj;
>>  struct intel_global_state;
>>  
>>  struct intel_global_state_funcs {
>> +        /* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
>> +        size_t state_size;
>> +        size_t base_offset;
>> +
>
>Gut feeling says these should be part of struct intel_global_state
>rather than struct intel_global_state_funcs. Keyword being "funcs".

Yeah, I kept wondering about this and even considered a possible rename
of the struct type, but thought that would be probably too much just
because of two fields that should be considered private.

>
>They would have to be passed to intel_atomic_global_obj_init() and
>initialized runtime. That's a downside.

That sounds okay to me, although I would prefer something that
would not require explicit calls to sizeof() and offsetof().

> But then you could do away with
>the funcs struct altogether when defaults are used, and pass NULL.
>
>And you could also drop INTEL_GLOBAL_STATE_DEFAULTS() which I don't find
>particularly pretty.

Yeah, passing NULL seems like a good idea as it allows one to even skip
defining the funcs structure, but I think dropping
INTEL_GLOBAL_STATE_DEFAULTS() would make this an "all or nothing" type
of stuff: if you just need to customize one behavior, you will need to
define the whole structure explicitly.

--
Gustavo Sousa

>
>BR,
>Jani.
>
>>          struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>>          void (*atomic_destroy_state)(struct intel_global_obj *obj,
>>                                       struct intel_global_state *state);
>> @@ -26,6 +32,10 @@ struct intel_global_obj {
>>          const struct intel_global_state_funcs *funcs;
>>  };
>>  
>> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
>> +        .state_size = sizeof(type), \
>> +        .base_offset = offsetof(type, base_member)
>> +
>>  #define intel_for_each_global_obj(obj, dev_priv) \
>>          list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>>  
>> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>>  
>>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>>  
>> +struct intel_global_state *
>> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
>> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
>> +                                              struct intel_global_state *state);
>> +
>>  #endif
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-20  8:51   ` Jani Nikula
@ 2024-12-20 13:56     ` Gustavo Sousa
  0 siblings, 0 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-20 13:56 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx, intel-xe; +Cc: Ville Syrjälä

Quoting Jani Nikula (2024-12-20 05:51:51-03:00)
>On Thu, 19 Dec 2024, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
>> index 6506a8e32972..e47e007225cc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
>> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
>> @@ -8,6 +8,8 @@
>>  
>>  #include <linux/kref.h>
>>  #include <linux/list.h>
>> +#include <linux/stddef.h>
>
>What do you need this for?

Because of offsetof().

--
Gustavo Sousa

>
>> +#include <linux/types.h>
>>  
>>  struct drm_i915_private;
>>  struct intel_atomic_state;
>> @@ -15,6 +17,10 @@ struct intel_global_obj;
>>  struct intel_global_state;
>>  
>>  struct intel_global_state_funcs {
>> +        /* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
>> +        size_t state_size;
>> +        size_t base_offset;
>> +
>>          struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>>          void (*atomic_destroy_state)(struct intel_global_obj *obj,
>>                                       struct intel_global_state *state);
>> @@ -26,6 +32,10 @@ struct intel_global_obj {
>>          const struct intel_global_state_funcs *funcs;
>>  };
>>  
>> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
>> +        .state_size = sizeof(type), \
>> +        .base_offset = offsetof(type, base_member)
>> +
>>  #define intel_for_each_global_obj(obj, dev_priv) \
>>          list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>>  
>> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>>  
>>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>>  
>> +struct intel_global_state *
>> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
>> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
>> +                                              struct intel_global_state *state);
>> +
>>  #endif
>
>-- 
>Jani Nikula, Intel

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

* Re: [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate
  2024-12-20  9:23   ` Ville Syrjälä
@ 2024-12-20 14:02     ` Gustavo Sousa
  0 siblings, 0 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-20 14:02 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx, intel-xe, Jani Nikula

Quoting Ville Syrjälä (2024-12-20 06:23:24-03:00)
>On Thu, Dec 19, 2024 at 06:48:37PM -0300, Gustavo Sousa wrote:
>> If we look at how the members of struct intel_global_state_funcs, we see
>> a common pattern repeating itself. Let's add the necessary
>> infra-structure to allow reducing the boilerplate. We do that by
>> adding common generic implementations for each member and adding a macro
>> INTEL_GLOBAL_STATE_DEFAULTS() to be used when initializing an instance
>> of struct intel_global_state_funcs.
>> 
>> That way, a global state that does not need custom behavior can have
>> its funcs structure be initialized as in the following example,
>> 
>>     static const struct intel_global_state_funcs <prefix>_funcs = {
>>            INTEL_GLOBAL_STATE_DEFAULTS(struct <prefix>_state, <base_member_name>),
>>     };
>> 
>> , without the need to implementing the functions.
>> 
>> That doesn't come without cost - we will need to store two size_t
>> members -, but that cost is arguably justified by the simplification
>> gained.
>> 
>> In an upcoming change we will put that infra into action on existing
>> users.
>> 
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>>  .../gpu/drm/i915/display/intel_global_state.c | 41 ++++++++++++++++++-
>>  .../gpu/drm/i915/display/intel_global_state.h | 15 +++++++
>>  2 files changed, 54 insertions(+), 2 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.c b/drivers/gpu/drm/i915/display/intel_global_state.c
>> index cbcd1e91b7be..4b4c33fa99fb 100644
>> --- a/drivers/gpu/drm/i915/display/intel_global_state.c
>> +++ b/drivers/gpu/drm/i915/display/intel_global_state.c
>> @@ -59,7 +59,10 @@ static void __intel_atomic_global_state_free(struct kref *kref)
>>  
>>          commit_put(obj_state->commit);
>>  
>> -        obj->funcs->atomic_destroy_state(obj, obj_state);
>> +        if (obj->funcs->atomic_destroy_state)
>> +                obj->funcs->atomic_destroy_state(obj, obj_state);
>> +        else
>> +                intel_atomic_global_destroy_state_common(obj, obj_state);
>>  }
>>  
>>  static void intel_atomic_global_state_put(struct intel_global_state *obj_state)
>> @@ -164,7 +167,11 @@ intel_atomic_get_global_obj_state(struct intel_atomic_state *state,
>>          index = state->num_global_objs;
>>          memset(&state->global_objs[index], 0, sizeof(*state->global_objs));
>>  
>> -        obj_state = obj->funcs->atomic_duplicate_state(obj);
>> +        if (obj->funcs->atomic_duplicate_state)
>> +                obj_state = obj->funcs->atomic_duplicate_state(obj);
>> +        else
>> +                obj_state = intel_atomic_global_duplicate_state_common(obj);
>> +
>>          if (!obj_state)
>>                  return ERR_PTR(-ENOMEM);
>>  
>> @@ -382,3 +389,33 @@ intel_atomic_global_state_commit_done(struct intel_atomic_state *state)
>>                  complete_all(&commit->done);
>>          }
>>  }
>> +
>> +struct intel_global_state *
>> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj)
>> +{
>> +        void *state_wrapper;
>> +
>> +        if (WARN_ON(obj->funcs->state_size == 0))
>> +                return NULL;
>> +
>> +        state_wrapper = (void *)obj->state - obj->funcs->base_offset;
>> +
>> +        state_wrapper = kmemdup(state_wrapper, obj->funcs->state_size, GFP_KERNEL);
>> +        if (!state_wrapper)
>> +                return NULL;
>> +
>> +        return state_wrapper + obj->funcs->base_offset;
>
>I'm not really a fan. What was obvious code before now looks 
>complicated.

Well it is 1 somewhat complication here to simplify N cases in the
subclasses. Maybe that's worth it?

>
>Also this no longer matches how any of the standard kms object
>types work, which I don't think is a good idea. IMO if we
>want to do something like this then it should probably try to
>cover all kms object types.

Do you mean to try to implement this on the DRM layer? In that case, we
would also endup having to implement this here right? Because we have
our own thing. Unless I interpreted your comment above wrong...

--
Gustavo Sousa
>
>> +}
>> +
>> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
>> +                                              struct intel_global_state *state)
>> +{
>> +        void *state_wrapper;
>> +
>> +        if (WARN_ON(obj->funcs->state_size == 0))
>> +                return;
>> +
>> +        state_wrapper = (void *)state - obj->funcs->base_offset;
>> +
>> +        kfree(state_wrapper);
>> +}
>> diff --git a/drivers/gpu/drm/i915/display/intel_global_state.h b/drivers/gpu/drm/i915/display/intel_global_state.h
>> index 6506a8e32972..e47e007225cc 100644
>> --- a/drivers/gpu/drm/i915/display/intel_global_state.h
>> +++ b/drivers/gpu/drm/i915/display/intel_global_state.h
>> @@ -8,6 +8,8 @@
>>  
>>  #include <linux/kref.h>
>>  #include <linux/list.h>
>> +#include <linux/stddef.h>
>> +#include <linux/types.h>
>>  
>>  struct drm_i915_private;
>>  struct intel_atomic_state;
>> @@ -15,6 +17,10 @@ struct intel_global_obj;
>>  struct intel_global_state;
>>  
>>  struct intel_global_state_funcs {
>> +        /* state_size and base_offset are initialized by INTEL_GLOBAL_STATE_DEFAULTS() */
>> +        size_t state_size;
>> +        size_t base_offset;
>> +
>>          struct intel_global_state *(*atomic_duplicate_state)(struct intel_global_obj *obj);
>>          void (*atomic_destroy_state)(struct intel_global_obj *obj,
>>                                       struct intel_global_state *state);
>> @@ -26,6 +32,10 @@ struct intel_global_obj {
>>          const struct intel_global_state_funcs *funcs;
>>  };
>>  
>> +#define INTEL_GLOBAL_STATE_DEFAULTS(type, base_member) \
>> +        .state_size = sizeof(type), \
>> +        .base_offset = offsetof(type, base_member)
>> +
>>  #define intel_for_each_global_obj(obj, dev_priv) \
>>          list_for_each_entry(obj, &(dev_priv)->display.global.obj_list, head)
>>  
>> @@ -96,4 +106,9 @@ int intel_atomic_global_state_wait_for_dependencies(struct intel_atomic_state *s
>>  
>>  bool intel_atomic_global_state_is_serialized(struct intel_atomic_state *state);
>>  
>> +struct intel_global_state *
>> +intel_atomic_global_duplicate_state_common(struct intel_global_obj *obj);
>> +void intel_atomic_global_destroy_state_common(struct intel_global_obj *obj,
>> +                                              struct intel_global_state *state);
>> +
>>  #endif
>> -- 
>> 2.47.1
>
>-- 
>Ville Syrjälä
>Intel

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

* RE: [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS
  2024-12-19 22:45   ` Cavitt, Jonathan
@ 2024-12-20 14:08     ` Gustavo Sousa
  0 siblings, 0 replies; 21+ messages in thread
From: Gustavo Sousa @ 2024-12-20 14:08 UTC (permalink / raw)
  To: Cavitt, Jonathan, intel-gfx@lists.freedesktop.org,
	intel-xe@lists.freedesktop.org
  Cc: Ville Syrjälä, Nikula, Jani, Cavitt, Jonathan

Quoting Cavitt, Jonathan (2024-12-19 19:45:15-03:00)
>-----Original Message-----
>From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Gustavo Sousa
>Sent: Thursday, December 19, 2024 1:49 PM
>To: intel-gfx@lists.freedesktop.org; intel-xe@lists.freedesktop.org
>Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com>; Nikula, Jani <jani.nikula@intel.com>
>Subject: [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS
>> 
>> Reduce global state boilerplate by using INTEL_GLOBAL_STATE_DEFAULTS().
>> The only case that requires customization is for the duplication of
>> CDCLK state, which is resolved by wrapping the generic implementation.
>> 
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>
>LGTM, though I am a bit curious under what circumstances we expect
>obj->funcs->atomic_destroy_state to return a valid function pointer
>with these changes?  I'm guessing we aren't depreciating/erasing that
>function pointer because we might need it in the future?

I did keep the atomic_destroy_state for completeness (to complement the
"duplicate state" one). It might be that we end up not really needing
any customization for that part for any of the global state instances
that we have or will have. We could revisit this then...

>Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel>

Thanks for the reviews, Jonathan!

--
Gustavo Sousa

>-Jonathan Cavitt
>
>> ---
>>  drivers/gpu/drm/i915/display/intel_bw.c       | 21 +------------------
>>  drivers/gpu/drm/i915/display/intel_cdclk.c    | 18 +++++++---------
>>  drivers/gpu/drm/i915/display/intel_pmdemand.c | 21 +------------------
>>  drivers/gpu/drm/i915/display/skl_watermark.c  | 20 +-----------------
>>  4 files changed, 10 insertions(+), 70 deletions(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_bw.c b/drivers/gpu/drm/i915/display/intel_bw.c
>> index 30236010e0ed..f040dfa70fd9 100644
>> --- a/drivers/gpu/drm/i915/display/intel_bw.c
>> +++ b/drivers/gpu/drm/i915/display/intel_bw.c
>> @@ -1422,27 +1422,8 @@ int intel_bw_atomic_check(struct intel_atomic_state *state)
>>          return 0;
>>  }
>>  
>> -static struct intel_global_state *
>> -intel_bw_duplicate_state(struct intel_global_obj *obj)
>> -{
>> -        struct intel_bw_state *state = to_intel_bw_state(obj->state);
>> -
>> -        state = kmemdup(state, sizeof(*state), GFP_KERNEL);
>> -        if (!state)
>> -                return NULL;
>> -
>> -        return &state->base;
>> -}
>> -
>> -static void intel_bw_destroy_state(struct intel_global_obj *obj,
>> -                                   struct intel_global_state *state)
>> -{
>> -        kfree(state);
>> -}
>> -
>>  static const struct intel_global_state_funcs intel_bw_funcs = {
>> -        .atomic_duplicate_state = intel_bw_duplicate_state,
>> -        .atomic_destroy_state = intel_bw_destroy_state,
>> +        INTEL_GLOBAL_STATE_DEFAULTS(struct intel_bw_state, base),
>>  };
>>  
>>  int intel_bw_init(struct drm_i915_private *i915)
>> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> index fc084e2a4c6a..a9dfbd53e812 100644
>> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
>> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> @@ -3130,27 +3130,23 @@ static int fixed_modeset_calc_cdclk(struct intel_atomic_state *state)
>>  
>>  static struct intel_global_state *intel_cdclk_duplicate_state(struct intel_global_obj *obj)
>>  {
>> -        struct intel_cdclk_state *cdclk_state = to_intel_cdclk_state(obj->state);
>> +        struct intel_global_state *obj_state;
>> +        struct intel_cdclk_state *cdclk_state;
>>  
>> -        cdclk_state = kmemdup(cdclk_state, sizeof(*cdclk_state), GFP_KERNEL);
>> -        if (!cdclk_state)
>> +        obj_state = intel_atomic_global_duplicate_state_common(obj);
>> +        if (!obj_state)
>>                  return NULL;
>>  
>> +        cdclk_state = to_intel_cdclk_state(obj_state);
>>          cdclk_state->pipe = INVALID_PIPE;
>>          cdclk_state->disable_pipes = false;
>>  
>> -        return &cdclk_state->base;
>> -}
>> -
>> -static void intel_cdclk_destroy_state(struct intel_global_obj *obj,
>> -                                      struct intel_global_state *state)
>> -{
>> -        kfree(state);
>> +        return obj_state;
>>  }
>>  
>>  static const struct intel_global_state_funcs intel_cdclk_funcs = {
>> +        INTEL_GLOBAL_STATE_DEFAULTS(struct intel_cdclk_state, base),
>>          .atomic_duplicate_state = intel_cdclk_duplicate_state,
>> -        .atomic_destroy_state = intel_cdclk_destroy_state,
>>  };
>>  
>>  struct intel_cdclk_state *
>> diff --git a/drivers/gpu/drm/i915/display/intel_pmdemand.c b/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> index 1f71efb7d04d..5bf245a9ac8d 100644
>> --- a/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> +++ b/drivers/gpu/drm/i915/display/intel_pmdemand.c
>> @@ -15,27 +15,8 @@
>>  #include "intel_pmdemand.h"
>>  #include "skl_watermark.h"
>>  
>> -static struct intel_global_state *
>> -intel_pmdemand_duplicate_state(struct intel_global_obj *obj)
>> -{
>> -        struct intel_pmdemand_state *pmdemand_state = to_intel_pmdemand_state(obj->state);
>> -
>> -        pmdemand_state = kmemdup(pmdemand_state, sizeof(*pmdemand_state), GFP_KERNEL);
>> -        if (!pmdemand_state)
>> -                return NULL;
>> -
>> -        return &pmdemand_state->base;
>> -}
>> -
>> -static void intel_pmdemand_destroy_state(struct intel_global_obj *obj,
>> -                                         struct intel_global_state *state)
>> -{
>> -        kfree(state);
>> -}
>> -
>>  static const struct intel_global_state_funcs intel_pmdemand_funcs = {
>> -        .atomic_duplicate_state = intel_pmdemand_duplicate_state,
>> -        .atomic_destroy_state = intel_pmdemand_destroy_state,
>> +        INTEL_GLOBAL_STATE_DEFAULTS(struct intel_pmdemand_state, base),
>>  };
>>  
>>  static struct intel_pmdemand_state *
>> diff --git a/drivers/gpu/drm/i915/display/skl_watermark.c b/drivers/gpu/drm/i915/display/skl_watermark.c
>> index b3d38e09df5a..8aa041be8277 100644
>> --- a/drivers/gpu/drm/i915/display/skl_watermark.c
>> +++ b/drivers/gpu/drm/i915/display/skl_watermark.c
>> @@ -3289,26 +3289,8 @@ static void skl_setup_wm_latency(struct drm_i915_private *i915)
>>          intel_print_wm_latency(i915, "Gen9 Plane", display->wm.skl_latency);
>>  }
>>  
>> -static struct intel_global_state *intel_dbuf_duplicate_state(struct intel_global_obj *obj)
>> -{
>> -        struct intel_dbuf_state *dbuf_state = to_intel_dbuf_state(obj->state);
>> -
>> -        dbuf_state = kmemdup(dbuf_state, sizeof(*dbuf_state), GFP_KERNEL);
>> -        if (!dbuf_state)
>> -                return NULL;
>> -
>> -        return &dbuf_state->base;
>> -}
>> -
>> -static void intel_dbuf_destroy_state(struct intel_global_obj *obj,
>> -                                     struct intel_global_state *state)
>> -{
>> -        kfree(state);
>> -}
>> -
>>  static const struct intel_global_state_funcs intel_dbuf_funcs = {
>> -        .atomic_duplicate_state = intel_dbuf_duplicate_state,
>> -        .atomic_destroy_state = intel_dbuf_destroy_state,
>> +        INTEL_GLOBAL_STATE_DEFAULTS(struct intel_dbuf_state, base),
>>  };
>>  
>>  struct intel_dbuf_state *
>> -- 
>> 2.47.1
>> 
>>

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

* ✓ i915.CI.Full: success for drm/i915/display: Reduce global state funcs boilerplate
  2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
                   ` (5 preceding siblings ...)
  2024-12-19 23:00 ` ✓ i915.CI.BAT: success " Patchwork
@ 2024-12-20 19:50 ` Patchwork
  6 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2024-12-20 19:50 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/display: Reduce global state funcs boilerplate
URL   : https://patchwork.freedesktop.org/series/142853/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_15873_full -> Patchwork_142853v1_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (12 -> 11)
------------------------------

  Missing    (1): shard-dg2-set2 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@object-reloc-purge-cache:
    - shard-dg1:          NOTRUN -> [SKIP][1] ([i915#8411])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@api_intel_bb@object-reloc-purge-cache.html

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

  * igt@device_reset@unbind-reset-rebind:
    - shard-dg2:          [PASS][3] -> [ABORT][4] ([i915#5507])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-11/igt@device_reset@unbind-reset-rebind.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@device_reset@unbind-reset-rebind.html
    - shard-tglu:         NOTRUN -> [ABORT][5] ([i915#12817] / [i915#5507])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@device_reset@unbind-reset-rebind.html

  * igt@dmabuf@all-tests@dma_fence_chain:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][6] ([i915#12964]) +28 other tests dmesg-warn
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@dmabuf@all-tests@dma_fence_chain.html

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

  * igt@drm_fdinfo@virtual-busy-idle-all:
    - shard-dg1:          NOTRUN -> [SKIP][8] ([i915#8414])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@drm_fdinfo@virtual-busy-idle-all.html

  * igt@gem_busy@semaphore:
    - shard-dg2:          NOTRUN -> [SKIP][9] ([i915#3936])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@gem_busy@semaphore.html

  * igt@gem_ccs@ctrl-surf-copy:
    - shard-tglu-1:       NOTRUN -> [SKIP][10] ([i915#3555] / [i915#9323])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@gem_ccs@ctrl-surf-copy.html

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

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-rkl:          NOTRUN -> [SKIP][12] ([i915#6335])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_ctx_persistence@hang:
    - shard-snb:          NOTRUN -> [SKIP][13] ([i915#1099])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb7/igt@gem_ctx_persistence@hang.html

  * igt@gem_ctx_persistence@heartbeat-hang:
    - shard-dg1:          NOTRUN -> [SKIP][14] ([i915#8555])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@gem_ctx_persistence@heartbeat-hang.html

  * igt@gem_ctx_persistence@saturated-hostile-nopreempt:
    - shard-dg2:          NOTRUN -> [SKIP][15] ([i915#5882]) +7 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@gem_ctx_persistence@saturated-hostile-nopreempt.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-tglu-1:       NOTRUN -> [SKIP][16] ([i915#280])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_eio@in-flight-suspend:
    - shard-glk:          NOTRUN -> [INCOMPLETE][17] ([i915#13197])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk6/igt@gem_eio@in-flight-suspend.html

  * igt@gem_exec_balancer@bonded-false-hang:
    - shard-dg2:          NOTRUN -> [SKIP][18] ([i915#4812]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@gem_exec_balancer@bonded-false-hang.html

  * igt@gem_exec_balancer@bonded-pair:
    - shard-dg1:          NOTRUN -> [SKIP][19] ([i915#4771])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@gem_exec_balancer@bonded-pair.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-rkl:          NOTRUN -> [SKIP][20] ([i915#4525]) +2 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_exec_balancer@parallel-balancer.html
    - shard-tglu:         NOTRUN -> [SKIP][21] ([i915#4525])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-tglu-1:       NOTRUN -> [SKIP][22] ([i915#4525])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_capture@capture-recoverable:
    - shard-rkl:          NOTRUN -> [SKIP][23] ([i915#6344])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_exec_capture@capture-recoverable.html

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

  * igt@gem_exec_params@rsvd2-dirt:
    - shard-dg2:          NOTRUN -> [SKIP][25] ([i915#5107])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@gem_exec_params@rsvd2-dirt.html

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

  * igt@gem_exec_reloc@basic-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][27] ([i915#3281]) +7 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@gem_exec_reloc@basic-gtt.html

  * igt@gem_exec_reloc@basic-scanout:
    - shard-rkl:          NOTRUN -> [SKIP][28] ([i915#3281]) +9 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_exec_reloc@basic-scanout.html

  * igt@gem_exec_schedule@reorder-wide:
    - shard-dg2:          NOTRUN -> [SKIP][29] ([i915#4537] / [i915#4812]) +1 other test skip
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_exec_schedule@reorder-wide.html

  * igt@gem_exec_suspend@basic-s4-devices:
    - shard-dg2:          NOTRUN -> [ABORT][30] ([i915#7975] / [i915#8213]) +1 other test abort
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@gem_exec_suspend@basic-s4-devices.html

  * igt@gem_fence_thrash@bo-write-verify-y:
    - shard-dg2:          NOTRUN -> [SKIP][31] ([i915#4860])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_fence_thrash@bo-write-verify-y.html

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

  * igt@gem_huc_copy@huc-copy:
    - shard-rkl:          NOTRUN -> [SKIP][33] ([i915#2190])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@basic:
    - shard-rkl:          NOTRUN -> [SKIP][34] ([i915#4613])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_lmem_swapping@basic.html
    - shard-tglu:         NOTRUN -> [SKIP][35] ([i915#4613])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@gem_lmem_swapping@basic.html

  * igt@gem_lmem_swapping@parallel-random:
    - shard-tglu-1:       NOTRUN -> [SKIP][36] ([i915#4613]) +1 other test skip
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@gem_lmem_swapping@parallel-random.html

  * igt@gem_mmap_wc@bad-object:
    - shard-dg1:          NOTRUN -> [SKIP][37] ([i915#4083]) +2 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@gem_mmap_wc@bad-object.html

  * igt@gem_mmap_wc@copy:
    - shard-dg2:          NOTRUN -> [SKIP][38] ([i915#4083]) +3 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_mmap_wc@copy.html

  * igt@gem_partial_pwrite_pread@reads-uncached:
    - shard-dg2:          NOTRUN -> [SKIP][39] ([i915#3282]) +3 other tests skip
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_partial_pwrite_pread@reads-uncached.html

  * igt@gem_partial_pwrite_pread@writes-after-reads:
    - shard-rkl:          NOTRUN -> [SKIP][40] ([i915#3282]) +6 other tests skip
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_partial_pwrite_pread@writes-after-reads.html

  * igt@gem_pwrite@basic-self:
    - shard-dg1:          NOTRUN -> [SKIP][41] ([i915#3282]) +1 other test skip
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@gem_pwrite@basic-self.html

  * igt@gem_pxp@display-protected-crc:
    - shard-dg2:          NOTRUN -> [SKIP][42] ([i915#4270]) +2 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_pxp@display-protected-crc.html

  * igt@gem_pxp@hw-rejects-pxp-buffer:
    - shard-tglu-1:       NOTRUN -> [SKIP][43] ([i915#13033])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@gem_pxp@hw-rejects-pxp-buffer.html

  * igt@gem_pxp@reject-modify-context-protection-off-3:
    - shard-rkl:          NOTRUN -> [SKIP][44] ([i915#4270])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@gem_pxp@reject-modify-context-protection-off-3.html

  * igt@gem_pxp@reject-modify-context-protection-on:
    - shard-rkl:          NOTRUN -> [TIMEOUT][45] ([i915#12917] / [i915#12964]) +3 other tests timeout
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gem_pxp@reject-modify-context-protection-on.html

  * igt@gem_render_copy@linear-to-vebox-yf-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][46] ([i915#5190] / [i915#8428]) +5 other tests skip
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@gem_render_copy@linear-to-vebox-yf-tiled.html

  * igt@gem_set_tiling_vs_blt@tiled-to-tiled:
    - shard-dg2:          NOTRUN -> [SKIP][47] ([i915#4079]) +2 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_set_tiling_vs_blt@tiled-to-tiled.html

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

  * igt@gem_tiled_partial_pwrite_pread@writes:
    - shard-dg2:          NOTRUN -> [SKIP][49] ([i915#4077]) +9 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_tiled_partial_pwrite_pread@writes.html

  * igt@gem_userptr_blits@coherency-unsync:
    - shard-tglu:         NOTRUN -> [SKIP][50] ([i915#3297])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@gem_userptr_blits@coherency-unsync.html

  * igt@gem_userptr_blits@create-destroy-unsync:
    - shard-rkl:          NOTRUN -> [SKIP][51] ([i915#3297]) +2 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@gem_userptr_blits@create-destroy-unsync.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-tglu-1:       NOTRUN -> [SKIP][52] ([i915#3297] / [i915#3323])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@forbidden-operations:
    - shard-dg2:          NOTRUN -> [SKIP][53] ([i915#3282] / [i915#3297])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@gem_userptr_blits@forbidden-operations.html

  * igt@gem_userptr_blits@map-fixed-invalidate:
    - shard-dg2:          NOTRUN -> [SKIP][54] ([i915#3297] / [i915#4880])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@gem_userptr_blits@map-fixed-invalidate.html

  * igt@gem_userptr_blits@readonly-unsync:
    - shard-dg2:          NOTRUN -> [SKIP][55] ([i915#3297]) +2 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_userptr_blits@readonly-unsync.html

  * igt@gem_userptr_blits@sd-probe:
    - shard-dg2:          NOTRUN -> [SKIP][56] ([i915#3297] / [i915#4958])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@gem_userptr_blits@sd-probe.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-dg1:          NOTRUN -> [SKIP][57] ([i915#2527])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@gen9_exec_parse@allowed-single.html

  * igt@gen9_exec_parse@batch-invalid-length:
    - shard-tglu:         NOTRUN -> [SKIP][58] ([i915#2527] / [i915#2856])
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@gen9_exec_parse@batch-invalid-length.html

  * igt@gen9_exec_parse@bb-start-out:
    - shard-rkl:          NOTRUN -> [SKIP][59] ([i915#2527]) +2 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@gen9_exec_parse@bb-start-out.html

  * igt@gen9_exec_parse@bb-start-param:
    - shard-tglu-1:       NOTRUN -> [SKIP][60] ([i915#2527] / [i915#2856]) +1 other test skip
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@gen9_exec_parse@bb-start-param.html

  * igt@gen9_exec_parse@valid-registers:
    - shard-dg2:          NOTRUN -> [SKIP][61] ([i915#2856]) +1 other test skip
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@gen9_exec_parse@valid-registers.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-dg2:          [PASS][62] -> [ABORT][63] ([i915#9820])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-6/igt@i915_module_load@reload-with-fault-injection.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-8/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_freq_api@freq-suspend:
    - shard-rkl:          NOTRUN -> [SKIP][64] ([i915#8399]) +1 other test skip
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@i915_pm_freq_api@freq-suspend.html

  * igt@i915_pm_freq_mult@media-freq@gt0:
    - shard-rkl:          NOTRUN -> [SKIP][65] ([i915#6590]) +1 other test skip
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@i915_pm_freq_mult@media-freq@gt0.html
    - shard-tglu:         NOTRUN -> [SKIP][66] ([i915#6590]) +1 other test skip
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@i915_pm_freq_mult@media-freq@gt0.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-rcs0:
    - shard-dg1:          NOTRUN -> [FAIL][67] ([i915#12739] / [i915#3591])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@i915_pm_rc6_residency@rc6-idle@gt0-rcs0.html

  * igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0:
    - shard-dg1:          NOTRUN -> [FAIL][68] ([i915#3591]) +1 other test fail
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@i915_pm_rc6_residency@rc6-idle@gt0-vcs0.html

  * igt@i915_pm_rps@min-max-config-idle:
    - shard-dg1:          NOTRUN -> [SKIP][69] ([i915#11681] / [i915#6621])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@i915_pm_rps@min-max-config-idle.html

  * igt@i915_pm_rps@min-max-config-loaded:
    - shard-dg2:          NOTRUN -> [SKIP][70] ([i915#11681] / [i915#6621])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@i915_pm_rps@min-max-config-loaded.html

  * igt@i915_pm_rps@reset:
    - shard-snb:          [PASS][71] -> [INCOMPLETE][72] ([i915#7790])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-snb2/igt@i915_pm_rps@reset.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb4/igt@i915_pm_rps@reset.html

  * igt@i915_pm_rps@thresholds-idle-park:
    - shard-dg2:          NOTRUN -> [SKIP][73] ([i915#11681])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@i915_pm_rps@thresholds-idle-park.html

  * igt@i915_pm_sseu@full-enable:
    - shard-dg2:          NOTRUN -> [SKIP][74] ([i915#4387])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@i915_pm_sseu@full-enable.html

  * igt@i915_query@query-topology-coherent-slice-mask:
    - shard-dg2:          NOTRUN -> [SKIP][75] ([i915#6188])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@i915_query@query-topology-coherent-slice-mask.html

  * igt@intel_hwmon@hwmon-read:
    - shard-tglu-1:       NOTRUN -> [SKIP][76] ([i915#7707])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@intel_hwmon@hwmon-read.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - shard-dg2:          NOTRUN -> [SKIP][77] ([i915#4212])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][78] ([i915#5190]) +1 other test skip
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@tile-pitch-mismatch:
    - shard-dg1:          NOTRUN -> [SKIP][79] ([i915#4212])
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_addfb_basic@tile-pitch-mismatch.html

  * igt@kms_async_flips@async-flip-with-page-flip-events:
    - shard-rkl:          [PASS][80] -> [DMESG-WARN][81] ([i915#12964])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-rkl-2/igt@kms_async_flips@async-flip-with-page-flip-events.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_async_flips@async-flip-with-page-flip-events.html

  * igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc:
    - shard-rkl:          NOTRUN -> [SKIP][82] ([i915#8709]) +3 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_async_flips@async-flip-with-page-flip-events@pipe-b-hdmi-a-2-y-rc-ccs-cc.html

  * igt@kms_async_flips@crc:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][83] ([i915#13287] / [i915#9878])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_async_flips@crc.html

  * igt@kms_async_flips@crc@pipe-a-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [INCOMPLETE][84] ([i915#13287])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_async_flips@crc@pipe-a-hdmi-a-2.html

  * igt@kms_async_flips@crc@pipe-b-hdmi-a-2:
    - shard-dg2:          NOTRUN -> [CRASH][85] ([i915#13287]) +3 other tests crash
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-11/igt@kms_async_flips@crc@pipe-b-hdmi-a-2.html

  * igt@kms_atomic@plane-primary-overlay-mutable-zpos:
    - shard-dg2:          NOTRUN -> [SKIP][86] ([i915#9531])
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_atomic@plane-primary-overlay-mutable-zpos.html

  * igt@kms_atomic_interruptible@universal-setplane-primary:
    - shard-dg1:          [PASS][87] -> [DMESG-WARN][88] ([i915#4423])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg1-14/igt@kms_atomic_interruptible@universal-setplane-primary.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_atomic_interruptible@universal-setplane-primary.html

  * igt@kms_atomic_transition@plane-all-modeset-transition:
    - shard-dg2:          [PASS][89] -> [FAIL][90] ([i915#5956])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-3/igt@kms_atomic_transition@plane-all-modeset-transition.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-4/igt@kms_atomic_transition@plane-all-modeset-transition.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels:
    - shard-dg2:          NOTRUN -> [SKIP][91] ([i915#1769] / [i915#3555]) +1 other test skip
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_atomic_transition@plane-all-modeset-transition-internal-panels.html

  * igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1:
    - shard-dg2:          NOTRUN -> [FAIL][92] ([i915#5956])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-4/igt@kms_atomic_transition@plane-all-modeset-transition@pipe-a-hdmi-a-1.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][93] ([i915#5286]) +3 other tests skip
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_big_fb@4-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-0:
    - shard-tglu-1:       NOTRUN -> [SKIP][94] ([i915#5286]) +3 other tests skip
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_big_fb@4-tiled-8bpp-rotate-0.html

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

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][96] ([i915#4538] / [i915#5286])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_fb@linear-64bpp-rotate-90:
    - shard-dg1:          NOTRUN -> [SKIP][97] ([i915#3638])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_big_fb@linear-64bpp-rotate-90.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-rkl:          NOTRUN -> [SKIP][98] ([i915#3638]) +2 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_big_fb@linear-8bpp-rotate-270.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-dg2:          NOTRUN -> [SKIP][99] ([i915#4538] / [i915#5190]) +12 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-180:
    - shard-dg1:          NOTRUN -> [SKIP][100] ([i915#4538]) +1 other test skip
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_big_fb@yf-tiled-8bpp-rotate-180.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs:
    - shard-dg1:          NOTRUN -> [SKIP][101] ([i915#12313])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_ccs@bad-rotation-90-4-tiled-bmg-ccs.html

  * igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][102] ([i915#10307] / [i915#6095]) +217 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_ccs@ccs-on-another-bo-yf-tiled-ccs@pipe-a-hdmi-a-3.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs:
    - shard-rkl:          NOTRUN -> [SKIP][103] ([i915#12313])
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-1:
    - shard-tglu-1:       NOTRUN -> [SKIP][104] ([i915#6095]) +44 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-mc-ccs@pipe-c-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][105] ([i915#6095]) +4 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1.html
    - shard-dg2:          NOTRUN -> [SKIP][106] ([i915#10307] / [i915#10434] / [i915#6095])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-8/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs-cc@pipe-d-hdmi-a-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2:
    - shard-rkl:          NOTRUN -> [SKIP][107] ([i915#6095]) +96 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_ccs@crc-primary-suspend-4-tiled-dg2-mc-ccs@pipe-b-hdmi-a-2.html

  * igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-3:
    - shard-dg2:          NOTRUN -> [SKIP][108] ([i915#6095]) +20 other tests skip
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc@pipe-b-hdmi-a-3.html

  * igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-3:
    - shard-dg1:          NOTRUN -> [SKIP][109] ([i915#6095]) +115 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-12/igt@kms_ccs@random-ccs-data-4-tiled-dg2-mc-ccs@pipe-c-hdmi-a-3.html

  * igt@kms_cdclk@mode-transition@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][110] ([i915#11616] / [i915#7213]) +3 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_cdclk@mode-transition@pipe-a-dp-4.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - shard-dg2:          NOTRUN -> [SKIP][111] ([i915#7828]) +8 other tests skip
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_chamelium_hpd@dp-hpd:
    - shard-rkl:          NOTRUN -> [SKIP][112] ([i915#7828]) +5 other tests skip
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_chamelium_hpd@dp-hpd.html
    - shard-tglu:         NOTRUN -> [SKIP][113] ([i915#7828]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_chamelium_hpd@dp-hpd.html

  * igt@kms_chamelium_hpd@dp-hpd-after-suspend:
    - shard-dg1:          NOTRUN -> [SKIP][114] ([i915#7828]) +1 other test skip
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html

  * igt@kms_chamelium_hpd@hdmi-hpd-after-suspend:
    - shard-tglu-1:       NOTRUN -> [SKIP][115] ([i915#7828]) +2 other tests skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_chamelium_hpd@hdmi-hpd-after-suspend.html

  * igt@kms_color@deep-color:
    - shard-tglu-1:       NOTRUN -> [SKIP][116] ([i915#3555] / [i915#9979])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_color@deep-color.html

  * igt@kms_content_protection@atomic@pipe-a-dp-4:
    - shard-dg2:          NOTRUN -> [TIMEOUT][117] ([i915#7173])
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_content_protection@atomic@pipe-a-dp-4.html

  * igt@kms_content_protection@dp-mst-lic-type-0:
    - shard-dg2:          NOTRUN -> [SKIP][118] ([i915#3299]) +1 other test skip
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_content_protection@dp-mst-lic-type-0.html

  * igt@kms_content_protection@dp-mst-lic-type-1:
    - shard-rkl:          NOTRUN -> [SKIP][119] ([i915#3116])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_content_protection@dp-mst-lic-type-1.html
    - shard-tglu:         NOTRUN -> [SKIP][120] ([i915#3116] / [i915#3299])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_content_protection@dp-mst-lic-type-1.html

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

  * igt@kms_content_protection@mei-interface:
    - shard-rkl:          NOTRUN -> [SKIP][122] ([i915#9424])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_content_protection@mei-interface.html

  * igt@kms_content_protection@type1:
    - shard-rkl:          NOTRUN -> [SKIP][123] ([i915#7118] / [i915#9424])
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_content_protection@type1.html

  * igt@kms_cursor_crc@cursor-offscreen-512x512:
    - shard-dg1:          NOTRUN -> [SKIP][124] ([i915#13049])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_cursor_crc@cursor-offscreen-512x512.html

  * igt@kms_cursor_crc@cursor-onscreen-512x170:
    - shard-tglu-1:       NOTRUN -> [SKIP][125] ([i915#13049])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_cursor_crc@cursor-onscreen-512x170.html

  * igt@kms_cursor_crc@cursor-rapid-movement-512x170:
    - shard-dg2:          NOTRUN -> [SKIP][126] ([i915#13049])
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_cursor_crc@cursor-rapid-movement-512x170.html

  * igt@kms_cursor_crc@cursor-sliding-256x85:
    - shard-rkl:          [PASS][127] -> [DMESG-WARN][128] ([i915#12917] / [i915#12964])
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-rkl-2/igt@kms_cursor_crc@cursor-sliding-256x85.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-1/igt@kms_cursor_crc@cursor-sliding-256x85.html

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

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
    - shard-dg2:          NOTRUN -> [SKIP][130] ([i915#13046] / [i915#5354]) +6 other tests skip
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html

  * igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot:
    - shard-dg2:          NOTRUN -> [SKIP][131] ([i915#9067])
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_cursor_legacy@modeset-atomic-cursor-hotspot.html

  * igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
    - shard-dg2:          NOTRUN -> [SKIP][132] ([i915#9833])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html

  * igt@kms_display_modes@mst-extended-mode-negative:
    - shard-dg2:          NOTRUN -> [SKIP][133] ([i915#8588])
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_display_modes@mst-extended-mode-negative.html

  * igt@kms_dp_linktrain_fallback@dp-fallback:
    - shard-tglu-1:       NOTRUN -> [SKIP][134] ([i915#12402])
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_dp_linktrain_fallback@dp-fallback.html

  * igt@kms_dsc@dsc-basic:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#3555] / [i915#3840])
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-fractional-bpp:
    - shard-tglu:         NOTRUN -> [SKIP][136] ([i915#3840])
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@kms_dsc@dsc-fractional-bpp.html

  * igt@kms_dsc@dsc-fractional-bpp-with-bpc:
    - shard-dg1:          NOTRUN -> [SKIP][137] ([i915#3840])
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_dsc@dsc-fractional-bpp-with-bpc.html

  * igt@kms_dsc@dsc-with-output-formats:
    - shard-rkl:          NOTRUN -> [SKIP][138] ([i915#3555] / [i915#3840]) +1 other test skip
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_dsc@dsc-with-output-formats.html

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

  * igt@kms_feature_discovery@display-2x:
    - shard-tglu-1:       NOTRUN -> [SKIP][140] ([i915#1839])
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_feature_discovery@display-2x.html

  * igt@kms_feature_discovery@display-3x:
    - shard-rkl:          NOTRUN -> [SKIP][141] ([i915#1839])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_feature_discovery@display-3x.html
    - shard-tglu:         NOTRUN -> [SKIP][142] ([i915#1839])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_feature_discovery@display-3x.html

  * igt@kms_feature_discovery@display-4x:
    - shard-dg2:          NOTRUN -> [SKIP][143] ([i915#1839])
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_feature_discovery@display-4x.html

  * igt@kms_feature_discovery@psr1:
    - shard-dg1:          NOTRUN -> [SKIP][144] ([i915#658])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_feature_discovery@psr1.html

  * igt@kms_feature_discovery@psr2:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([i915#658])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_feature_discovery@psr2.html

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

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

  * igt@kms_flip@2x-flip-vs-modeset-vs-hang:
    - shard-dg1:          NOTRUN -> [SKIP][148] ([i915#9934]) +2 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html

  * igt@kms_flip@2x-flip-vs-wf_vblank:
    - shard-tglu-1:       NOTRUN -> [SKIP][149] ([i915#3637]) +1 other test skip
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_flip@2x-flip-vs-wf_vblank.html

  * igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset:
    - shard-dg2:          NOTRUN -> [SKIP][150] ([i915#9934]) +4 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_flip@2x-single-buffer-flip-vs-dpms-off-vs-modeset.html

  * igt@kms_flip@2x-wf_vblank-ts-check-interruptible:
    - shard-rkl:          NOTRUN -> [SKIP][151] ([i915#9934]) +5 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html
    - shard-tglu:         NOTRUN -> [SKIP][152] ([i915#3637]) +4 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_flip@2x-wf_vblank-ts-check-interruptible.html

  * igt@kms_flip@absolute-wf_vblank-interruptible:
    - shard-rkl:          NOTRUN -> [DMESG-WARN][153] ([i915#12917] / [i915#12964]) +1 other test dmesg-warn
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_flip@absolute-wf_vblank-interruptible.html

  * igt@kms_flip@blocking-wf_vblank@a-hdmi-a2:
    - shard-rkl:          NOTRUN -> [FAIL][154] ([i915#11989])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-3/igt@kms_flip@blocking-wf_vblank@a-hdmi-a2.html

  * igt@kms_flip@plain-flip-fb-recreate@d-hdmi-a1:
    - shard-tglu:         NOTRUN -> [FAIL][155] ([i915#11989]) +4 other tests fail
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@kms_flip@plain-flip-fb-recreate@d-hdmi-a1.html

  * igt@kms_flip@plain-flip-ts-check:
    - shard-snb:          [PASS][156] -> [FAIL][157] ([i915#11989]) +3 other tests fail
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-snb7/igt@kms_flip@plain-flip-ts-check.html
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb2/igt@kms_flip@plain-flip-ts-check.html
    - shard-tglu-1:       NOTRUN -> [FAIL][158] ([i915#11989]) +2 other tests fail
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_flip@plain-flip-ts-check.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][159] ([i915#2672] / [i915#3555]) +2 other tests skip
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-32bpp-yftileccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-valid-mode:
    - shard-rkl:          NOTRUN -> [SKIP][160] ([i915#2672]) +4 other tests skip
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/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-ytilegen12rcccs-downscaling:
    - shard-dg2:          NOTRUN -> [SKIP][161] ([i915#2672] / [i915#3555] / [i915#5190])
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][162] ([i915#2672]) +3 other tests skip
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling:
    - shard-dg1:          NOTRUN -> [SKIP][163] ([i915#2672] / [i915#3555])
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode:
    - shard-dg1:          NOTRUN -> [SKIP][164] ([i915#2587] / [i915#2672])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-16bpp-4tile-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
    - shard-rkl:          NOTRUN -> [SKIP][165] ([i915#2672] / [i915#3555]) +4 other tests skip
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-tglu-1:       NOTRUN -> [SKIP][166] ([i915#2672] / [i915#3555]) +1 other test skip
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

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

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt:
    - shard-dg2:          [PASS][168] -> [FAIL][169] ([i915#6880]) +1 other test fail
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt.html
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt:
    - shard-dg2:          NOTRUN -> [SKIP][170] ([i915#5354]) +23 other tests skip
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][171] ([i915#8708]) +24 other tests skip
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-cur-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt:
    - shard-snb:          [PASS][172] -> [SKIP][173]
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-snb7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-tiling-4:
    - shard-rkl:          NOTRUN -> [SKIP][174] ([i915#5439]) +1 other test skip
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbc-tiling-4.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite:
    - shard-dg1:          NOTRUN -> [SKIP][175] ([i915#3458]) +2 other tests skip
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][176] +20 other tests skip
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-indfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
    - shard-dg1:          NOTRUN -> [SKIP][177] +8 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu:
    - shard-tglu-1:       NOTRUN -> [SKIP][178] +39 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff:
    - shard-rkl:          NOTRUN -> [SKIP][179] ([i915#1825]) +34 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc:
    - shard-rkl:          NOTRUN -> [SKIP][180] ([i915#3023]) +22 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@pipe-fbc-rte:
    - shard-dg2:          NOTRUN -> [SKIP][181] ([i915#9766])
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_frontbuffer_tracking@pipe-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move:
    - shard-dg2:          NOTRUN -> [SKIP][182] ([i915#3458]) +18 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-move.html

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render:
    - shard-tglu:         NOTRUN -> [SKIP][183] +32 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc:
    - shard-dg1:          NOTRUN -> [SKIP][184] ([i915#8708]) +4 other tests skip
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_frontbuffer_tracking@psr-rgb101010-draw-mmap-wc.html

  * igt@kms_hdr@invalid-metadata-sizes:
    - shard-dg2:          NOTRUN -> [SKIP][185] ([i915#3555] / [i915#8228]) +1 other test skip
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_hdr@invalid-metadata-sizes.html

  * igt@kms_hdr@static-toggle:
    - shard-dg1:          NOTRUN -> [SKIP][186] ([i915#3555] / [i915#8228])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_hdr@static-toggle.html

  * igt@kms_joiner@basic-ultra-joiner:
    - shard-dg2:          NOTRUN -> [SKIP][187] ([i915#12339])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_joiner@basic-ultra-joiner.html

  * igt@kms_joiner@invalid-modeset-force-big-joiner:
    - shard-rkl:          NOTRUN -> [SKIP][188] ([i915#12388])
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_joiner@invalid-modeset-force-big-joiner.html

  * igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c:
    - shard-dg2:          NOTRUN -> [SKIP][189] +10 other tests skip
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_pipe_b_c_ivb@disable-pipe-b-enable-pipe-c.html

  * igt@kms_plane_lowres@tiling-4:
    - shard-dg1:          NOTRUN -> [SKIP][190] ([i915#3555])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_plane_lowres@tiling-4.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-rkl:          NOTRUN -> [SKIP][191] ([i915#3555]) +3 other tests skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_multiple@tiling-yf:
    - shard-dg2:          NOTRUN -> [SKIP][192] ([i915#3555] / [i915#8806])
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_plane_multiple@tiling-yf.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-rkl:          NOTRUN -> [SKIP][193] ([i915#6953])
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c:
    - shard-tglu:         NOTRUN -> [SKIP][194] ([i915#12247]) +13 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-rotation@pipe-c.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation:
    - shard-tglu-1:       NOTRUN -> [SKIP][195] ([i915#3555]) +1 other test skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation.html

  * igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-a:
    - shard-rkl:          NOTRUN -> [SKIP][196] ([i915#12247]) +7 other tests skip
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_plane_scaling@plane-upscale-20x20-with-rotation@pipe-a.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25:
    - shard-tglu:         NOTRUN -> [SKIP][197] ([i915#12247] / [i915#6953])
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@kms_plane_scaling@planes-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d:
    - shard-tglu-1:       NOTRUN -> [SKIP][198] ([i915#12247]) +13 other tests skip
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-20x20@pipe-d.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#12247] / [i915#6953] / [i915#9423])
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a:
    - shard-dg2:          NOTRUN -> [SKIP][200] ([i915#12247]) +7 other tests skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-a.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25:
    - shard-rkl:          NOTRUN -> [SKIP][201] ([i915#12247] / [i915#6953])
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-25.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25:
    - shard-dg2:          NOTRUN -> [SKIP][202] ([i915#12247] / [i915#3555] / [i915#9423])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25.html

  * igt@kms_pm_backlight@basic-brightness:
    - shard-rkl:          NOTRUN -> [SKIP][203] ([i915#5354])
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_backlight@brightness-with-dpms:
    - shard-dg1:          NOTRUN -> [SKIP][204] ([i915#12343])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_pm_backlight@brightness-with-dpms.html

  * igt@kms_pm_backlight@fade-with-suspend:
    - shard-tglu-1:       NOTRUN -> [SKIP][205] ([i915#9812])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_pm_backlight@fade-with-suspend.html

  * igt@kms_pm_dc@dc5-retention-flops:
    - shard-rkl:          NOTRUN -> [SKIP][206] ([i915#3828])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_pm_dc@dc5-retention-flops.html

  * igt@kms_pm_dc@dc6-dpms:
    - shard-dg2:          NOTRUN -> [SKIP][207] ([i915#5978])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_pm_dc@dc6-dpms.html

  * igt@kms_pm_dc@dc9-dpms:
    - shard-rkl:          NOTRUN -> [SKIP][208] ([i915#4281])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_pm_dc@dc9-dpms.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-dg2:          NOTRUN -> [SKIP][209] ([i915#9519])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_pm_rpm@dpms-non-lpsp:
    - shard-dg2:          [PASS][210] -> [SKIP][211] ([i915#9519])
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-5/igt@kms_pm_rpm@dpms-non-lpsp.html
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-8/igt@kms_pm_rpm@dpms-non-lpsp.html

  * igt@kms_pm_rpm@modeset-lpsp-stress-no-wait:
    - shard-rkl:          [PASS][212] -> [SKIP][213] ([i915#9519])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-rkl-2/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-5/igt@kms_pm_rpm@modeset-lpsp-stress-no-wait.html

  * igt@kms_pm_rpm@modeset-non-lpsp:
    - shard-rkl:          NOTRUN -> [SKIP][214] ([i915#9519])
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp.html

  * igt@kms_prime@basic-crc-hybrid:
    - shard-dg1:          NOTRUN -> [SKIP][215] ([i915#6524])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_prime@basic-crc-hybrid.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf:
    - shard-tglu:         NOTRUN -> [SKIP][216] ([i915#11520]) +3 other tests skip
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@kms_psr2_sf@fbc-pr-overlay-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf:
    - shard-rkl:          NOTRUN -> [SKIP][217] ([i915#11520]) +8 other tests skip
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_psr2_sf@fbc-pr-overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf:
    - shard-dg1:          NOTRUN -> [SKIP][218] ([i915#11520]) +1 other test skip
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_psr2_sf@fbc-psr2-cursor-plane-update-sf.html

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
    - shard-tglu-1:       NOTRUN -> [SKIP][219] ([i915#11520]) +2 other tests skip
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area:
    - shard-dg2:          NOTRUN -> [SKIP][220] ([i915#11520]) +8 other tests skip
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
    - shard-snb:          NOTRUN -> [SKIP][221] ([i915#11520]) +4 other tests skip
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb7/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-dg2:          NOTRUN -> [SKIP][222] ([i915#9683])
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-nv12:
    - shard-tglu-1:       NOTRUN -> [SKIP][223] ([i915#9683])
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_psr2_su@page_flip-nv12.html

  * igt@kms_psr@fbc-pr-cursor-plane-onoff:
    - shard-dg1:          NOTRUN -> [SKIP][224] ([i915#1072] / [i915#9732]) +4 other tests skip
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_psr@fbc-pr-cursor-plane-onoff.html

  * igt@kms_psr@fbc-pr-sprite-plane-onoff:
    - shard-tglu-1:       NOTRUN -> [SKIP][225] ([i915#9732]) +7 other tests skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_psr@fbc-pr-sprite-plane-onoff.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-glk:          NOTRUN -> [SKIP][226] +36 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk6/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_psr@pr-sprite-mmap-gtt:
    - shard-rkl:          NOTRUN -> [SKIP][227] ([i915#1072] / [i915#9732]) +21 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_psr@pr-sprite-mmap-gtt.html

  * igt@kms_psr@psr-primary-page-flip:
    - shard-tglu:         NOTRUN -> [SKIP][228] ([i915#9732]) +6 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@kms_psr@psr-primary-page-flip.html

  * igt@kms_psr@psr-sprite-blt:
    - shard-snb:          NOTRUN -> [SKIP][229] +149 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb7/igt@kms_psr@psr-sprite-blt.html

  * igt@kms_psr@psr2-cursor-blt:
    - shard-dg2:          NOTRUN -> [SKIP][230] ([i915#1072] / [i915#9732]) +18 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_psr@psr2-cursor-blt.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-dg2:          NOTRUN -> [SKIP][231] ([i915#9685])
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

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

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0:
    - shard-tglu-1:       NOTRUN -> [SKIP][233] ([i915#5289]) +1 other test skip
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-0.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - shard-dg2:          NOTRUN -> [SKIP][234] ([i915#12755]) +1 other test skip
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

  * igt@kms_scaling_modes@scaling-mode-none:
    - shard-dg2:          NOTRUN -> [SKIP][235] ([i915#3555]) +6 other tests skip
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@kms_scaling_modes@scaling-mode-none.html

  * igt@kms_setmode@clone-exclusive-crtc:
    - shard-tglu:         NOTRUN -> [SKIP][236] ([i915#3555])
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_setmode@clone-exclusive-crtc.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-tglu:         NOTRUN -> [SKIP][237] ([i915#8623])
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@kms_tiled_display@basic-test-pattern.html
    - shard-rkl:          NOTRUN -> [SKIP][238] ([i915#8623])
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2:
    - shard-glk:          NOTRUN -> [INCOMPLETE][239] ([i915#12276])
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk8/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-2.html

  * igt@kms_vrr@lobf:
    - shard-dg1:          NOTRUN -> [SKIP][240] ([i915#11920])
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-17/igt@kms_vrr@lobf.html

  * igt@kms_writeback@writeback-check-output-xrgb2101010:
    - shard-dg2:          NOTRUN -> [SKIP][241] ([i915#2437] / [i915#9412])
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_writeback@writeback-check-output-xrgb2101010.html

  * igt@kms_writeback@writeback-fb-id-xrgb2101010:
    - shard-rkl:          NOTRUN -> [SKIP][242] ([i915#2437] / [i915#9412])
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@kms_writeback@writeback-fb-id-xrgb2101010.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-tglu-1:       NOTRUN -> [SKIP][243] ([i915#2437])
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@kms_writeback@writeback-invalid-parameters.html

  * igt@kms_writeback@writeback-pixel-formats:
    - shard-glk:          NOTRUN -> [SKIP][244] ([i915#2437])
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk6/igt@kms_writeback@writeback-pixel-formats.html

  * igt@perf@per-context-mode-unprivileged:
    - shard-rkl:          NOTRUN -> [SKIP][245] ([i915#2435])
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-2/igt@perf@per-context-mode-unprivileged.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-dg2:          NOTRUN -> [SKIP][246] ([i915#8516])
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@perf_pmu@rc6-all-gts.html

  * igt@prime_mmap@test_aperture_limit:
    - shard-dg2:          NOTRUN -> [WARN][247] ([i915#9351])
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@prime_mmap@test_aperture_limit.html

  * igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem:
    - shard-dg2:          NOTRUN -> [CRASH][248] ([i915#9351])
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@prime_mmap@test_aperture_limit@test_aperture_limit-smem.html

  * igt@prime_vgem@basic-fence-read:
    - shard-rkl:          NOTRUN -> [SKIP][249] ([i915#3291] / [i915#3708])
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][250] ([i915#3708] / [i915#4077])
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@prime_vgem@basic-gtt.html

  * igt@prime_vgem@fence-flip-hang:
    - shard-rkl:          NOTRUN -> [SKIP][251] ([i915#3708])
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-7/igt@prime_vgem@fence-flip-hang.html

  * igt@prime_vgem@fence-write-hang:
    - shard-dg2:          NOTRUN -> [SKIP][252] ([i915#3708])
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@prime_vgem@fence-write-hang.html

  * igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-6:
    - shard-tglu:         NOTRUN -> [FAIL][253] ([i915#12910]) +9 other tests fail
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@sriov_basic@enable-vfs-autoprobe-off@numvfs-6.html

  * igt@sriov_basic@enable-vfs-autoprobe-on:
    - shard-dg2:          NOTRUN -> [SKIP][254] ([i915#9917]) +1 other test skip
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@sriov_basic@enable-vfs-autoprobe-on.html

  * igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-2:
    - shard-tglu-1:       NOTRUN -> [FAIL][255] ([i915#12910]) +8 other tests fail
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-1/igt@sriov_basic@enable-vfs-bind-unbind-each@numvfs-2.html

  
#### Possible fixes ####

  * igt@gem_lmem_swapping@smem-oom@lmem0:
    - shard-dg2:          [TIMEOUT][256] ([i915#5493]) -> [PASS][257] +1 other test pass
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-10/igt@gem_lmem_swapping@smem-oom@lmem0.html
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@gem_lmem_swapping@smem-oom@lmem0.html

  * igt@i915_module_load@load:
    - shard-dg2:          ([PASS][258], [PASS][259], [PASS][260], [PASS][261], [PASS][262], [PASS][263], [PASS][264], [PASS][265], [PASS][266], [PASS][267], [PASS][268], [PASS][269], [DMESG-WARN][270], [PASS][271], [PASS][272], [DMESG-WARN][273], [PASS][274], [PASS][275], [PASS][276], [PASS][277], [PASS][278], [PASS][279]) ([i915#13368]) -> ([PASS][280], [PASS][281], [PASS][282], [PASS][283], [PASS][284], [PASS][285], [PASS][286], [PASS][287], [PASS][288], [PASS][289], [PASS][290], [PASS][291], [PASS][292], [PASS][293], [PASS][294], [PASS][295], [PASS][296], [PASS][297], [PASS][298], [PASS][299], [PASS][300], [PASS][301], [PASS][302], [PASS][303])
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-7/igt@i915_module_load@load.html
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-4/igt@i915_module_load@load.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-11/igt@i915_module_load@load.html
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-8/igt@i915_module_load@load.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-10/igt@i915_module_load@load.html
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-11/igt@i915_module_load@load.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-8/igt@i915_module_load@load.html
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-8/igt@i915_module_load@load.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-10/igt@i915_module_load@load.html
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-1/igt@i915_module_load@load.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-1/igt@i915_module_load@load.html
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-6/igt@i915_module_load@load.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-2/igt@i915_module_load@load.html
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-2/igt@i915_module_load@load.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-6/igt@i915_module_load@load.html
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-2/igt@i915_module_load@load.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-2/igt@i915_module_load@load.html
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-5/igt@i915_module_load@load.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-3/igt@i915_module_load@load.html
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-3/igt@i915_module_load@load.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-5/igt@i915_module_load@load.html
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-4/igt@i915_module_load@load.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@i915_module_load@load.html
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-7/igt@i915_module_load@load.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-5/igt@i915_module_load@load.html
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-5/igt@i915_module_load@load.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-1/igt@i915_module_load@load.html
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-1/igt@i915_module_load@load.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@i915_module_load@load.html
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-7/igt@i915_module_load@load.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-4/igt@i915_module_load@load.html
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-11/igt@i915_module_load@load.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@i915_module_load@load.html
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-11/igt@i915_module_load@load.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-8/igt@i915_module_load@load.html
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@i915_module_load@load.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-8/igt@i915_module_load@load.html
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-1/igt@i915_module_load@load.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@i915_module_load@load.html
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@i915_module_load@load.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-6/igt@i915_module_load@load.html
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-2/igt@i915_module_load@load.html
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-8/igt@i915_module_load@load.html
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@i915_module_load@load.html
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-11/igt@i915_module_load@load.html
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@i915_module_load@load.html

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-glk:          [ABORT][304] -> [PASS][305]
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-glk8/igt@i915_module_load@reload-with-fault-injection.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk6/igt@i915_module_load@reload-with-fault-injection.html

  * igt@kms_atomic_transition@modeset-transition-nonblocking-fencing:
    - shard-glk:          [FAIL][306] ([i915#12238]) -> [PASS][307]
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-glk8/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing.html
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk2/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing.html

  * igt@kms_atomic_transition@modeset-transition-nonblocking-fencing@2x-outputs:
    - shard-glk:          [FAIL][308] ([i915#11859]) -> [PASS][309]
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-glk8/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing@2x-outputs.html
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk2/igt@kms_atomic_transition@modeset-transition-nonblocking-fencing@2x-outputs.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
    - shard-snb:          [SKIP][310] -> [PASS][311]
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-snb7/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb7/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          [FAIL][312] ([i915#2346]) -> [PASS][313]
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-glk1/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk4/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor-toggle:
    - shard-mtlp:         [FAIL][314] ([i915#2346]) -> [PASS][315]
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-mtlp-6/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-mtlp-5/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html

  * igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1:
    - shard-snb:          [FAIL][316] ([i915#11989]) -> [PASS][317] +1 other test pass
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-snb7/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-snb2/igt@kms_flip@2x-flip-vs-absolute-wf_vblank-interruptible@ab-vga1-hdmi-a1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1:
    - shard-mtlp:         [FAIL][318] ([i915#12741]) -> [PASS][319]
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-mtlp-1/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-mtlp-1/igt@kms_flip@flip-vs-blocking-wf-vblank@a-edp1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1:
    - shard-mtlp:         [FAIL][320] ([i915#11989]) -> [PASS][321] +1 other test pass
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-mtlp-1/igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-mtlp-1/igt@kms_flip@flip-vs-blocking-wf-vblank@c-edp1.html

  * igt@kms_flip@flip-vs-blocking-wf-vblank@d-edp1:
    - shard-mtlp:         [FAIL][322] ([i915#11989] / [i915#12740]) -> [PASS][323] +1 other test pass
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-mtlp-1/igt@kms_flip@flip-vs-blocking-wf-vblank@d-edp1.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-mtlp-1/igt@kms_flip@flip-vs-blocking-wf-vblank@d-edp1.html

  * igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1:
    - shard-tglu:         [FAIL][324] ([i915#11989]) -> [PASS][325] +1 other test pass
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-tglu-4/igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-10/igt@kms_flip@wf_vblank-ts-check-interruptible@a-hdmi-a1.html

  * igt@kms_joiner@basic-force-big-joiner:
    - shard-dg2:          [SKIP][326] ([i915#12388]) -> [PASS][327]
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-3/igt@kms_joiner@basic-force-big-joiner.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_joiner@basic-force-big-joiner.html

  * igt@kms_pm_rpm@modeset-non-lpsp-stress:
    - shard-dg2:          [SKIP][328] ([i915#9519]) -> [PASS][329] +1 other test pass
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-8/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-1/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
    - shard-rkl:          [SKIP][330] ([i915#9519]) -> [PASS][331] +1 other test pass
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-rkl-2/igt@kms_pm_rpm@modeset-non-lpsp-stress.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-1/igt@kms_pm_rpm@modeset-non-lpsp-stress.html

  * igt@kms_rotation_crc@primary-rotation-90:
    - shard-rkl:          [DMESG-WARN][332] ([i915#12964]) -> [PASS][333]
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-rkl-2/igt@kms_rotation_crc@primary-rotation-90.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-1/igt@kms_rotation_crc@primary-rotation-90.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1:
    - shard-glk:          [INCOMPLETE][334] ([i915#12276]) -> [PASS][335]
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-glk2/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-glk8/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-a-hdmi-a-1.html

  * igt@perf_pmu@render-node-busy-idle:
    - shard-mtlp:         [FAIL][336] ([i915#4349]) -> [PASS][337] +1 other test pass
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-mtlp-2/igt@perf_pmu@render-node-busy-idle.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-mtlp-4/igt@perf_pmu@render-node-busy-idle.html

  
#### Warnings ####

  * igt@i915_module_load@reload-with-fault-injection:
    - shard-tglu:         [ABORT][338] ([i915#12817] / [i915#9820]) -> [ABORT][339] ([i915#10887] / [i915#12817] / [i915#9820])
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-tglu-2/igt@i915_module_load@reload-with-fault-injection.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-tglu-3/igt@i915_module_load@reload-with-fault-injection.html
    - shard-mtlp:         [ABORT][340] ([i915#10131] / [i915#9820]) -> [ABORT][341] ([i915#10131] / [i915#10887])
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-mtlp-2/igt@i915_module_load@reload-with-fault-injection.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-mtlp-4/igt@i915_module_load@reload-with-fault-injection.html

  * igt@i915_pm_rpm@system-suspend:
    - shard-rkl:          [SKIP][342] ([i915#13328]) -> [DMESG-WARN][343] ([i915#12964])
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-rkl-2/igt@i915_pm_rpm@system-suspend.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-rkl-1/igt@i915_pm_rpm@system-suspend.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-dg1:          [SKIP][344] ([i915#4538] / [i915#5286]) -> [SKIP][345] ([i915#4423] / [i915#4538] / [i915#5286])
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg1-12/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-14/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
    - shard-mtlp:         [DMESG-FAIL][346] ([i915#13314]) -> [DMESG-FAIL][347] ([i915#11627] / [i915#13314])
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-mtlp-3/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-mtlp-2/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_content_protection@atomic:
    - shard-dg2:          [SKIP][348] ([i915#7118] / [i915#9424]) -> [TIMEOUT][349] ([i915#7173])
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-3/igt@kms_content_protection@atomic.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-10/igt@kms_content_protection@atomic.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size:
    - shard-dg1:          [SKIP][350] ([i915#4423]) -> [SKIP][351] +1 other test skip
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg1-13/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-18/igt@kms_cursor_legacy@cursorb-vs-flipb-varying-size.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt:
    - shard-dg2:          [SKIP][352] ([i915#10433] / [i915#3458]) -> [SKIP][353] ([i915#3458]) +2 other tests skip
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-4/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-dg1:          [SKIP][354] ([i915#8708]) -> [SKIP][355] ([i915#4423] / [i915#8708])
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg1-13/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg1-12/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu:
    - shard-dg2:          [SKIP][356] ([i915#3458]) -> [SKIP][357] ([i915#10433] / [i915#3458]) +3 other tests skip
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-3/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-4/igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-mmap-cpu.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-dg2:          [SKIP][358] ([i915#13331]) -> [SKIP][359] ([i915#12713])
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15873/shard-dg2-10/igt@kms_hdr@brightness-with-hdr.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_142853v1/shard-dg2-3/igt@kms_hdr@brightness-with-hdr.html

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

  [i915#10131]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10131
  [i915#10307]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10307
  [i915#10433]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10433
  [i915#10434]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10434
  [i915#10656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10656
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#10887]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10887
  [i915#1099]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1099
  [i915#11078]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11078
  [i915#11520]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11520
  [i915#11616]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11616
  [i915#11627]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11627
  [i915#11681]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11681
  [i915#11859]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11859
  [i915#11920]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11920
  [i915#11943]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11943
  [i915#11989]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11989
  [i915#12238]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12238
  [i915#12247]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12247
  [i915#12276]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12276
  [i915#12313]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12313
  [i915#12339]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12339
  [i915#12343]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12343
  [i915#12388]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12388
  [i915#12392]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12392
  [i915#12402]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12402
  [i915#12713]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12713
  [i915#12739]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12739
  [i915#12740]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12740
  [i915#12741]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12741
  [i915#12755]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12755
  [i915#12817]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12817
  [i915#12910]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12910
  [i915#12917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12917
  [i915#12964]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12964
  [i915#13033]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13033
  [i915#13045]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13045
  [i915#13046]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13046
  [i915#13049]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13049
  [i915#13197]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13197
  [i915#13287]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13287
  [i915#13314]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13314
  [i915#13328]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13328
  [i915#13331]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13331
  [i915#13368]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13368
  [i915#1769]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1839
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2346
  [i915#2435]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2435
  [i915#2437]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2527
  [i915#2587]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2587
  [i915#2672]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2672
  [i915#280]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/280
  [i915#2856]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2856
  [i915#3023]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3023
  [i915#3116]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3299
  [i915#3323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3323
  [i915#3458]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3539
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3591]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3638
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#3828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3828
  [i915#3840]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3840
  [i915#3936]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3936
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4270]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4270
  [i915#4281]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4281
  [i915#4349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4387
  [i915#4423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4423
  [i915#4525]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4525
  [i915#4537]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4812
  [i915#4852]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4880
  [i915#4881]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4881
  [i915#4885]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4885
  [i915#4958]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4958
  [i915#5107]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5107
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#5286]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#5439]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5439
  [i915#5493]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5493
  [i915#5507]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5507
  [i915#5882]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5882
  [i915#5956]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5956
  [i915#5978]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5978
  [i915#6095]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6095
  [i915#6188]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6188
  [i915#6335]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6335
  [i915#6344]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6344
  [i915#6524]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/658
  [i915#6590]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6590
  [i915#6621]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6621
  [i915#6880]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6880
  [i915#6953]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6953
  [i915#7118]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7118
  [i915#7173]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7173
  [i915#7213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7213
  [i915#7297]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7297
  [i915#7697]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7697
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#7790]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7790
  [i915#7828]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7975
  [i915#8213]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8228
  [i915#8381]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8381
  [i915#8399]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8399
  [i915#8411]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8428
  [i915#8516]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8555
  [i915#8588]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8588
  [i915#8623]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8709
  [i915#8806]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8806
  [i915#9053]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9053
  [i915#9067]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9067
  [i915#9100]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9100
  [i915#9323]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9323
  [i915#9351]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9351
  [i915#9412]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9412
  [i915#9423]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9424
  [i915#9519]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9519
  [i915#9531]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9531
  [i915#9683]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9685
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732
  [i915#9766]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9766
  [i915#9812]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9812
  [i915#9820]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9820
  [i915#9833]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9833
  [i915#9878]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9878
  [i915#9917]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9917
  [i915#9934]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9934
  [i915#9979]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9979


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

  * Linux: CI_DRM_15873 -> Patchwork_142853v1

  CI-20190529: 20190529
  CI_DRM_15873: a5b4c40929f3263a92e34e3f6b3c3c0de57e0e58 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8166: 197cca38ae5c494511843112d43351aeab2314be @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_142853v1: a5b4c40929f3263a92e34e3f6b3c3c0de57e0e58 @ 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_142853v1/index.html

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

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

end of thread, other threads:[~2024-12-20 19:50 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-19 21:48 [PATCH 0/3] drm/i915/display: Reduce global state funcs boilerplate Gustavo Sousa
2024-12-19 21:48 ` [PATCH 1/3] drm/i915/display: Do not assume zero offset when duplicating global state Gustavo Sousa
2024-12-19 22:43   ` Cavitt, Jonathan
2024-12-20  9:11   ` Ville Syrjälä
2024-12-20 13:37     ` Gustavo Sousa
2024-12-19 21:48 ` [PATCH 2/3] drm/i915/display: Add infra to reduce global state funcs boilerplate Gustavo Sousa
2024-12-19 22:44   ` Cavitt, Jonathan
2024-12-20 13:43     ` Gustavo Sousa
2024-12-20  8:50   ` Jani Nikula
2024-12-20 13:54     ` Gustavo Sousa
2024-12-20  8:51   ` Jani Nikula
2024-12-20 13:56     ` Gustavo Sousa
2024-12-20  9:23   ` Ville Syrjälä
2024-12-20 14:02     ` Gustavo Sousa
2024-12-19 21:48 ` [PATCH 3/3] drm/i915/display: Use INTEL_GLOBAL_STATE_DEFAULTS Gustavo Sousa
2024-12-19 22:45   ` Cavitt, Jonathan
2024-12-20 14:08     ` Gustavo Sousa
2024-12-19 22:23 ` ✗ Fi.CI.CHECKPATCH: warning for drm/i915/display: Reduce global state funcs boilerplate Patchwork
2024-12-19 22:23 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-12-19 23:00 ` ✓ i915.CI.BAT: success " Patchwork
2024-12-20 19:50 ` ✓ i915.CI.Full: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox