Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Expose modifiers/formats supported by async flips
@ 2024-11-05 10:26 Arun R Murthy
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
                   ` (7 more replies)
  0 siblings, 8 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

All of the formats/modifiers supported by the plane during synchronous
flips are nor supported by asynchronous flips. The formats/modifiers
exposed to user by IN_FORMATS exposes all formats/modifiers supported by
plane and this list varies for async flips. If the async flip supported
formats/modifiers are exposed to the user, user based on this list can
take decision to proceed or not and avoid flip failures during async
flips.
Discussion around this can be located @
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29618#note_2487123
Userspace implementation for IN_FORMARTS_ASYNC under review @
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063

Arun R Murthy (4):
  drm/plane: Add new plane property IN_FORMATS_ASYNC
  drm/i915/fb: Add async field to the modifiers description
  drm/i915/display: Add async_flip flag in get_modifiers
  drm/i915/display: Add async supported formats/modifiers

 drivers/gpu/drm/drm_mode_config.c             |  7 ++
 drivers/gpu/drm/drm_plane.c                   | 73 +++++++++++++++++++
 drivers/gpu/drm/i915/display/i9xx_plane.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_cursor.c   |  2 +-
 drivers/gpu/drm/i915/display/intel_fb.c       | 53 ++++++++++++--
 drivers/gpu/drm/i915/display/intel_fb.h       |  4 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   |  2 +-
 .../drm/i915/display/skl_universal_plane.c    | 25 ++++++-
 include/drm/drm_mode_config.h                 |  6 ++
 include/drm/drm_plane.h                       | 10 +++
 10 files changed, 172 insertions(+), 12 deletions(-)

-- 
2.25.1


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

* [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-06 14:00   ` Ville Syrjälä
  2024-11-05 10:26 ` [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description Arun R Murthy
                   ` (6 subsequent siblings)
  7 siblings, 1 reply; 19+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

There exists a property IN_FORMATS which exposes the plane supported
modifiers/formats to the user. In some platforms when asynchronous flips
are used all of modifiers/formats mentioned in IN_FORMATS are not
supported. This patch adds a new plane property IN_FORMATS_ASYNC to
expose the async flips supported modifiers/formats so that user can use
this information ahead and done flips with unsupported
formats/modifiers. This will save flips failures.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/drm_mode_config.c |  7 +++
 drivers/gpu/drm/drm_plane.c       | 73 +++++++++++++++++++++++++++++++
 include/drm/drm_mode_config.h     |  6 +++
 include/drm/drm_plane.h           | 10 +++++
 4 files changed, 96 insertions(+)

diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 37d2e0a4ef4b..cff189a2e751 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -379,6 +379,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
 		return -ENOMEM;
 	dev->mode_config.size_hints_property = prop;
 
+	prop = drm_property_create(dev,
+				   DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+				   "IN_FORMATS_ASYNC", 0);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.async_modifiers_property = prop;
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index a28b22fdd7a4..01b8e6932fda 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -141,6 +141,12 @@
  *     various bugs in this area with inconsistencies between the capability
  *     flag and per-plane properties.
  *
+ * IN_FORMATS_ASYNC:
+ *     Blob property which contains the set of buffer format and modifier
+ *     pairs supported by this plane for asynchronous flips. The blob is a struct
+ *     drm_format_modifier_blob. Without this property the plane doesn't
+ *     support buffers with modifiers. Userspace cannot change this property.
+ *
  * SIZE_HINTS:
  *     Blob property which contains the set of recommended plane size
  *     which can used for simple "cursor like" use cases (eg. no scaling).
@@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
 	return 0;
 }
 
+static int create_in_format_async_blob(struct drm_device *dev, struct drm_plane *plane)
+{
+	const struct drm_mode_config *config = &dev->mode_config;
+	struct drm_property_blob *blob;
+	struct drm_format_modifier *async_mod;
+	size_t blob_size, async_formats_size, async_modifiers_size;
+	struct drm_format_modifier_blob *blob_data;
+	unsigned int i, j;
+
+	async_formats_size = sizeof(__u32) * plane->async_format_count;
+	if (WARN_ON(!async_formats_size)) {
+		/* 0 formats are never expected */
+		return 0;
+	}
+
+	async_modifiers_size =
+		sizeof(struct drm_format_modifier) * plane->async_modifier_count;
+
+	blob_size = sizeof(struct drm_format_modifier_blob);
+	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
+	 * should be naturally aligned to 8B.
+	 */
+	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
+	blob_size += ALIGN(async_formats_size, 8);
+	blob_size += async_modifiers_size;
+
+	blob = drm_property_create_blob(dev, blob_size, NULL);
+	if (IS_ERR(blob))
+		return -1;
+
+	blob_data = blob->data;
+	blob_data->version = FORMAT_BLOB_CURRENT;
+	blob_data->count_formats = plane->async_format_count;
+	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
+	blob_data->count_modifiers = plane->async_modifier_count;
+
+	blob_data->modifiers_offset =
+		ALIGN(blob_data->formats_offset + async_formats_size, 8);
+
+	memcpy(formats_ptr(blob_data), plane->async_format_types, async_formats_size);
+
+	async_mod = modifiers_ptr(blob_data);
+	for (i = 0; i < plane->async_modifier_count; i++) {
+		for (j = 0; j < plane->async_format_count; j++) {
+			if (!plane->funcs->format_mod_supported ||
+			    plane->funcs->format_mod_supported(plane,
+							       plane->async_format_types[j],
+							       plane->async_modifiers[i])) {
+				async_mod->formats |= 1ULL << j;
+			}
+		}
+
+		async_mod->modifier = plane->async_modifiers[i];
+		async_mod->offset = 0;
+		async_mod->pad = 0;
+		async_mod++;
+	}
+
+	drm_object_attach_property(&plane->base, config->async_modifiers_property,
+				   blob->base.id);
+
+	return 0;
+}
+
 /**
  * DOC: hotspot properties
  *
@@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct drm_device *dev,
 	if (format_modifier_count)
 		create_in_format_blob(dev, plane);
 
+	if (plane->async_modifier_count)
+		create_in_format_async_blob(dev, plane);
+
 	return 0;
 }
 
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 271765e2e9f2..0c116d6dfd27 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -936,6 +936,12 @@ struct drm_mode_config {
 	 */
 	struct drm_property *modifiers_property;
 
+	/**
+	 * @async_modifiers_property: Plane property to list support modifier/format
+	 * combination for asynchronous flips.
+	 */
+	struct drm_property *async_modifiers_property;
+
 	/**
 	 * @size_hints_property: Plane SIZE_HINTS property.
 	 */
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index dd718c62ac31..d9571265251a 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -658,11 +658,21 @@ struct drm_plane {
 	 */
 	bool format_default;
 
+	/** @format_types: array of formats supported by this plane */
+	uint32_t *async_format_types;
+	/** @format_count: Size of the array pointed at by @format_types. */
+	unsigned int async_format_count;
+
 	/** @modifiers: array of modifiers supported by this plane */
 	uint64_t *modifiers;
 	/** @modifier_count: Size of the array pointed at by @modifier_count. */
 	unsigned int modifier_count;
 
+	/** @modifiers: array of modifiers supported by this plane */
+	uint64_t *async_modifiers;
+	/** @modifier_count: Size of the array pointed at by @modifier_count. */
+	unsigned int async_modifier_count;
+
 	/**
 	 * @crtc:
 	 *
-- 
2.25.1


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

* [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-05 10:26 ` [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers Arun R Murthy
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Few of the modifiers are not supported with async flip. Add an element
async_flip to say if the modifier supports asynchronous flips.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/i915/display/intel_fb.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index 6a7060889f40..f05e0c444618 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -231,6 +231,7 @@ struct intel_modifier_desc {
 		u8 packed_aux_planes:4;
 		u8 planar_aux_planes:4;
 	} ccs;
+	bool async_flip;
 };
 
 #define INTEL_PLANE_CAP_CCS_MASK	(INTEL_PLANE_CAP_CCS_RC | \
@@ -247,10 +248,12 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.modifier = I915_FORMAT_MOD_4_TILED_LNL_CCS,
 		.display_ver = { 20, -1 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED_BMG_CCS,
 		.display_ver = { 14, -1 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4 | INTEL_PLANE_CAP_NEED64K_PHYS,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED_MTL_MC_CCS,
 		.display_ver = { 14, 14 },
@@ -268,6 +271,7 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(gen12_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC,
 		.display_ver = { 14, 14 },
@@ -293,10 +297,12 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.modifier = I915_FORMAT_MOD_4_TILED_DG2_RC_CCS,
 		.display_ver = { 13, 13 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4 | INTEL_PLANE_CAP_CCS_RC,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_4_TILED,
 		.display_ver = { 13, -1 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_4,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED_GEN12_MC_CCS,
 		.display_ver = { 12, 13 },
@@ -314,6 +320,7 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(gen12_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS_CC,
 		.display_ver = { 12, 13 },
@@ -331,6 +338,7 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(skl_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED_CCS,
 		.display_ver = { 9, 11 },
@@ -339,21 +347,26 @@ static const struct intel_modifier_desc intel_modifiers[] = {
 		.ccs.packed_aux_planes = BIT(1),
 
 		FORMAT_OVERRIDE(skl_ccs_formats),
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Yf_TILED,
 		.display_ver = { 9, 11 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_Yf,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_Y_TILED,
 		.display_ver = { 9, 13 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_Y,
+		.async_flip = true,
 	}, {
 		.modifier = I915_FORMAT_MOD_X_TILED,
 		.display_ver = { 0, 29 },
 		.plane_caps = INTEL_PLANE_CAP_TILING_X,
+		.async_flip = true,
 	}, {
 		.modifier = DRM_FORMAT_MOD_LINEAR,
 		.display_ver = DISPLAY_VER_ALL,
+		.async_flip = true,
 	},
 };
 
-- 
2.25.1


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

* [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
  2024-11-05 10:26 ` [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-05 10:26 ` [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers Arun R Murthy
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

get_modifiers will get the list of modifiers supported by the plane. Add
a flag async_flip to fetch only the async_flip supported modifiers.
Also expose function to get the number of modifiers supported by the
platform.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/i915/display/i9xx_plane.c     |  2 +-
 drivers/gpu/drm/i915/display/intel_cursor.c   |  2 +-
 drivers/gpu/drm/i915/display/intel_fb.c       | 40 +++++++++++++++----
 drivers/gpu/drm/i915/display/intel_fb.h       |  4 +-
 drivers/gpu/drm/i915/display/intel_sprite.c   |  2 +-
 .../drm/i915/display/skl_universal_plane.c    |  3 +-
 6 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/i9xx_plane.c b/drivers/gpu/drm/i915/display/i9xx_plane.c
index 17a1e3801a85..08d8bb6c770e 100644
--- a/drivers/gpu/drm/i915/display/i9xx_plane.c
+++ b/drivers/gpu/drm/i915/display/i9xx_plane.c
@@ -973,7 +973,7 @@ intel_primary_plane_create(struct drm_i915_private *dev_priv, enum pipe pipe)
 		plane->disable_flip_done = ilk_primary_disable_flip_done;
 	}
 
-	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X);
+	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X, false);
 
 	if (DISPLAY_VER(dev_priv) >= 5 || IS_G4X(dev_priv))
 		ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
diff --git a/drivers/gpu/drm/i915/display/intel_cursor.c b/drivers/gpu/drm/i915/display/intel_cursor.c
index 9ba77970dab7..a08f445fbcc7 100644
--- a/drivers/gpu/drm/i915/display/intel_cursor.c
+++ b/drivers/gpu/drm/i915/display/intel_cursor.c
@@ -1026,7 +1026,7 @@ intel_cursor_plane_create(struct drm_i915_private *dev_priv,
 	if (IS_I845G(dev_priv) || IS_I865G(dev_priv) || HAS_CUR_FBC(dev_priv))
 		cursor->cursor.size = ~0;
 
-	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_NONE);
+	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_NONE, false);
 
 	ret = drm_universal_plane_init(&dev_priv->drm, &cursor->base,
 				       0, &intel_cursor_plane_funcs,
diff --git a/drivers/gpu/drm/i915/display/intel_fb.c b/drivers/gpu/drm/i915/display/intel_fb.c
index f05e0c444618..fba1b6fb38ad 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.c
+++ b/drivers/gpu/drm/i915/display/intel_fb.c
@@ -554,7 +554,8 @@ static bool check_modifier_display_ver_range(const struct intel_modifier_desc *m
 
 static bool plane_has_modifier(struct drm_i915_private *i915,
 			       u8 plane_caps,
-			       const struct intel_modifier_desc *md)
+			       const struct intel_modifier_desc *md,
+			       bool is_async_flip)
 {
 	if (!IS_DISPLAY_VER(i915, md->display_ver.from, md->display_ver.until))
 		return false;
@@ -562,6 +563,9 @@ static bool plane_has_modifier(struct drm_i915_private *i915,
 	if (!plane_caps_contain_all(plane_caps, md->plane_caps))
 		return false;
 
+	if (!(is_async_flip && md->async_flip))
+		return false;
+
 	/*
 	 * Separate AuxCCS and Flat CCS modifiers to be run only on platforms
 	 * where supported.
@@ -581,26 +585,48 @@ static bool plane_has_modifier(struct drm_i915_private *i915,
 	return true;
 }
 
+/**
+ * intel_fb_plane_get_modifiers_count - return the number of supported modifiers for a
+ *					given platform and plane capabilities
+ * @i915: i915 device instance
+ * @plane_caps: capabilities for the plane the modifiers are queried for
+ * @async_flip: flag to convey modifiers that support async flip
+ *
+ * Returns:
+ * Returns the number for modifiers supported by the @i915 platform and @plane_caps
+ * with/without @async_flip.
+ */
+int intel_fb_plane_get_modifiers_count(struct drm_i915_private *i915,
+				       u8 plane_caps, bool async_flip)
+{
+	int count = 1;
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(intel_modifiers); i++) {
+		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i], async_flip))
+			count++;
+	}
+	return count;
+}
+
 /**
  * intel_fb_plane_get_modifiers: Get the modifiers for the given platform and plane capabilities
  * @i915: i915 device instance
  * @plane_caps: capabilities for the plane the modifiers are queried for
+ * @async_flip: flag to convey modifiers that support async flip
  *
  * Returns:
  * Returns the list of modifiers allowed by the @i915 platform and @plane_caps.
  * The caller must free the returned buffer.
  */
 u64 *intel_fb_plane_get_modifiers(struct drm_i915_private *i915,
-				  u8 plane_caps)
+				  u8 plane_caps, bool async_flip)
 {
 	u64 *list, *p;
 	int count = 1;		/* +1 for invalid modifier terminator */
 	int i;
 
-	for (i = 0; i < ARRAY_SIZE(intel_modifiers); i++) {
-		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i]))
-			count++;
-	}
+	count = intel_fb_plane_get_modifiers_count(i915, plane_caps, async_flip);
 
 	list = kmalloc_array(count, sizeof(*list), GFP_KERNEL);
 	if (drm_WARN_ON(&i915->drm, !list))
@@ -608,7 +634,7 @@ u64 *intel_fb_plane_get_modifiers(struct drm_i915_private *i915,
 
 	p = list;
 	for (i = 0; i < ARRAY_SIZE(intel_modifiers); i++) {
-		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i]))
+		if (plane_has_modifier(i915, plane_caps, &intel_modifiers[i], async_flip))
 			*p++ = intel_modifiers[i].modifier;
 	}
 	*p++ = DRM_FORMAT_MOD_INVALID;
diff --git a/drivers/gpu/drm/i915/display/intel_fb.h b/drivers/gpu/drm/i915/display/intel_fb.h
index d78993e5eb62..4ae7cc75fe77 100644
--- a/drivers/gpu/drm/i915/display/intel_fb.h
+++ b/drivers/gpu/drm/i915/display/intel_fb.h
@@ -41,8 +41,10 @@ bool intel_fb_is_tile4_modifier(u64 modifier);
 bool intel_fb_is_ccs_aux_plane(const struct drm_framebuffer *fb, int color_plane);
 int intel_fb_rc_ccs_cc_plane(const struct drm_framebuffer *fb);
 
+int intel_fb_plane_get_modifiers_count(struct drm_i915_private *i915,
+				       u8 plane_caps, bool async_flip);
 u64 *intel_fb_plane_get_modifiers(struct drm_i915_private *i915,
-				  u8 plane_caps);
+				  u8 plane_caps, bool async_flip);
 bool intel_fb_plane_supports_modifier(struct intel_plane *plane, u64 modifier);
 
 const struct drm_format_info *
diff --git a/drivers/gpu/drm/i915/display/intel_sprite.c b/drivers/gpu/drm/i915/display/intel_sprite.c
index e6fadcef58e0..d1c5a3a3f13e 100644
--- a/drivers/gpu/drm/i915/display/intel_sprite.c
+++ b/drivers/gpu/drm/i915/display/intel_sprite.c
@@ -1685,7 +1685,7 @@ intel_sprite_plane_create(struct drm_i915_private *dev_priv,
 	plane->id = PLANE_SPRITE0 + sprite;
 	plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane->id);
 
-	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X);
+	modifiers = intel_fb_plane_get_modifiers(dev_priv, INTEL_PLANE_CAP_TILING_X, false);
 
 	ret = drm_universal_plane_init(display->drm, &plane->base,
 				       0, plane_funcs,
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 038ca2ec5d7a..54cf2c9374cb 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2673,7 +2673,8 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 		plane_type = DRM_PLANE_TYPE_OVERLAY;
 
 	modifiers = intel_fb_plane_get_modifiers(dev_priv,
-						 skl_get_plane_caps(dev_priv, pipe, plane_id));
+						 skl_get_plane_caps(dev_priv, pipe, plane_id),
+						 false);
 
 	ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
 				       0, plane_funcs,
-- 
2.25.1


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

* [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (2 preceding siblings ...)
  2024-11-05 10:26 ` [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers Arun R Murthy
@ 2024-11-05 10:26 ` Arun R Murthy
  2024-11-05 12:10 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips Patchwork
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-05 10:26 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Add the formats/modifiers supported by asynchronous flips by the
platform based on the plane capabilities.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../drm/i915/display/skl_universal_plane.c    | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 54cf2c9374cb..bead0c01af10 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -27,6 +27,18 @@
 #include "skl_watermark.h"
 #include "pxp/intel_pxp.h"
 
+static u32 skl_async_plane_formats[] = {
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_XRGB2101010,
+	DRM_FORMAT_XBGR2101010,
+	DRM_FORMAT_XRGB16161616F,
+	DRM_FORMAT_XBGR16161616F,
+};
+
 static const u32 skl_plane_formats[] = {
 	DRM_FORMAT_C8,
 	DRM_FORMAT_RGB565,
@@ -2660,6 +2672,9 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 		formats = skl_get_plane_formats(dev_priv, pipe,
 						plane_id, &num_formats);
 
+	plane->base.async_format_count = ARRAY_SIZE(skl_async_plane_formats);
+	plane->base.async_format_types = skl_async_plane_formats;
+
 	if (DISPLAY_VER(dev_priv) >= 12)
 		plane_funcs = &tgl_plane_funcs;
 	else if (DISPLAY_VER(dev_priv) == 11)
@@ -2672,6 +2687,13 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	else
 		plane_type = DRM_PLANE_TYPE_OVERLAY;
 
+	plane->base.async_modifier_count = intel_fb_plane_get_modifiers_count(dev_priv,
+									      skl_get_plane_caps(dev_priv, pipe, plane_id),
+									      true);
+	plane->base.async_modifiers = intel_fb_plane_get_modifiers(dev_priv,
+								   skl_get_plane_caps(dev_priv, pipe, plane_id),
+								   true);
+
 	modifiers = intel_fb_plane_get_modifiers(dev_priv,
 						 skl_get_plane_caps(dev_priv, pipe, plane_id),
 						 false);
-- 
2.25.1


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

* ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (3 preceding siblings ...)
  2024-11-05 10:26 ` [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers Arun R Murthy
@ 2024-11-05 12:10 ` Patchwork
  2024-11-05 12:10 ` ✗ Fi.CI.SPARSE: " Patchwork
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2024-11-05 12:10 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

== Series Details ==

Series: Expose modifiers/formats supported by async flips
URL   : https://patchwork.freedesktop.org/series/140935/
State : warning

== Summary ==

Error: dim checkpatch failed
7d835ef6b236 drm/plane: Add new plane property IN_FORMATS_ASYNC
-:158: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t'
#158: FILE: include/drm/drm_plane.h:662:
+	uint32_t *async_format_types;

-:168: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u64' over 'uint64_t'
#168: FILE: include/drm/drm_plane.h:672:
+	uint64_t *async_modifiers;

total: 0 errors, 0 warnings, 2 checks, 137 lines checked
4e8bf91fe858 drm/i915/fb: Add async field to the modifiers description
abe5736d332f drm/i915/display: Add async_flip flag in get_modifiers
dc0ca9af7913 drm/i915/display: Add async supported formats/modifiers
-:49: WARNING:LONG_LINE: line length of 123 exceeds 100 columns
#49: FILE: drivers/gpu/drm/i915/display/skl_universal_plane.c:2691:
+									      skl_get_plane_caps(dev_priv, pipe, plane_id),

-:52: WARNING:LONG_LINE: line length of 112 exceeds 100 columns
#52: FILE: drivers/gpu/drm/i915/display/skl_universal_plane.c:2694:
+								   skl_get_plane_caps(dev_priv, pipe, plane_id),

total: 0 errors, 2 warnings, 0 checks, 40 lines checked



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

* ✗ Fi.CI.SPARSE: warning for Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (4 preceding siblings ...)
  2024-11-05 12:10 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips Patchwork
@ 2024-11-05 12:10 ` Patchwork
  2024-11-05 13:21 ` ✗ Fi.CI.BAT: failure " Patchwork
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  7 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2024-11-05 12:10 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

== Series Details ==

Series: Expose modifiers/formats supported by async flips
URL   : https://patchwork.freedesktop.org/series/140935/
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] 19+ messages in thread

* ✗ Fi.CI.BAT: failure for Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (5 preceding siblings ...)
  2024-11-05 12:10 ` ✗ Fi.CI.SPARSE: " Patchwork
@ 2024-11-05 13:21 ` Patchwork
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  7 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2024-11-05 13:21 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-gfx

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

== Series Details ==

Series: Expose modifiers/formats supported by async flips
URL   : https://patchwork.freedesktop.org/series/140935/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_15634 -> Patchwork_140935v1
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_140935v1 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_140935v1, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

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

Participating hosts (44 -> 45)
------------------------------

  Additional (2): fi-skl-6600u fi-kbl-8809g 
  Missing    (1): fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@core_hotunplug@unbind-rebind:
    - fi-cfl-guc:         [PASS][1] -> [DMESG-WARN][2] +2 other tests dmesg-warn
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@core_hotunplug@unbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@core_hotunplug@unbind-rebind.html
    - bat-arls-2:         [PASS][3] -> [DMESG-WARN][4] +2 other tests dmesg-warn
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@core_hotunplug@unbind-rebind.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@core_hotunplug@unbind-rebind.html
    - fi-cfl-8700k:       [PASS][5] -> [DMESG-WARN][6] +2 other tests dmesg-warn
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@core_hotunplug@unbind-rebind.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@core_hotunplug@unbind-rebind.html
    - fi-blb-e6850:       [PASS][7] -> [DMESG-WARN][8] +2 other tests dmesg-warn
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@core_hotunplug@unbind-rebind.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@core_hotunplug@unbind-rebind.html
    - bat-adlp-6:         [PASS][9] -> [DMESG-WARN][10] +2 other tests dmesg-warn
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@core_hotunplug@unbind-rebind.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@core_hotunplug@unbind-rebind.html
    - fi-skl-6600u:       NOTRUN -> [DMESG-WARN][11] +2 other tests dmesg-warn
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@core_hotunplug@unbind-rebind.html
    - bat-jsl-3:          [PASS][12] -> [DMESG-WARN][13] +2 other tests dmesg-warn
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@core_hotunplug@unbind-rebind.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@core_hotunplug@unbind-rebind.html
    - bat-twl-2:          [PASS][14] -> [DMESG-WARN][15] +2 other tests dmesg-warn
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@core_hotunplug@unbind-rebind.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@core_hotunplug@unbind-rebind.html
    - fi-ivb-3770:        [PASS][16] -> [DMESG-WARN][17] +2 other tests dmesg-warn
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@core_hotunplug@unbind-rebind.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@core_hotunplug@unbind-rebind.html
    - fi-elk-e7500:       [PASS][18] -> [DMESG-WARN][19] +2 other tests dmesg-warn
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@core_hotunplug@unbind-rebind.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@core_hotunplug@unbind-rebind.html
    - fi-hsw-4770:        [PASS][20] -> [DMESG-WARN][21] +2 other tests dmesg-warn
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
    - bat-mtlp-8:         [PASS][22] -> [DMESG-WARN][23] +2 other tests dmesg-warn
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@core_hotunplug@unbind-rebind.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@core_hotunplug@unbind-rebind.html

  * igt@fbdev@eof:
    - bat-twl-1:          [PASS][24] -> [SKIP][25] +3 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@fbdev@eof.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@fbdev@eof.html

  * igt@fbdev@nullptr:
    - bat-jsl-1:          [PASS][26] -> [SKIP][27] +3 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@fbdev@nullptr.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@fbdev@nullptr.html

  * igt@fbdev@read:
    - bat-twl-2:          [PASS][28] -> [SKIP][29] +3 other tests skip
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@fbdev@read.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@fbdev@read.html
    - bat-jsl-3:          [PASS][30] -> [SKIP][31] +3 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@fbdev@read.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@fbdev@read.html

  * igt@gem_lmem_swapping@basic:
    - bat-dg2-11:         [PASS][32] -> [DMESG-WARN][33] +6 other tests dmesg-warn
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@gem_lmem_swapping@basic.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@gem_lmem_swapping@basic.html
    - bat-dg2-14:         [PASS][34] -> [DMESG-WARN][35] +6 other tests dmesg-warn
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@gem_lmem_swapping@basic.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@gem_lmem_swapping@basic.html
    - bat-dg2-8:          [PASS][36] -> [DMESG-WARN][37] +6 other tests dmesg-warn
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@gem_lmem_swapping@basic.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@gem_lmem_swapping@basic.html

  * igt@i915_module_load@load:
    - bat-jsl-1:          [PASS][38] -> [DMESG-WARN][39] +2 other tests dmesg-warn
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@i915_module_load@load.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@i915_module_load@load.html
    - bat-arls-1:         [PASS][40] -> [DMESG-WARN][41] +2 other tests dmesg-warn
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@i915_module_load@load.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@i915_module_load@load.html
    - fi-rkl-11600:       [PASS][42] -> [DMESG-WARN][43] +2 other tests dmesg-warn
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@i915_module_load@load.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@i915_module_load@load.html
    - bat-dg2-13:         [PASS][44] -> [DMESG-WARN][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-13/igt@i915_module_load@load.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-13/igt@i915_module_load@load.html
    - fi-tgl-1115g4:      [PASS][46] -> [DMESG-WARN][47] +2 other tests dmesg-warn
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@i915_module_load@load.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@i915_module_load@load.html

  * igt@i915_module_load@reload:
    - bat-arlh-3:         [PASS][48] -> [DMESG-WARN][49] +2 other tests dmesg-warn
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@i915_module_load@reload.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@i915_module_load@reload.html
    - fi-pnv-d510:        [PASS][50] -> [DMESG-WARN][51] +2 other tests dmesg-warn
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@i915_module_load@reload.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@i915_module_load@reload.html
    - bat-dg1-7:          [PASS][52] -> [DMESG-WARN][53] +6 other tests dmesg-warn
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@i915_module_load@reload.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@i915_module_load@reload.html
    - fi-glk-j4005:       [PASS][54] -> [DMESG-WARN][55] +2 other tests dmesg-warn
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@i915_module_load@reload.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@i915_module_load@reload.html
    - bat-adlp-9:         [PASS][56] -> [DMESG-WARN][57] +2 other tests dmesg-warn
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@i915_module_load@reload.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@i915_module_load@reload.html
    - bat-rpls-4:         [PASS][58] -> [DMESG-WARN][59] +2 other tests dmesg-warn
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@i915_module_load@reload.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@i915_module_load@reload.html
    - fi-kbl-7567u:       [PASS][60] -> [DMESG-WARN][61] +2 other tests dmesg-warn
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@i915_module_load@reload.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@i915_module_load@reload.html
    - bat-twl-1:          [PASS][62] -> [DMESG-WARN][63] +2 other tests dmesg-warn
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@i915_module_load@reload.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@i915_module_load@reload.html
    - bat-apl-1:          [PASS][64] -> [DMESG-WARN][65] +2 other tests dmesg-warn
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@i915_module_load@reload.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@i915_module_load@reload.html
    - bat-rplp-1:         [PASS][66] -> [DMESG-WARN][67] +2 other tests dmesg-warn
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@i915_module_load@reload.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@i915_module_load@reload.html
    - fi-cfl-8109u:       [PASS][68] -> [DMESG-WARN][69] +2 other tests dmesg-warn
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@i915_module_load@reload.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@i915_module_load@reload.html
    - fi-ilk-650:         [PASS][70] -> [DMESG-WARN][71] +2 other tests dmesg-warn
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@i915_module_load@reload.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@i915_module_load@reload.html

  * igt@i915_pm_rpm@module-reload:
    - bat-adlp-6:         [PASS][72] -> [FAIL][73] +130 other tests fail
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@i915_pm_rpm@module-reload.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@i915_pm_rpm@module-reload.html

  * igt@i915_selftest@live@gt_lrc:
    - bat-twl-1:          [PASS][74] -> [INCOMPLETE][75] +1 other test incomplete
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@i915_selftest@live@gt_lrc.html
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@i915_selftest@live@gt_lrc.html

  * igt@kms_addfb_basic@addfb25-bad-modifier:
    - fi-glk-j4005:       [PASS][76] -> [FAIL][77] +95 other tests fail
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@kms_addfb_basic@addfb25-bad-modifier.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@kms_addfb_basic@addfb25-bad-modifier.html

  * igt@kms_addfb_basic@addfb25-modifier-no-flag:
    - bat-arls-2:         [PASS][78] -> [FAIL][79] +102 other tests fail
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
    - bat-dg1-6:          [PASS][80] -> [FAIL][81] +29 other tests fail
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-6/igt@kms_addfb_basic@addfb25-modifier-no-flag.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-6/igt@kms_addfb_basic@addfb25-modifier-no-flag.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - fi-ilk-650:         [PASS][82] -> [FAIL][83] +80 other tests fail
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - fi-kbl-x1275:       [PASS][84] -> [FAIL][85] +37 other tests fail
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-x1275/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-x1275/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-adlp-11:        [PASS][86] -> [FAIL][87] +37 other tests fail
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@addfb25-yf-tiled-legacy:
    - bat-arlh-3:         [PASS][88] -> [FAIL][89] +102 other tests fail
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_addfb_basic@addfb25-yf-tiled-legacy.html
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_addfb_basic@addfb25-yf-tiled-legacy.html

  * igt@kms_addfb_basic@bad-pitch-63:
    - bat-adlm-1:         [PASS][90] -> [FAIL][91] +38 other tests fail
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlm-1/igt@kms_addfb_basic@bad-pitch-63.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlm-1/igt@kms_addfb_basic@bad-pitch-63.html

  * igt@kms_addfb_basic@basic:
    - fi-hsw-4770:        [PASS][92] -> [FAIL][93] +93 other tests fail
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@kms_addfb_basic@basic.html
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@kms_addfb_basic@basic.html

  * igt@kms_addfb_basic@bo-too-small:
    - bat-kbl-2:          [PASS][94] -> [FAIL][95] +38 other tests fail
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-kbl-2/igt@kms_addfb_basic@bo-too-small.html
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-kbl-2/igt@kms_addfb_basic@bo-too-small.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - fi-rkl-11600:       [PASS][96] -> [FAIL][97] +95 other tests fail
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@invalid-get-prop-any:
    - fi-kbl-guc:         [PASS][98] -> [FAIL][99] +38 other tests fail
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-guc/igt@kms_addfb_basic@invalid-get-prop-any.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-guc/igt@kms_addfb_basic@invalid-get-prop-any.html

  * igt@kms_addfb_basic@invalid-set-prop:
    - fi-ivb-3770:        [PASS][100] -> [FAIL][101] +89 other tests fail
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@kms_addfb_basic@invalid-set-prop.html
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@kms_addfb_basic@invalid-set-prop.html

  * igt@kms_addfb_basic@invalid-set-prop-any:
    - bat-dg2-9:          [PASS][102] -> [FAIL][103] +28 other tests fail
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@invalid-set-prop-any.html
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@invalid-set-prop-any.html

  * igt@kms_addfb_basic@too-high:
    - bat-rpls-4:         [PASS][104] -> [FAIL][105] +122 other tests fail
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@kms_addfb_basic@too-high.html
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@kms_addfb_basic@too-high.html
    - fi-cfl-8109u:       [PASS][106] -> [FAIL][107] +106 other tests fail
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@kms_addfb_basic@too-high.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@kms_addfb_basic@too-high.html
    - fi-kbl-8809g:       NOTRUN -> [FAIL][108] +38 other tests fail
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@kms_addfb_basic@too-high.html

  * igt@kms_addfb_basic@too-wide:
    - bat-mtlp-6:         [PASS][109] -> [FAIL][110] +28 other tests fail
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@kms_addfb_basic@too-wide.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@kms_addfb_basic@too-wide.html

  * igt@kms_addfb_basic@unused-handle:
    - bat-mtlp-8:         [PASS][111] -> [FAIL][112] +102 other tests fail
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_addfb_basic@unused-handle.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_addfb_basic@unused-handle.html
    - bat-arlh-2:         [PASS][113] -> [FAIL][114] +27 other tests fail
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-2/igt@kms_addfb_basic@unused-handle.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-2/igt@kms_addfb_basic@unused-handle.html

  * igt@kms_addfb_basic@unused-offsets:
    - bat-dg2-14:         [PASS][115] -> [FAIL][116] +96 other tests fail
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@unused-offsets.html
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@unused-offsets.html
    - fi-elk-e7500:       [PASS][117] -> [FAIL][118] +86 other tests fail
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@kms_addfb_basic@unused-offsets.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@kms_addfb_basic@unused-offsets.html
    - bat-dg2-8:          [PASS][119] -> [FAIL][120] +98 other tests fail
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@unused-offsets.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@unused-offsets.html
    - fi-bsw-nick:        [PASS][121] -> [FAIL][122] +37 other tests fail
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-bsw-nick/igt@kms_addfb_basic@unused-offsets.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-bsw-nick/igt@kms_addfb_basic@unused-offsets.html

  * igt@kms_busy@basic@flip:
    - fi-cfl-8700k:       [PASS][123] -> [FAIL][124] +94 other tests fail
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@kms_busy@basic@flip.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@kms_busy@basic@flip.html

  * igt@kms_chamelium_frames@dp-crc-fast:
    - bat-dg2-13:         [PASS][125] -> [FAIL][126] +1 other test fail
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-13/igt@kms_chamelium_frames@dp-crc-fast.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-13/igt@kms_chamelium_frames@dp-crc-fast.html

  * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
    - fi-blb-e6850:       [PASS][127] -> [FAIL][128] +74 other tests fail
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html

  * igt@kms_flip@basic-flip-vs-dpms:
    - fi-cfl-guc:         [PASS][129] -> [FAIL][130] +94 other tests fail
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@kms_flip@basic-flip-vs-dpms.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@kms_flip@basic-flip-vs-dpms.html

  * igt@kms_flip@basic-flip-vs-dpms@a-vga1:
    - fi-pnv-d510:        [PASS][131] -> [FAIL][132] +74 other tests fail
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@kms_flip@basic-flip-vs-dpms@a-vga1.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@kms_flip@basic-flip-vs-dpms@a-vga1.html

  * igt@kms_flip@basic-flip-vs-dpms@b-edp1:
    - bat-jsl-3:          [PASS][133] -> [FAIL][134] +103 other tests fail
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@kms_flip@basic-flip-vs-dpms@b-edp1.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@kms_flip@basic-flip-vs-dpms@b-edp1.html

  * igt@kms_flip@basic-flip-vs-modeset@d-hdmi-a1:
    - fi-tgl-1115g4:      [PASS][135] -> [FAIL][136] +106 other tests fail
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@kms_flip@basic-flip-vs-modeset@d-hdmi-a1.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@kms_flip@basic-flip-vs-modeset@d-hdmi-a1.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1:
    - bat-twl-2:          [PASS][137] -> [FAIL][138] +103 other tests fail
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@kms_flip@basic-flip-vs-wf_vblank@a-edp1.html

  * igt@kms_flip@basic-flip-vs-wf_vblank@a-hdmi-a2:
    - bat-dg1-7:          [PASS][139] -> [FAIL][140] +97 other tests fail
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@kms_flip@basic-flip-vs-wf_vblank@a-hdmi-a2.html
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@kms_flip@basic-flip-vs-wf_vblank@a-hdmi-a2.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-hdmi-a-2:
    - bat-dg2-11:         [PASS][141] -> [FAIL][142] +96 other tests fail
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-hdmi-a-2.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-hdmi-a-2.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-a-dp-1:
    - bat-adlp-9:         [PASS][143] -> [FAIL][144] +106 other tests fail
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-a-dp-1.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-xr24@pipe-a-dp-1.html

  * igt@kms_pipe_crc_basic@hang-read-crc:
    - bat-rplp-1:         [PASS][145] -> [FAIL][146] +105 other tests fail
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@kms_pipe_crc_basic@hang-read-crc.html
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@kms_pipe_crc_basic@hang-read-crc.html

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-hdmi-a-2:
    - bat-arls-1:         [PASS][147] -> [FAIL][148] +96 other tests fail
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-hdmi-a-2.html
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@kms_pipe_crc_basic@hang-read-crc@pipe-b-hdmi-a-2.html

  * igt@kms_pipe_crc_basic@hang-read-crc@pipe-c-edp-1:
    - fi-skl-6600u:       NOTRUN -> [FAIL][149] +99 other tests fail
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@kms_pipe_crc_basic@hang-read-crc@pipe-c-edp-1.html

  * igt@kms_pipe_crc_basic@read-crc@pipe-b-edp-1:
    - bat-jsl-1:          [PASS][150] -> [FAIL][151] +103 other tests fail
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@kms_pipe_crc_basic@read-crc@pipe-b-edp-1.html
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@kms_pipe_crc_basic@read-crc@pipe-b-edp-1.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-adlp-6:         [PASS][152] -> [INCOMPLETE][153]
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@kms_pm_backlight@basic-brightness.html
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@kms_pm_backlight@basic-brightness.html
    - fi-skl-6600u:       NOTRUN -> [INCOMPLETE][154]
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@kms_pm_backlight@basic-brightness.html
    - bat-jsl-3:          [PASS][155] -> [INCOMPLETE][156]
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@kms_pm_backlight@basic-brightness.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@kms_pm_backlight@basic-brightness.html
    - bat-twl-2:          [PASS][157] -> [INCOMPLETE][158]
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@kms_pm_backlight@basic-brightness.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@kms_pm_backlight@basic-brightness.html
    - bat-mtlp-8:         [PASS][159] -> [INCOMPLETE][160]
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_pm_backlight@basic-brightness.html
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_pm_backlight@basic-brightness.html
    - bat-jsl-1:          [PASS][161] -> [INCOMPLETE][162]
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@kms_pm_backlight@basic-brightness.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@kms_pm_backlight@basic-brightness.html
    - bat-arlh-3:         [PASS][163] -> [INCOMPLETE][164]
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_pm_backlight@basic-brightness.html
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_pm_backlight@basic-brightness.html
    - bat-rplp-1:         [PASS][165] -> [INCOMPLETE][166]
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@kms_pm_backlight@basic-brightness.html
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@kms_pm_backlight@basic-brightness.html
    - bat-arls-2:         [PASS][167] -> [INCOMPLETE][168]
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_pm_backlight@basic-brightness.html
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - fi-kbl-7567u:       [PASS][169] -> [FAIL][170] +94 other tests fail
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
    - bat-twl-1:          [PASS][171] -> [FAIL][172] +103 other tests fail
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
    - bat-apl-1:          [PASS][173] -> [FAIL][174] +90 other tests fail
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@kms_pm_rpm@basic-pci-d3-state.html
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@kms_pm_rpm@basic-pci-d3-state.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-arlh-3:         [PASS][175] -> [SKIP][176]
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@prime_vgem@basic-fence-flip.html
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@prime_vgem@basic-fence-flip.html

  
#### Warnings ####

  * igt@i915_pm_rpm@module-reload:
    - fi-blb-e6850:       [SKIP][177] -> [FAIL][178] +3 other tests fail
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@i915_pm_rpm@module-reload.html
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@i915_pm_rpm@module-reload.html
    - fi-pnv-d510:        [SKIP][179] -> [FAIL][180] +3 other tests fail
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@i915_pm_rpm@module-reload.html
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@i915_pm_rpm@module-reload.html

  * igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling:
    - bat-dg1-6:          [SKIP][181] ([i915#12311]) -> [FAIL][182] +8 other tests fail
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-6/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-6/igt@kms_addfb_basic@addfb25-framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - bat-mtlp-6:         [SKIP][183] ([i915#4212] / [i915#9792]) -> [FAIL][184] +8 other tests fail
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy:
    - bat-dg2-11:         [SKIP][185] ([i915#4212]) -> [FAIL][186] +7 other tests fail
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_addfb_basic@addfb25-x-tiled-mismatch-legacy.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-9:          [SKIP][187] ([i915#4212] / [i915#5190]) -> [FAIL][188]
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arls-2:         [SKIP][189] ([i915#10200] / [i915#12203]) -> [FAIL][190]
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-mtlp-6:         [SKIP][191] ([i915#4212] / [i915#5190] / [i915#9792]) -> [FAIL][192]
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-11:         [SKIP][193] ([i915#4212] / [i915#5190]) -> [FAIL][194]
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-14:         [SKIP][195] ([i915#4212] / [i915#5190]) -> [FAIL][196]
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - fi-bsw-nick:        [SKIP][197] -> [FAIL][198]
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-bsw-nick/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-bsw-nick/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - fi-hsw-4770:        [SKIP][199] ([i915#5190]) -> [FAIL][200]
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-mtlp-8:         [SKIP][201] ([i915#4212] / [i915#5190]) -> [FAIL][202]
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-8:          [SKIP][203] ([i915#4212] / [i915#5190]) -> [FAIL][204]
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arls-1:         [SKIP][205] ([i915#10200] / [i915#12203]) -> [FAIL][206]
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arlh-3:         [SKIP][207] ([i915#11666] / [i915#12203]) -> [FAIL][208]
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-arlh-2:         [SKIP][209] ([i915#10200] / [i915#11346] / [i915#11666] / [i915#12203]) -> [FAIL][210]
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - bat-arlh-2:         [SKIP][211] ([i915#10200] / [i915#11346] / [i915#11666]) -> [FAIL][212] +8 other tests fail
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-2/igt@kms_addfb_basic@basic-x-tiled-legacy.html
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-2/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-mtlp-8:         [SKIP][213] ([i915#4212]) -> [FAIL][214] +8 other tests fail
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-8:          [SKIP][215] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][216]
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-arls-1:         [SKIP][217] ([i915#10200]) -> [FAIL][218] +8 other tests fail
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg1-7:          [SKIP][219] ([i915#4212] / [i915#4215]) -> [FAIL][220]
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-9:          [SKIP][221] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][222]
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-11:         [SKIP][223] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][224]
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-14:         [SKIP][225] ([i915#4212] / [i915#4215] / [i915#5190]) -> [FAIL][226]
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@bo-too-small-due-to-tiling:
    - bat-arlh-3:         [SKIP][227] ([i915#11666]) -> [FAIL][228] +8 other tests fail
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
    - bat-dg1-7:          [SKIP][229] ([i915#4212]) -> [FAIL][230] +7 other tests fail
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@kms_addfb_basic@bo-too-small-due-to-tiling.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-dg2-9:          [SKIP][231] ([i915#4212]) -> [FAIL][232] +7 other tests fail
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
    - bat-arls-2:         [SKIP][233] ([i915#10200]) -> [FAIL][234] +8 other tests fail
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@tile-pitch-mismatch:
    - bat-dg2-14:         [SKIP][235] ([i915#4212]) -> [FAIL][236] +7 other tests fail
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@kms_addfb_basic@tile-pitch-mismatch.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@kms_addfb_basic@tile-pitch-mismatch.html
    - bat-dg2-8:          [SKIP][237] ([i915#4212]) -> [FAIL][238] +7 other tests fail
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@kms_addfb_basic@tile-pitch-mismatch.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@kms_addfb_basic@tile-pitch-mismatch.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - fi-ilk-650:         [SKIP][239] -> [FAIL][240] +3 other tests fail
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@kms_pm_rpm@basic-pci-d3-state.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@kms_pm_rpm@basic-pci-d3-state.html

  * igt@kms_pm_rpm@basic-rte:
    - fi-ivb-3770:        [SKIP][241] -> [FAIL][242] +3 other tests fail
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@kms_pm_rpm@basic-rte.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@kms_pm_rpm@basic-rte.html
    - fi-elk-e7500:       [SKIP][243] -> [FAIL][244] +4 other tests fail
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@kms_pm_rpm@basic-rte.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@kms_pm_rpm@basic-rte.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - bat-mtlp-8:         [SKIP][245] ([i915#4077] / [i915#9688]) -> [FAIL][246] +1 other test fail
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@kms_psr@psr-primary-mmap-gtt.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@kms_psr@psr-primary-mmap-gtt.html
    - bat-arlh-3:         [SKIP][247] ([i915#12637]) -> [FAIL][248] +1 other test fail
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@kms_psr@psr-primary-mmap-gtt.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@kms_psr@psr-primary-mmap-gtt.html

  * igt@kms_psr@psr-primary-mmap-gtt@edp-1:
    - bat-arls-2:         [SKIP][249] ([i915#12637] / [i915#4077] / [i915#9688]) -> [FAIL][250] +1 other test fail
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@kms_psr@psr-primary-mmap-gtt@edp-1.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@kms_psr@psr-primary-mmap-gtt@edp-1.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-rpls-4:         [SKIP][251] ([i915#3555]) -> [INCOMPLETE][252]
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@kms_setmode@basic-clone-single-crtc.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@kms_setmode@basic-clone-single-crtc.html
    - fi-cfl-8109u:       [SKIP][253] -> [INCOMPLETE][254]
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@kms_setmode@basic-clone-single-crtc.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-adlp-6:         [SKIP][255] ([i915#3555]) -> [INCOMPLETE][256]
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@kms_setmode@basic-clone-single-crtc.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@core_hotunplug@unbind-rebind:
    - {bat-mtlp-9}:       [PASS][257] -> [DMESG-WARN][258] +2 other tests dmesg-warn
   [257]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@core_hotunplug@unbind-rebind.html
   [258]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@core_hotunplug@unbind-rebind.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - {bat-mtlp-9}:       [SKIP][259] ([i915#4212] / [i915#5190]) -> [FAIL][260]
   [259]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
   [260]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - {bat-mtlp-9}:       [SKIP][261] ([i915#4212]) -> [FAIL][262] +8 other tests fail
   [261]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
   [262]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-edp-1:
    - {bat-mtlp-9}:       [PASS][263] -> [FAIL][264] +134 other tests fail
   [263]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-edp-1.html
   [264]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-nv12@pipe-a-edp-1.html

  * igt@kms_pm_backlight@basic-brightness:
    - {bat-mtlp-9}:       [PASS][265] -> [INCOMPLETE][266]
   [265]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_pm_backlight@basic-brightness.html
   [266]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - {bat-mtlp-9}:       [SKIP][267] ([i915#4077] / [i915#9688]) -> [FAIL][268] +1 other test fail
   [267]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_psr@psr-primary-mmap-gtt.html
   [268]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_psr@psr-primary-mmap-gtt.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - {bat-mtlp-9}:       [SKIP][269] ([i915#3555] / [i915#8809]) -> [INCOMPLETE][270]
   [269]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-9/igt@kms_setmode@basic-clone-single-crtc.html
   [270]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-9/igt@kms_setmode@basic-clone-single-crtc.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@eof:
    - bat-rpls-4:         [PASS][271] -> [SKIP][272] ([i915#2582]) +3 other tests skip
   [271]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@fbdev@eof.html
   [272]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@fbdev@eof.html
    - fi-kbl-7567u:       [PASS][273] -> [SKIP][274] +4 other tests skip
   [273]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@fbdev@eof.html
   [274]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@fbdev@eof.html
    - bat-apl-1:          [PASS][275] -> [SKIP][276] +4 other tests skip
   [275]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@fbdev@eof.html
   [276]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@fbdev@eof.html
    - bat-rplp-1:         [PASS][277] -> [SKIP][278] ([i915#2582]) +3 other tests skip
   [277]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@fbdev@eof.html
   [278]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@fbdev@eof.html
    - fi-rkl-11600:       [PASS][279] -> [SKIP][280] ([i915#2582]) +3 other tests skip
   [279]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@fbdev@eof.html
   [280]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@fbdev@eof.html
    - fi-cfl-8109u:       [PASS][281] -> [SKIP][282] +4 other tests skip
   [281]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@fbdev@eof.html
   [282]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@fbdev@eof.html
    - bat-arls-2:         [PASS][283] -> [SKIP][284] ([i915#11191] / [i915#11345]) +3 other tests skip
   [283]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@fbdev@eof.html
   [284]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@fbdev@eof.html
    - fi-ilk-650:         [PASS][285] -> [SKIP][286] +4 other tests skip
   [285]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@fbdev@eof.html
   [286]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@fbdev@eof.html
    - fi-tgl-1115g4:      [PASS][287] -> [SKIP][288] ([i915#2582]) +3 other tests skip
   [287]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@fbdev@eof.html
   [288]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@fbdev@eof.html

  * igt@fbdev@info:
    - fi-cfl-8109u:       [PASS][289] -> [SKIP][290] ([i915#1849])
   [289]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8109u/igt@fbdev@info.html
   [290]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8109u/igt@fbdev@info.html
    - bat-arls-2:         [PASS][291] -> [SKIP][292] ([i915#1849])
   [291]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@fbdev@info.html
   [292]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@fbdev@info.html
    - fi-ilk-650:         [PASS][293] -> [SKIP][294] ([i915#1849])
   [293]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ilk-650/igt@fbdev@info.html
   [294]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ilk-650/igt@fbdev@info.html
    - fi-blb-e6850:       [PASS][295] -> [SKIP][296] ([i915#1849])
   [295]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@fbdev@info.html
   [296]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@fbdev@info.html
    - bat-adlp-6:         [PASS][297] -> [SKIP][298] ([i915#1849] / [i915#2582])
   [297]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@fbdev@info.html
   [298]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@fbdev@info.html
    - fi-skl-6600u:       NOTRUN -> [SKIP][299] ([i915#1849])
   [299]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@fbdev@info.html
    - bat-jsl-3:          [PASS][300] -> [SKIP][301] ([i915#1849])
   [300]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@fbdev@info.html
   [301]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@fbdev@info.html
    - bat-twl-2:          [PASS][302] -> [SKIP][303] ([i915#1849])
   [302]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@fbdev@info.html
   [303]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@fbdev@info.html
    - bat-dg2-11:         [PASS][304] -> [SKIP][305] ([i915#1849] / [i915#2582])
   [304]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@fbdev@info.html
   [305]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@fbdev@info.html
    - fi-cfl-8700k:       [PASS][306] -> [SKIP][307] ([i915#1849])
   [306]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@fbdev@info.html
   [307]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@fbdev@info.html
    - bat-dg2-14:         [PASS][308] -> [SKIP][309] ([i915#1849] / [i915#2582])
   [308]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@fbdev@info.html
   [309]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@fbdev@info.html
    - fi-elk-e7500:       [PASS][310] -> [SKIP][311] ([i915#1849])
   [310]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@fbdev@info.html
   [311]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@fbdev@info.html
    - fi-hsw-4770:        [PASS][312] -> [SKIP][313] ([i915#1849] / [i915#2582])
   [312]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@fbdev@info.html
   [313]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@fbdev@info.html
    - fi-ivb-3770:        [PASS][314] -> [SKIP][315] ([i915#1849])
   [314]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@fbdev@info.html
   [315]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@fbdev@info.html
    - bat-mtlp-8:         [PASS][316] -> [SKIP][317] ([i915#1849] / [i915#2582])
   [316]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@fbdev@info.html
   [317]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@fbdev@info.html
    - bat-dg2-8:          [PASS][318] -> [SKIP][319] ([i915#1849] / [i915#2582])
   [318]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@fbdev@info.html
   [319]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@fbdev@info.html
    - bat-jsl-1:          [PASS][320] -> [SKIP][321] ([i915#1849])
   [320]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@fbdev@info.html
   [321]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@fbdev@info.html
    - bat-arls-1:         [PASS][322] -> [SKIP][323] ([i915#1849])
   [322]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@fbdev@info.html
   [323]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@fbdev@info.html
    - fi-rkl-11600:       [PASS][324] -> [SKIP][325] ([i915#1849] / [i915#2582])
   [324]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@fbdev@info.html
   [325]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@fbdev@info.html
    - bat-arlh-3:         [PASS][326] -> [SKIP][327] ([i915#1849])
   [326]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@fbdev@info.html
   [327]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@fbdev@info.html
    - fi-pnv-d510:        [PASS][328] -> [SKIP][329] ([i915#1849])
   [328]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@fbdev@info.html
   [329]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@fbdev@info.html
    - bat-dg1-7:          [PASS][330] -> [SKIP][331] ([i915#1849] / [i915#2582])
   [330]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@fbdev@info.html
   [331]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@fbdev@info.html
    - fi-glk-j4005:       [PASS][332] -> [SKIP][333] ([i915#1849])
   [332]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@fbdev@info.html
   [333]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@fbdev@info.html
    - bat-adlp-9:         [PASS][334] -> [SKIP][335] ([i915#1849] / [i915#2582])
   [334]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@fbdev@info.html
   [335]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@fbdev@info.html
    - bat-rpls-4:         [PASS][336] -> [SKIP][337] ([i915#1849] / [i915#2582])
   [336]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@fbdev@info.html
   [337]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@fbdev@info.html
    - fi-kbl-7567u:       [PASS][338] -> [SKIP][339] ([i915#1849])
   [338]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-kbl-7567u/igt@fbdev@info.html
   [339]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-7567u/igt@fbdev@info.html
    - bat-twl-1:          [PASS][340] -> [SKIP][341] ([i915#1849])
   [340]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@fbdev@info.html
   [341]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@fbdev@info.html
    - bat-apl-1:          [PASS][342] -> [SKIP][343] ([i915#1849])
   [342]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-apl-1/igt@fbdev@info.html
   [343]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-apl-1/igt@fbdev@info.html
    - bat-rplp-1:         [PASS][344] -> [SKIP][345] ([i915#1849] / [i915#2582])
   [344]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@fbdev@info.html
   [345]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@fbdev@info.html
    - fi-tgl-1115g4:      [PASS][346] -> [SKIP][347] ([i915#1849] / [i915#2582])
   [346]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@fbdev@info.html
   [347]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@fbdev@info.html
    - fi-cfl-guc:         [PASS][348] -> [SKIP][349] ([i915#1849])
   [348]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@fbdev@info.html
   [349]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@fbdev@info.html

  * igt@fbdev@nullptr:
    - bat-arls-1:         [PASS][350] -> [SKIP][351] ([i915#11191] / [i915#11345]) +3 other tests skip
   [350]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@fbdev@nullptr.html
   [351]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@fbdev@nullptr.html
    - fi-hsw-4770:        [PASS][352] -> [SKIP][353] ([i915#2582]) +3 other tests skip
   [352]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@fbdev@nullptr.html
   [353]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@fbdev@nullptr.html
    - bat-mtlp-8:         [PASS][354] -> [SKIP][355] ([i915#2582]) +3 other tests skip
   [354]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@fbdev@nullptr.html
   [355]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@fbdev@nullptr.html
    - bat-arlh-3:         [PASS][356] -> [SKIP][357] ([i915#11345]) +3 other tests skip
   [356]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@fbdev@nullptr.html
   [357]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@fbdev@nullptr.html
    - fi-pnv-d510:        [PASS][358] -> [SKIP][359] +4 other tests skip
   [358]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-pnv-d510/igt@fbdev@nullptr.html
   [359]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-pnv-d510/igt@fbdev@nullptr.html
    - bat-dg1-7:          [PASS][360] -> [SKIP][361] ([i915#2582]) +3 other tests skip
   [360]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg1-7/igt@fbdev@nullptr.html
   [361]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg1-7/igt@fbdev@nullptr.html
    - bat-adlp-9:         [PASS][362] -> [SKIP][363] ([i915#2582]) +3 other tests skip
   [362]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@fbdev@nullptr.html
   [363]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@fbdev@nullptr.html

  * igt@fbdev@read:
    - bat-dg2-11:         [PASS][364] -> [SKIP][365] ([i915#2582]) +3 other tests skip
   [364]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-11/igt@fbdev@read.html
   [365]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-11/igt@fbdev@read.html
    - fi-cfl-8700k:       [PASS][366] -> [SKIP][367] +4 other tests skip
   [366]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-8700k/igt@fbdev@read.html
   [367]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-8700k/igt@fbdev@read.html
    - bat-dg2-14:         [PASS][368] -> [SKIP][369] ([i915#2582]) +3 other tests skip
   [368]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-14/igt@fbdev@read.html
   [369]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-14/igt@fbdev@read.html
    - bat-dg2-8:          [PASS][370] -> [SKIP][371] ([i915#2582]) +3 other tests skip
   [370]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-dg2-8/igt@fbdev@read.html
   [371]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-dg2-8/igt@fbdev@read.html

  * igt@fbdev@write:
    - fi-blb-e6850:       [PASS][372] -> [SKIP][373] +4 other tests skip
   [372]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-blb-e6850/igt@fbdev@write.html
   [373]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-blb-e6850/igt@fbdev@write.html
    - fi-cfl-guc:         [PASS][374] -> [SKIP][375] +4 other tests skip
   [374]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-cfl-guc/igt@fbdev@write.html
   [375]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-cfl-guc/igt@fbdev@write.html
    - fi-skl-6600u:       NOTRUN -> [SKIP][376] +14 other tests skip
   [376]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@fbdev@write.html
    - bat-adlp-6:         [PASS][377] -> [SKIP][378] ([i915#2582]) +3 other tests skip
   [377]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@fbdev@write.html
   [378]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@fbdev@write.html

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][379] ([i915#2190])
   [379]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@gem_huc_copy@huc-copy.html
    - fi-skl-6600u:       NOTRUN -> [SKIP][380] ([i915#2190])
   [380]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][381] ([i915#4613]) +3 other tests skip
   [381]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_lmem_swapping@random-engines:
    - fi-skl-6600u:       NOTRUN -> [SKIP][382] ([i915#4613]) +3 other tests skip
   [382]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-skl-6600u/igt@gem_lmem_swapping@random-engines.html

  * igt@i915_selftest@live:
    - bat-twl-1:          [PASS][383] -> [INCOMPLETE][384] ([i915#12133])
   [383]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@i915_selftest@live.html
   [384]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@i915_selftest@live.html
    - bat-mtlp-6:         [PASS][385] -> [ABORT][386] ([i915#12061] / [i915#12133])
   [385]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@i915_selftest@live.html
   [386]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-mtlp-6:         [PASS][387] -> [ABORT][388] ([i915#12061])
   [387]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-6/igt@i915_selftest@live@workarounds.html
   [388]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-6/igt@i915_selftest@live@workarounds.html

  * igt@kms_dsc@dsc-basic:
    - fi-kbl-8809g:       NOTRUN -> [SKIP][389] +30 other tests skip
   [389]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-kbl-8809g/igt@kms_dsc@dsc-basic.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-jsl-3:          [PASS][390] -> [SKIP][391]
   [390]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-3/igt@prime_vgem@basic-fence-flip.html
   [391]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-3/igt@prime_vgem@basic-fence-flip.html
    - bat-twl-2:          [PASS][392] -> [SKIP][393] ([i915#3708])
   [392]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-2/igt@prime_vgem@basic-fence-flip.html
   [393]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-2/igt@prime_vgem@basic-fence-flip.html
    - fi-ivb-3770:        [PASS][394] -> [SKIP][395] +4 other tests skip
   [394]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-ivb-3770/igt@prime_vgem@basic-fence-flip.html
   [395]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-ivb-3770/igt@prime_vgem@basic-fence-flip.html
    - fi-elk-e7500:       [PASS][396] -> [SKIP][397] +4 other tests skip
   [396]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-elk-e7500/igt@prime_vgem@basic-fence-flip.html
   [397]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-elk-e7500/igt@prime_vgem@basic-fence-flip.html
    - bat-arls-1:         [PASS][398] -> [SKIP][399] ([i915#3708])
   [398]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-1/igt@prime_vgem@basic-fence-flip.html
   [399]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-1/igt@prime_vgem@basic-fence-flip.html
    - fi-hsw-4770:        [PASS][400] -> [SKIP][401]
   [400]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-hsw-4770/igt@prime_vgem@basic-fence-flip.html
   [401]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-hsw-4770/igt@prime_vgem@basic-fence-flip.html
    - fi-glk-j4005:       [PASS][402] -> [SKIP][403] +4 other tests skip
   [402]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-glk-j4005/igt@prime_vgem@basic-fence-flip.html
   [403]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-glk-j4005/igt@prime_vgem@basic-fence-flip.html
    - bat-mtlp-8:         [PASS][404] -> [SKIP][405] ([i915#3708])
   [404]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-mtlp-8/igt@prime_vgem@basic-fence-flip.html
   [405]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-mtlp-8/igt@prime_vgem@basic-fence-flip.html
    - bat-adlp-9:         [PASS][406] -> [SKIP][407] ([i915#3708])
   [406]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-9/igt@prime_vgem@basic-fence-flip.html
   [407]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-9/igt@prime_vgem@basic-fence-flip.html
    - bat-jsl-1:          [PASS][408] -> [SKIP][409]
   [408]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-jsl-1/igt@prime_vgem@basic-fence-flip.html
   [409]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-jsl-1/igt@prime_vgem@basic-fence-flip.html
    - fi-rkl-11600:       [PASS][410] -> [SKIP][411] ([i915#3708])
   [410]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-rkl-11600/igt@prime_vgem@basic-fence-flip.html
   [411]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-rkl-11600/igt@prime_vgem@basic-fence-flip.html
    - bat-rpls-4:         [PASS][412] -> [SKIP][413] ([i915#3708])
   [412]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rpls-4/igt@prime_vgem@basic-fence-flip.html
   [413]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rpls-4/igt@prime_vgem@basic-fence-flip.html
    - bat-twl-1:          [PASS][414] -> [SKIP][415] ([i915#3708])
   [414]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-twl-1/igt@prime_vgem@basic-fence-flip.html
   [415]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-twl-1/igt@prime_vgem@basic-fence-flip.html
    - bat-rplp-1:         [PASS][416] -> [SKIP][417] ([i915#3708])
   [416]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-rplp-1/igt@prime_vgem@basic-fence-flip.html
   [417]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-rplp-1/igt@prime_vgem@basic-fence-flip.html
    - fi-tgl-1115g4:      [PASS][418] -> [SKIP][419]
   [418]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/fi-tgl-1115g4/igt@prime_vgem@basic-fence-flip.html
   [419]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/fi-tgl-1115g4/igt@prime_vgem@basic-fence-flip.html
    - bat-arls-2:         [PASS][420] -> [SKIP][421] ([i915#3708])
   [420]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arls-2/igt@prime_vgem@basic-fence-flip.html
   [421]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arls-2/igt@prime_vgem@basic-fence-flip.html
    - bat-adlp-6:         [PASS][422] -> [SKIP][423] ([i915#3708])
   [422]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-adlp-6/igt@prime_vgem@basic-fence-flip.html
   [423]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-adlp-6/igt@prime_vgem@basic-fence-flip.html

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-arlh-3:         [ABORT][424] ([i915#12133]) -> [PASS][425]
   [424]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@i915_selftest@live.html
   [425]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/igt@i915_selftest@live.html

  * igt@i915_selftest@live@workarounds:
    - bat-arlh-3:         [ABORT][426] ([i915#12061]) -> [PASS][427]
   [426]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_15634/bat-arlh-3/igt@i915_selftest@live@workarounds.html
   [427]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_140935v1/bat-arlh-3/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#10200]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10200
  [i915#10341]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/10341
  [i915#11191]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11191
  [i915#11345]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11345
  [i915#11346]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11346
  [i915#11349]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11349
  [i915#11666]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11666
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#12133]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12133
  [i915#12203]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12203
  [i915#12311]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12311
  [i915#12637]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12637
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2190
  [i915#2582]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/2582
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4077
  [i915#4212]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4212
  [i915#4215]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4215
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#5190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5190
  [i915#8809]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/8809
  [i915#9688]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9688
  [i915#9792]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9792


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

  * Linux: CI_DRM_15634 -> Patchwork_140935v1

  CI-20190529: 20190529
  CI_DRM_15634: 913062707a924df0837c0d9eb9745ba52fd92958 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_8097: 2e7c8e4b88a50e33e10d6c13286818aa833bef9b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_140935v1: 913062707a924df0837c0d9eb9745ba52fd92958 @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* Re: [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2024-11-06 14:00   ` Ville Syrjälä
  2024-11-06 14:32     ` Murthy, Arun R
  0 siblings, 1 reply; 19+ messages in thread
From: Ville Syrjälä @ 2024-11-06 14:00 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-xe, intel-gfx, dri-devel

On Tue, Nov 05, 2024 at 03:56:05PM +0530, Arun R Murthy wrote:
> There exists a property IN_FORMATS which exposes the plane supported
> modifiers/formats to the user. In some platforms when asynchronous flips
> are used all of modifiers/formats mentioned in IN_FORMATS are not
> supported. This patch adds a new plane property IN_FORMATS_ASYNC to
> expose the async flips supported modifiers/formats so that user can use
> this information ahead and done flips with unsupported
> formats/modifiers. This will save flips failures.
> 
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
>  drivers/gpu/drm/drm_mode_config.c |  7 +++
>  drivers/gpu/drm/drm_plane.c       | 73 +++++++++++++++++++++++++++++++
>  include/drm/drm_mode_config.h     |  6 +++
>  include/drm/drm_plane.h           | 10 +++++
>  4 files changed, 96 insertions(+)
> 
> diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
> index 37d2e0a4ef4b..cff189a2e751 100644
> --- a/drivers/gpu/drm/drm_mode_config.c
> +++ b/drivers/gpu/drm/drm_mode_config.c
> @@ -379,6 +379,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
>  		return -ENOMEM;
>  	dev->mode_config.size_hints_property = prop;
>  
> +	prop = drm_property_create(dev,
> +				   DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
> +				   "IN_FORMATS_ASYNC", 0);
> +	if (!prop)
> +		return -ENOMEM;
> +	dev->mode_config.async_modifiers_property = prop;
> +
>  	return 0;
>  }
>  
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index a28b22fdd7a4..01b8e6932fda 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -141,6 +141,12 @@
>   *     various bugs in this area with inconsistencies between the capability
>   *     flag and per-plane properties.
>   *
> + * IN_FORMATS_ASYNC:
> + *     Blob property which contains the set of buffer format and modifier
> + *     pairs supported by this plane for asynchronous flips. The blob is a struct
> + *     drm_format_modifier_blob. Without this property the plane doesn't
> + *     support buffers with modifiers. Userspace cannot change this property.
> + *
>   * SIZE_HINTS:
>   *     Blob property which contains the set of recommended plane size
>   *     which can used for simple "cursor like" use cases (eg. no scaling).
> @@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
>  	return 0;
>  }
>  
> +static int create_in_format_async_blob(struct drm_device *dev, struct drm_plane *plane)
> +{
> +	const struct drm_mode_config *config = &dev->mode_config;
> +	struct drm_property_blob *blob;
> +	struct drm_format_modifier *async_mod;
> +	size_t blob_size, async_formats_size, async_modifiers_size;
> +	struct drm_format_modifier_blob *blob_data;
> +	unsigned int i, j;
> +
> +	async_formats_size = sizeof(__u32) * plane->async_format_count;
> +	if (WARN_ON(!async_formats_size)) {
> +		/* 0 formats are never expected */
> +		return 0;
> +	}
> +
> +	async_modifiers_size =
> +		sizeof(struct drm_format_modifier) * plane->async_modifier_count;
> +
> +	blob_size = sizeof(struct drm_format_modifier_blob);
> +	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
> +	 * should be naturally aligned to 8B.
> +	 */
> +	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
> +	blob_size += ALIGN(async_formats_size, 8);
> +	blob_size += async_modifiers_size;
> +
> +	blob = drm_property_create_blob(dev, blob_size, NULL);
> +	if (IS_ERR(blob))
> +		return -1;
> +
> +	blob_data = blob->data;
> +	blob_data->version = FORMAT_BLOB_CURRENT;
> +	blob_data->count_formats = plane->async_format_count;
> +	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
> +	blob_data->count_modifiers = plane->async_modifier_count;
> +
> +	blob_data->modifiers_offset =
> +		ALIGN(blob_data->formats_offset + async_formats_size, 8);
> +
> +	memcpy(formats_ptr(blob_data), plane->async_format_types, async_formats_size);
> +
> +	async_mod = modifiers_ptr(blob_data);
> +	for (i = 0; i < plane->async_modifier_count; i++) {
> +		for (j = 0; j < plane->async_format_count; j++) {
> +			if (!plane->funcs->format_mod_supported ||
> +			    plane->funcs->format_mod_supported(plane,
> +							       plane->async_format_types[j],
> +							       plane->async_modifiers[i])) {
> +				async_mod->formats |= 1ULL << j;
> +			}
> +		}
> +
> +		async_mod->modifier = plane->async_modifiers[i];
> +		async_mod->offset = 0;
> +		async_mod->pad = 0;
> +		async_mod++;
> +	}
> +
> +	drm_object_attach_property(&plane->base, config->async_modifiers_property,
> +				   blob->base.id);
> +
> +	return 0;
> +}

That is a verbatim copy of the existing code. Please refactor the
current code so that it can be reused.

> +
>  /**
>   * DOC: hotspot properties
>   *
> @@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct drm_device *dev,
>  	if (format_modifier_count)
>  		create_in_format_blob(dev, plane);
>  
> +	if (plane->async_modifier_count)
> +		create_in_format_async_blob(dev, plane);
> +
>  	return 0;
>  }
>  
> diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
> index 271765e2e9f2..0c116d6dfd27 100644
> --- a/include/drm/drm_mode_config.h
> +++ b/include/drm/drm_mode_config.h
> @@ -936,6 +936,12 @@ struct drm_mode_config {
>  	 */
>  	struct drm_property *modifiers_property;
>  
> +	/**
> +	 * @async_modifiers_property: Plane property to list support modifier/format
> +	 * combination for asynchronous flips.
> +	 */
> +	struct drm_property *async_modifiers_property;
> +
>  	/**
>  	 * @size_hints_property: Plane SIZE_HINTS property.
>  	 */
> diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
> index dd718c62ac31..d9571265251a 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -658,11 +658,21 @@ struct drm_plane {
>  	 */
>  	bool format_default;
>  
> +	/** @format_types: array of formats supported by this plane */
> +	uint32_t *async_format_types;
> +	/** @format_count: Size of the array pointed at by @format_types. */
> +	unsigned int async_format_count;
> +
>  	/** @modifiers: array of modifiers supported by this plane */
>  	uint64_t *modifiers;
>  	/** @modifier_count: Size of the array pointed at by @modifier_count. */
>  	unsigned int modifier_count;
>  
> +	/** @modifiers: array of modifiers supported by this plane */
> +	uint64_t *async_modifiers;
> +	/** @modifier_count: Size of the array pointed at by @modifier_count. */
> +	unsigned int async_modifier_count;

I'm not sure adding any of this is really useful. I think we could
just add a new .format_mod_supported_async() hook instead (which
could be implemented in terms of the current thing + something like
https://patchwork.freedesktop.org/patch/619047/?series=139807&rev=3

That would also be more flexible since it can allow specific
format+modifier combinations to be either accepted or rejected.

> +
>  	/**
>  	 * @crtc:
>  	 *
> -- 
> 2.25.1

-- 
Ville Syrjälä
Intel

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

* RE: [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-06 14:00   ` Ville Syrjälä
@ 2024-11-06 14:32     ` Murthy, Arun R
  2024-11-06 14:47       ` Ville Syrjälä
  0 siblings, 1 reply; 19+ messages in thread
From: Murthy, Arun R @ 2024-11-06 14:32 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org

> -----Original Message-----
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Sent: Wednesday, November 6, 2024 7:31 PM
> To: Murthy, Arun R <arun.r.murthy@intel.com>
> Cc: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> devel@lists.freedesktop.org
> Subject: Re: [PATCH 1/4] drm/plane: Add new plane property
> IN_FORMATS_ASYNC
> 
> On Tue, Nov 05, 2024 at 03:56:05PM +0530, Arun R Murthy wrote:
> > There exists a property IN_FORMATS which exposes the plane supported
> > modifiers/formats to the user. In some platforms when asynchronous
> > flips are used all of modifiers/formats mentioned in IN_FORMATS are
> > not supported. This patch adds a new plane property IN_FORMATS_ASYNC
> > to expose the async flips supported modifiers/formats so that user can
> > use this information ahead and done flips with unsupported
> > formats/modifiers. This will save flips failures.
> >
> > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > ---
> >  drivers/gpu/drm/drm_mode_config.c |  7 +++
> >  drivers/gpu/drm/drm_plane.c       | 73
> +++++++++++++++++++++++++++++++
> >  include/drm/drm_mode_config.h     |  6 +++
> >  include/drm/drm_plane.h           | 10 +++++
> >  4 files changed, 96 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/drm_mode_config.c
> > b/drivers/gpu/drm/drm_mode_config.c
> > index 37d2e0a4ef4b..cff189a2e751 100644
> > --- a/drivers/gpu/drm/drm_mode_config.c
> > +++ b/drivers/gpu/drm/drm_mode_config.c
> > @@ -379,6 +379,13 @@ static int
> drm_mode_create_standard_properties(struct drm_device *dev)
> >  		return -ENOMEM;
> >  	dev->mode_config.size_hints_property = prop;
> >
> > +	prop = drm_property_create(dev,
> > +				   DRM_MODE_PROP_IMMUTABLE |
> DRM_MODE_PROP_BLOB,
> > +				   "IN_FORMATS_ASYNC", 0);
> > +	if (!prop)
> > +		return -ENOMEM;
> > +	dev->mode_config.async_modifiers_property = prop;
> > +
> >  	return 0;
> >  }
> >
> > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> > index a28b22fdd7a4..01b8e6932fda 100644
> > --- a/drivers/gpu/drm/drm_plane.c
> > +++ b/drivers/gpu/drm/drm_plane.c
> > @@ -141,6 +141,12 @@
> >   *     various bugs in this area with inconsistencies between the capability
> >   *     flag and per-plane properties.
> >   *
> > + * IN_FORMATS_ASYNC:
> > + *     Blob property which contains the set of buffer format and modifier
> > + *     pairs supported by this plane for asynchronous flips. The blob is a struct
> > + *     drm_format_modifier_blob. Without this property the plane doesn't
> > + *     support buffers with modifiers. Userspace cannot change this property.
> > + *
> >   * SIZE_HINTS:
> >   *     Blob property which contains the set of recommended plane size
> >   *     which can used for simple "cursor like" use cases (eg. no scaling).
> > @@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device
> *dev, struct drm_plane *plane
> >  	return 0;
> >  }
> >
> > +static int create_in_format_async_blob(struct drm_device *dev, struct
> > +drm_plane *plane) {
> > +	const struct drm_mode_config *config = &dev->mode_config;
> > +	struct drm_property_blob *blob;
> > +	struct drm_format_modifier *async_mod;
> > +	size_t blob_size, async_formats_size, async_modifiers_size;
> > +	struct drm_format_modifier_blob *blob_data;
> > +	unsigned int i, j;
> > +
> > +	async_formats_size = sizeof(__u32) * plane->async_format_count;
> > +	if (WARN_ON(!async_formats_size)) {
> > +		/* 0 formats are never expected */
> > +		return 0;
> > +	}
> > +
> > +	async_modifiers_size =
> > +		sizeof(struct drm_format_modifier) * plane-
> >async_modifier_count;
> > +
> > +	blob_size = sizeof(struct drm_format_modifier_blob);
> > +	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
> > +	 * should be naturally aligned to 8B.
> > +	 */
> > +	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
> > +	blob_size += ALIGN(async_formats_size, 8);
> > +	blob_size += async_modifiers_size;
> > +
> > +	blob = drm_property_create_blob(dev, blob_size, NULL);
> > +	if (IS_ERR(blob))
> > +		return -1;
> > +
> > +	blob_data = blob->data;
> > +	blob_data->version = FORMAT_BLOB_CURRENT;
> > +	blob_data->count_formats = plane->async_format_count;
> > +	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
> > +	blob_data->count_modifiers = plane->async_modifier_count;
> > +
> > +	blob_data->modifiers_offset =
> > +		ALIGN(blob_data->formats_offset + async_formats_size, 8);
> > +
> > +	memcpy(formats_ptr(blob_data), plane->async_format_types,
> > +async_formats_size);
> > +
> > +	async_mod = modifiers_ptr(blob_data);
> > +	for (i = 0; i < plane->async_modifier_count; i++) {
> > +		for (j = 0; j < plane->async_format_count; j++) {
> > +			if (!plane->funcs->format_mod_supported ||
> > +			    plane->funcs->format_mod_supported(plane,
> > +							       plane-
> >async_format_types[j],
> > +							       plane-
> >async_modifiers[i])) {
> > +				async_mod->formats |= 1ULL << j;
> > +			}
> > +		}
> > +
> > +		async_mod->modifier = plane->async_modifiers[i];
> > +		async_mod->offset = 0;
> > +		async_mod->pad = 0;
> > +		async_mod++;
> > +	}
> > +
> > +	drm_object_attach_property(&plane->base, config-
> >async_modifiers_property,
> > +				   blob->base.id);
> > +
> > +	return 0;
> > +}
> 
> That is a verbatim copy of the existing code. Please refactor the current code so
> that it can be reused.
> 
Ok will look into it in the next revision.

> > +
> >  /**
> >   * DOC: hotspot properties
> >   *
> > @@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct
> drm_device *dev,
> >  	if (format_modifier_count)
> >  		create_in_format_blob(dev, plane);
> >
> > +	if (plane->async_modifier_count)
> > +		create_in_format_async_blob(dev, plane);
> > +
> >  	return 0;
> >  }
> >
> > diff --git a/include/drm/drm_mode_config.h
> > b/include/drm/drm_mode_config.h index 271765e2e9f2..0c116d6dfd27
> > 100644
> > --- a/include/drm/drm_mode_config.h
> > +++ b/include/drm/drm_mode_config.h
> > @@ -936,6 +936,12 @@ struct drm_mode_config {
> >  	 */
> >  	struct drm_property *modifiers_property;
> >
> > +	/**
> > +	 * @async_modifiers_property: Plane property to list support
> modifier/format
> > +	 * combination for asynchronous flips.
> > +	 */
> > +	struct drm_property *async_modifiers_property;
> > +
> >  	/**
> >  	 * @size_hints_property: Plane SIZE_HINTS property.
> >  	 */
> > diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index
> > dd718c62ac31..d9571265251a 100644
> > --- a/include/drm/drm_plane.h
> > +++ b/include/drm/drm_plane.h
> > @@ -658,11 +658,21 @@ struct drm_plane {
> >  	 */
> >  	bool format_default;
> >
> > +	/** @format_types: array of formats supported by this plane */
> > +	uint32_t *async_format_types;
> > +	/** @format_count: Size of the array pointed at by @format_types. */
> > +	unsigned int async_format_count;
> > +
> >  	/** @modifiers: array of modifiers supported by this plane */
> >  	uint64_t *modifiers;
> >  	/** @modifier_count: Size of the array pointed at by @modifier_count.
> */
> >  	unsigned int modifier_count;
> >
> > +	/** @modifiers: array of modifiers supported by this plane */
> > +	uint64_t *async_modifiers;
> > +	/** @modifier_count: Size of the array pointed at by @modifier_count.
> */
> > +	unsigned int async_modifier_count;
> 
> I'm not sure adding any of this is really useful. I think we could just add a new
> .format_mod_supported_async() hook instead (which could be implemented in
> terms of the current thing + something like
> https://patchwork.freedesktop.org/patch/619047/?series=139807&rev=3
> 
> That would also be more flexible since it can allow specific
> format+modifier combinations to be either accepted or rejected.
> 
This would not serve the purpose. The purpose here is to expose the supported list to the user so that user can have this ahead and check for the modifier/format before sending the flip. This would avoid async flip failures due to unsupported modifier/format.

This approach has been acknowledged from the userspace which can be located @ https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063

Thanks and Regards,
Arun R Murthy
-------------------
> > +
> >  	/**
> >  	 * @crtc:
> >  	 *
> > --
> > 2.25.1
> 
> --
> Ville Syrjälä
> Intel

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

* Re: [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-06 14:32     ` Murthy, Arun R
@ 2024-11-06 14:47       ` Ville Syrjälä
  0 siblings, 0 replies; 19+ messages in thread
From: Ville Syrjälä @ 2024-11-06 14:47 UTC (permalink / raw)
  To: Murthy, Arun R
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org

On Wed, Nov 06, 2024 at 02:32:28PM +0000, Murthy, Arun R wrote:
> > -----Original Message-----
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Sent: Wednesday, November 6, 2024 7:31 PM
> > To: Murthy, Arun R <arun.r.murthy@intel.com>
> > Cc: intel-xe@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; dri-
> > devel@lists.freedesktop.org
> > Subject: Re: [PATCH 1/4] drm/plane: Add new plane property
> > IN_FORMATS_ASYNC
> > 
> > On Tue, Nov 05, 2024 at 03:56:05PM +0530, Arun R Murthy wrote:
> > > There exists a property IN_FORMATS which exposes the plane supported
> > > modifiers/formats to the user. In some platforms when asynchronous
> > > flips are used all of modifiers/formats mentioned in IN_FORMATS are
> > > not supported. This patch adds a new plane property IN_FORMATS_ASYNC
> > > to expose the async flips supported modifiers/formats so that user can
> > > use this information ahead and done flips with unsupported
> > > formats/modifiers. This will save flips failures.
> > >
> > > Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> > > ---
> > >  drivers/gpu/drm/drm_mode_config.c |  7 +++
> > >  drivers/gpu/drm/drm_plane.c       | 73
> > +++++++++++++++++++++++++++++++
> > >  include/drm/drm_mode_config.h     |  6 +++
> > >  include/drm/drm_plane.h           | 10 +++++
> > >  4 files changed, 96 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/drm_mode_config.c
> > > b/drivers/gpu/drm/drm_mode_config.c
> > > index 37d2e0a4ef4b..cff189a2e751 100644
> > > --- a/drivers/gpu/drm/drm_mode_config.c
> > > +++ b/drivers/gpu/drm/drm_mode_config.c
> > > @@ -379,6 +379,13 @@ static int
> > drm_mode_create_standard_properties(struct drm_device *dev)
> > >  		return -ENOMEM;
> > >  	dev->mode_config.size_hints_property = prop;
> > >
> > > +	prop = drm_property_create(dev,
> > > +				   DRM_MODE_PROP_IMMUTABLE |
> > DRM_MODE_PROP_BLOB,
> > > +				   "IN_FORMATS_ASYNC", 0);
> > > +	if (!prop)
> > > +		return -ENOMEM;
> > > +	dev->mode_config.async_modifiers_property = prop;
> > > +
> > >  	return 0;
> > >  }
> > >
> > > diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> > > index a28b22fdd7a4..01b8e6932fda 100644
> > > --- a/drivers/gpu/drm/drm_plane.c
> > > +++ b/drivers/gpu/drm/drm_plane.c
> > > @@ -141,6 +141,12 @@
> > >   *     various bugs in this area with inconsistencies between the capability
> > >   *     flag and per-plane properties.
> > >   *
> > > + * IN_FORMATS_ASYNC:
> > > + *     Blob property which contains the set of buffer format and modifier
> > > + *     pairs supported by this plane for asynchronous flips. The blob is a struct
> > > + *     drm_format_modifier_blob. Without this property the plane doesn't
> > > + *     support buffers with modifiers. Userspace cannot change this property.
> > > + *
> > >   * SIZE_HINTS:
> > >   *     Blob property which contains the set of recommended plane size
> > >   *     which can used for simple "cursor like" use cases (eg. no scaling).
> > > @@ -249,6 +255,70 @@ static int create_in_format_blob(struct drm_device
> > *dev, struct drm_plane *plane
> > >  	return 0;
> > >  }
> > >
> > > +static int create_in_format_async_blob(struct drm_device *dev, struct
> > > +drm_plane *plane) {
> > > +	const struct drm_mode_config *config = &dev->mode_config;
> > > +	struct drm_property_blob *blob;
> > > +	struct drm_format_modifier *async_mod;
> > > +	size_t blob_size, async_formats_size, async_modifiers_size;
> > > +	struct drm_format_modifier_blob *blob_data;
> > > +	unsigned int i, j;
> > > +
> > > +	async_formats_size = sizeof(__u32) * plane->async_format_count;
> > > +	if (WARN_ON(!async_formats_size)) {
> > > +		/* 0 formats are never expected */
> > > +		return 0;
> > > +	}
> > > +
> > > +	async_modifiers_size =
> > > +		sizeof(struct drm_format_modifier) * plane-
> > >async_modifier_count;
> > > +
> > > +	blob_size = sizeof(struct drm_format_modifier_blob);
> > > +	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
> > > +	 * should be naturally aligned to 8B.
> > > +	 */
> > > +	BUILD_BUG_ON(sizeof(struct drm_format_modifier_blob) % 8);
> > > +	blob_size += ALIGN(async_formats_size, 8);
> > > +	blob_size += async_modifiers_size;
> > > +
> > > +	blob = drm_property_create_blob(dev, blob_size, NULL);
> > > +	if (IS_ERR(blob))
> > > +		return -1;
> > > +
> > > +	blob_data = blob->data;
> > > +	blob_data->version = FORMAT_BLOB_CURRENT;
> > > +	blob_data->count_formats = plane->async_format_count;
> > > +	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
> > > +	blob_data->count_modifiers = plane->async_modifier_count;
> > > +
> > > +	blob_data->modifiers_offset =
> > > +		ALIGN(blob_data->formats_offset + async_formats_size, 8);
> > > +
> > > +	memcpy(formats_ptr(blob_data), plane->async_format_types,
> > > +async_formats_size);
> > > +
> > > +	async_mod = modifiers_ptr(blob_data);
> > > +	for (i = 0; i < plane->async_modifier_count; i++) {
> > > +		for (j = 0; j < plane->async_format_count; j++) {
> > > +			if (!plane->funcs->format_mod_supported ||
> > > +			    plane->funcs->format_mod_supported(plane,
> > > +							       plane-
> > >async_format_types[j],
> > > +							       plane-
> > >async_modifiers[i])) {
> > > +				async_mod->formats |= 1ULL << j;
> > > +			}
> > > +		}
> > > +
> > > +		async_mod->modifier = plane->async_modifiers[i];
> > > +		async_mod->offset = 0;
> > > +		async_mod->pad = 0;
> > > +		async_mod++;
> > > +	}
> > > +
> > > +	drm_object_attach_property(&plane->base, config-
> > >async_modifiers_property,
> > > +				   blob->base.id);
> > > +
> > > +	return 0;
> > > +}
> > 
> > That is a verbatim copy of the existing code. Please refactor the current code so
> > that it can be reused.
> > 
> Ok will look into it in the next revision.
> 
> > > +
> > >  /**
> > >   * DOC: hotspot properties
> > >   *
> > > @@ -472,6 +542,9 @@ static int __drm_universal_plane_init(struct
> > drm_device *dev,
> > >  	if (format_modifier_count)
> > >  		create_in_format_blob(dev, plane);
> > >
> > > +	if (plane->async_modifier_count)
> > > +		create_in_format_async_blob(dev, plane);
> > > +
> > >  	return 0;
> > >  }
> > >
> > > diff --git a/include/drm/drm_mode_config.h
> > > b/include/drm/drm_mode_config.h index 271765e2e9f2..0c116d6dfd27
> > > 100644
> > > --- a/include/drm/drm_mode_config.h
> > > +++ b/include/drm/drm_mode_config.h
> > > @@ -936,6 +936,12 @@ struct drm_mode_config {
> > >  	 */
> > >  	struct drm_property *modifiers_property;
> > >
> > > +	/**
> > > +	 * @async_modifiers_property: Plane property to list support
> > modifier/format
> > > +	 * combination for asynchronous flips.
> > > +	 */
> > > +	struct drm_property *async_modifiers_property;
> > > +
> > >  	/**
> > >  	 * @size_hints_property: Plane SIZE_HINTS property.
> > >  	 */
> > > diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h index
> > > dd718c62ac31..d9571265251a 100644
> > > --- a/include/drm/drm_plane.h
> > > +++ b/include/drm/drm_plane.h
> > > @@ -658,11 +658,21 @@ struct drm_plane {
> > >  	 */
> > >  	bool format_default;
> > >
> > > +	/** @format_types: array of formats supported by this plane */
> > > +	uint32_t *async_format_types;
> > > +	/** @format_count: Size of the array pointed at by @format_types. */
> > > +	unsigned int async_format_count;
> > > +
> > >  	/** @modifiers: array of modifiers supported by this plane */
> > >  	uint64_t *modifiers;
> > >  	/** @modifier_count: Size of the array pointed at by @modifier_count.
> > */
> > >  	unsigned int modifier_count;
> > >
> > > +	/** @modifiers: array of modifiers supported by this plane */
> > > +	uint64_t *async_modifiers;
> > > +	/** @modifier_count: Size of the array pointed at by @modifier_count.
> > */
> > > +	unsigned int async_modifier_count;
> > 
> > I'm not sure adding any of this is really useful. I think we could just add a new
> > .format_mod_supported_async() hook instead (which could be implemented in
> > terms of the current thing + something like
> > https://patchwork.freedesktop.org/patch/619047/?series=139807&rev=3
> > 
> > That would also be more flexible since it can allow specific
> > format+modifier combinations to be either accepted or rejected.
> > 
> This would not serve the purpose. The purpose here is to expose the supported list to the user so that user can have this ahead and check for the modifier/format before sending the flip. This would avoid async flip failures due to unsupported modifier/format.

It would work just fine, and wouldn't affect the uapi at all.
The difference is that you don't have to bloat the plane struct
with those mostly unnecessary format/modifier lists.

> 
> This approach has been acknowledged from the userspace which can be located @ https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063
> 
> Thanks and Regards,
> Arun R Murthy
> -------------------
> > > +
> > >  	/**
> > >  	 * @crtc:
> > >  	 *
> > > --
> > > 2.25.1
> > 
> > --
> > Ville Syrjälä
> > Intel

-- 
Ville Syrjälä
Intel

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

* [PATCHv2/3] Expose modifiers/formats supported by async flips
  2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (6 preceding siblings ...)
  2024-11-05 13:21 ` ✗ Fi.CI.BAT: failure " Patchwork
@ 2024-11-18  7:48 ` Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
                     ` (2 more replies)
  7 siblings, 3 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:48 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

All of the formats/modifiers supported by the plane during synchronous
flips are nor supported by asynchronous flips. The formats/modifiers
exposed to user by IN_FORMATS exposes all formats/modifiers supported by
plane and this list varies for async flips. If the async flip supported
formats/modifiers are exposed to the user, user based on this list can
take decision to proceed or not and avoid flip failures during async
flips.
Discussion around this can be located @
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29618#note_2487123
Userspace implementation for IN_FORMARTS_ASYNC under review @
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063

Arun R Murthy (3):
  drm/plane: Add new plane property IN_FORMATS_ASYNC
  drm/plane: Expose function to create format/modifier blob
  drm/i915/display: Populate list of async supported formats/modifiers

 drivers/gpu/drm/drm_mode_config.c             |  7 +++
 drivers/gpu/drm/drm_plane.c                   | 50 ++++++++++++------
 .../drm/i915/display/skl_universal_plane.c    | 51 +++++++++++++++++++
 include/drm/drm_mode_config.h                 |  6 +++
 include/drm/drm_plane.h                       |  4 ++
 5 files changed, 103 insertions(+), 15 deletions(-)

-- 
2.25.1


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

* [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
@ 2024-11-18  7:48   ` Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
  2024-11-18  7:49   ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
  2 siblings, 0 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:48 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

There exists a property IN_FORMATS which exposes the plane supported
modifiers/formats to the user. In some platforms when asynchronous flips
are used all of modifiers/formats mentioned in IN_FORMATS are not
supported. This patch adds a new plane property IN_FORMATS_ASYNC to
expose the async flips supported modifiers/formats so that user can use
this information ahead and done flips with unsupported
formats/modifiers. This will save flips failures.

v2: Remove async variable from drm_plane (Ville)

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/drm_mode_config.c | 7 +++++++
 drivers/gpu/drm/drm_plane.c       | 6 ++++++
 include/drm/drm_mode_config.h     | 6 ++++++
 3 files changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 37d2e0a4ef4b..cff189a2e751 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -379,6 +379,13 @@ static int drm_mode_create_standard_properties(struct drm_device *dev)
 		return -ENOMEM;
 	dev->mode_config.size_hints_property = prop;
 
+	prop = drm_property_create(dev,
+				   DRM_MODE_PROP_IMMUTABLE | DRM_MODE_PROP_BLOB,
+				   "IN_FORMATS_ASYNC", 0);
+	if (!prop)
+		return -ENOMEM;
+	dev->mode_config.async_modifiers_property = prop;
+
 	return 0;
 }
 
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index a28b22fdd7a4..416818e54ccf 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -141,6 +141,12 @@
  *     various bugs in this area with inconsistencies between the capability
  *     flag and per-plane properties.
  *
+ * IN_FORMATS_ASYNC:
+ *     Blob property which contains the set of buffer format and modifier
+ *     pairs supported by this plane for asynchronous flips. The blob is a struct
+ *     drm_format_modifier_blob. Without this property the plane doesn't
+ *     support buffers with modifiers. Userspace cannot change this property.
+ *
  * SIZE_HINTS:
  *     Blob property which contains the set of recommended plane size
  *     which can used for simple "cursor like" use cases (eg. no scaling).
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index 271765e2e9f2..0c116d6dfd27 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -936,6 +936,12 @@ struct drm_mode_config {
 	 */
 	struct drm_property *modifiers_property;
 
+	/**
+	 * @async_modifiers_property: Plane property to list support modifier/format
+	 * combination for asynchronous flips.
+	 */
+	struct drm_property *async_modifiers_property;
+
 	/**
 	 * @size_hints_property: Plane SIZE_HINTS property.
 	 */
-- 
2.25.1


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

* [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2024-11-18  7:48   ` Arun R Murthy
  2024-11-18  7:49   ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
  2 siblings, 0 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:48 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Expose drm plane function to create formats/modifiers blob. This
function can be used to expose list of supported formats/modifiers for
sync/async flips.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 drivers/gpu/drm/drm_plane.c | 44 ++++++++++++++++++++++++-------------
 include/drm/drm_plane.h     |  4 ++++
 2 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 416818e54ccf..4f35eec2b777 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -191,7 +191,10 @@ modifiers_ptr(struct drm_format_modifier_blob *blob)
 	return (struct drm_format_modifier *)(((char *)blob) + blob->modifiers_offset);
 }
 
-static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane)
+int drm_plane_create_format_blob(struct drm_device *dev,
+				 struct drm_plane *plane, u64 *modifiers,
+				 unsigned int modifier_count, u32 *formats,
+				 unsigned int format_count, bool is_async)
 {
 	const struct drm_mode_config *config = &dev->mode_config;
 	struct drm_property_blob *blob;
@@ -200,14 +203,14 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
 	struct drm_format_modifier_blob *blob_data;
 	unsigned int i, j;
 
-	formats_size = sizeof(__u32) * plane->format_count;
+	formats_size = sizeof(__u32) * format_count;
 	if (WARN_ON(!formats_size)) {
 		/* 0 formats are never expected */
 		return 0;
 	}
 
 	modifiers_size =
-		sizeof(struct drm_format_modifier) * plane->modifier_count;
+		sizeof(struct drm_format_modifier) * modifier_count;
 
 	blob_size = sizeof(struct drm_format_modifier_blob);
 	/* Modifiers offset is a pointer to a struct with a 64 bit field so it
@@ -223,37 +226,45 @@ static int create_in_format_blob(struct drm_device *dev, struct drm_plane *plane
 
 	blob_data = blob->data;
 	blob_data->version = FORMAT_BLOB_CURRENT;
-	blob_data->count_formats = plane->format_count;
+	blob_data->count_formats = format_count;
 	blob_data->formats_offset = sizeof(struct drm_format_modifier_blob);
-	blob_data->count_modifiers = plane->modifier_count;
+	blob_data->count_modifiers = modifier_count;
 
 	blob_data->modifiers_offset =
 		ALIGN(blob_data->formats_offset + formats_size, 8);
 
-	memcpy(formats_ptr(blob_data), plane->format_types, formats_size);
+	memcpy(formats_ptr(blob_data), formats, formats_size);
 
 	mod = modifiers_ptr(blob_data);
-	for (i = 0; i < plane->modifier_count; i++) {
-		for (j = 0; j < plane->format_count; j++) {
-			if (!plane->funcs->format_mod_supported ||
+	for (i = 0; i < modifier_count; i++) {
+		for (j = 0; j < format_count; j++) {
+			if (is_async ||
+			    !plane->funcs->format_mod_supported ||
 			    plane->funcs->format_mod_supported(plane,
-							       plane->format_types[j],
-							       plane->modifiers[i])) {
+							       formats[j],
+							       modifiers[i])) {
 				mod->formats |= 1ULL << j;
 			}
 		}
 
-		mod->modifier = plane->modifiers[i];
+		mod->modifier = modifiers[i];
 		mod->offset = 0;
 		mod->pad = 0;
 		mod++;
 	}
 
-	drm_object_attach_property(&plane->base, config->modifiers_property,
-				   blob->base.id);
+	if (is_async)
+		drm_object_attach_property(&plane->base,
+					   config->async_modifiers_property,
+					   blob->base.id);
+	else
+		drm_object_attach_property(&plane->base,
+					   config->modifiers_property,
+					   blob->base.id);
 
 	return 0;
 }
+EXPORT_SYMBOL(drm_plane_create_format_blob);
 
 /**
  * DOC: hotspot properties
@@ -476,7 +487,10 @@ static int __drm_universal_plane_init(struct drm_device *dev,
 	}
 
 	if (format_modifier_count)
-		create_in_format_blob(dev, plane);
+		drm_plane_create_format_blob(dev, plane, plane->modifiers,
+					     format_modifier_count,
+					     plane->format_types, format_count,
+					     false);
 
 	return 0;
 }
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index dd718c62ac31..3c5c2c614af8 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -988,5 +988,9 @@ int drm_plane_create_scaling_filter_property(struct drm_plane *plane,
 int drm_plane_add_size_hints_property(struct drm_plane *plane,
 				      const struct drm_plane_size_hint *hints,
 				      int num_hints);
+int drm_plane_create_format_blob(struct drm_device *dev,
+				 struct drm_plane *plane, u64 *modifiers,
+				 unsigned int modifier_count, u32 *formats,
+				 unsigned int format_count, bool is_async);
 
 #endif
-- 
2.25.1


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

* [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
  2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
  2024-11-18  7:48   ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
@ 2024-11-18  7:49   ` Arun R Murthy
  2 siblings, 0 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:49 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Populate the list of formats/modifiers supported by async flip. Register
a async property and expose the same to user through blob.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../drm/i915/display/skl_universal_plane.c    | 51 +++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 038ca2ec5d7a..a6e84ac56277 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -170,6 +170,44 @@ static const u32 icl_hdr_plane_formats[] = {
 	DRM_FORMAT_XVYU16161616,
 };
 
+static u64 tgl_asyn_modifiers[] = {
+	DRM_FORMAT_MOD_LINEAR,
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_4_TILED,
+	I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_MTL_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_DG2_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_BMG_CCS,
+	I915_FORMAT_MOD_4_TILED_LNL_CCS,
+};
+
+static u64 icl_async_modifiers[] = {
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_Yf_TILED,
+	I915_FORMAT_MOD_Y_TILED_CCS,
+	I915_FORMAT_MOD_Yf_TILED_CCS,
+};
+
+static u64 skl_async_modifiers[] = {
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_Yf_TILED,
+};
+
+static u32 intel_async_formats[] = {
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_XRGB2101010,
+	DRM_FORMAT_XBGR2101010,
+	DRM_FORMAT_XRGB16161616F,
+	DRM_FORMAT_XBGR16161616F,
+};
+
 int skl_format_to_fourcc(int format, bool rgb_order, bool alpha)
 {
 	switch (format) {
@@ -2585,6 +2623,7 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	unsigned int supported_rotations;
 	unsigned int supported_csc;
 	const u64 *modifiers;
+	u64 *async_modifiers;
 	const u32 *formats;
 	int num_formats;
 	int ret;
@@ -2687,6 +2726,18 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	if (ret)
 		goto fail;
 
+	if (DISPLAY_VER(dev_priv) >= 12)
+		async_modifiers = tgl_asyn_modifiers;
+	else if (DISPLAY_VER(dev_priv) == 11)
+		async_modifiers = icl_async_modifiers;
+	else
+		async_modifiers = skl_async_modifiers;
+
+	drm_plane_create_format_blob(&dev_priv->drm, &plane->base,
+				     async_modifiers, sizeof(async_modifiers),
+				     intel_async_formats,
+				     sizeof(intel_async_formats), true);
+
 	if (DISPLAY_VER(dev_priv) >= 13)
 		supported_rotations = DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_180;
 	else
-- 
2.25.1


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

* [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
  2024-11-18  7:53 [PATCHv2/3] Expose modifiers/formats supported by async flips Arun R Murthy
@ 2024-11-18  7:53 ` Arun R Murthy
  2024-11-22  4:02   ` kernel test robot
                     ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Arun R Murthy @ 2024-11-18  7:53 UTC (permalink / raw)
  To: intel-xe, intel-gfx, dri-devel; +Cc: Arun R Murthy

Populate the list of formats/modifiers supported by async flip. Register
a async property and expose the same to user through blob.

Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
 .../drm/i915/display/skl_universal_plane.c    | 51 +++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index 038ca2ec5d7a..a6e84ac56277 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -170,6 +170,44 @@ static const u32 icl_hdr_plane_formats[] = {
 	DRM_FORMAT_XVYU16161616,
 };
 
+static u64 tgl_asyn_modifiers[] = {
+	DRM_FORMAT_MOD_LINEAR,
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_4_TILED,
+	I915_FORMAT_MOD_Y_TILED_GEN12_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_MTL_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_DG2_RC_CCS,
+	I915_FORMAT_MOD_4_TILED_BMG_CCS,
+	I915_FORMAT_MOD_4_TILED_LNL_CCS,
+};
+
+static u64 icl_async_modifiers[] = {
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_Yf_TILED,
+	I915_FORMAT_MOD_Y_TILED_CCS,
+	I915_FORMAT_MOD_Yf_TILED_CCS,
+};
+
+static u64 skl_async_modifiers[] = {
+	I915_FORMAT_MOD_X_TILED,
+	I915_FORMAT_MOD_Y_TILED,
+	I915_FORMAT_MOD_Yf_TILED,
+};
+
+static u32 intel_async_formats[] = {
+	DRM_FORMAT_RGB565,
+	DRM_FORMAT_XRGB8888,
+	DRM_FORMAT_XBGR8888,
+	DRM_FORMAT_ARGB8888,
+	DRM_FORMAT_ABGR8888,
+	DRM_FORMAT_XRGB2101010,
+	DRM_FORMAT_XBGR2101010,
+	DRM_FORMAT_XRGB16161616F,
+	DRM_FORMAT_XBGR16161616F,
+};
+
 int skl_format_to_fourcc(int format, bool rgb_order, bool alpha)
 {
 	switch (format) {
@@ -2585,6 +2623,7 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	unsigned int supported_rotations;
 	unsigned int supported_csc;
 	const u64 *modifiers;
+	u64 *async_modifiers;
 	const u32 *formats;
 	int num_formats;
 	int ret;
@@ -2687,6 +2726,18 @@ skl_universal_plane_create(struct drm_i915_private *dev_priv,
 	if (ret)
 		goto fail;
 
+	if (DISPLAY_VER(dev_priv) >= 12)
+		async_modifiers = tgl_asyn_modifiers;
+	else if (DISPLAY_VER(dev_priv) == 11)
+		async_modifiers = icl_async_modifiers;
+	else
+		async_modifiers = skl_async_modifiers;
+
+	drm_plane_create_format_blob(&dev_priv->drm, &plane->base,
+				     async_modifiers, sizeof(async_modifiers),
+				     intel_async_formats,
+				     sizeof(intel_async_formats), true);
+
 	if (DISPLAY_VER(dev_priv) >= 13)
 		supported_rotations = DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_180;
 	else
-- 
2.25.1


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

* Re: [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
  2024-11-18  7:53 ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
@ 2024-11-22  4:02   ` kernel test robot
  2024-11-25 13:05   ` kernel test robot
  2024-11-28 23:21   ` kernel test robot
  2 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2024-11-22  4:02 UTC (permalink / raw)
  To: Arun R Murthy, intel-xe, intel-gfx, dri-devel
  Cc: oe-kbuild-all, Arun R Murthy

Hi Arun,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-intel/for-linux-next-fixes]
[also build test WARNING on v6.12 next-20241121]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Arun-R-Murthy/drm-plane-Expose-function-to-create-format-modifier-blob/20241121-105652
base:   git://anongit.freedesktop.org/drm-intel for-linux-next-fixes
patch link:    https://lore.kernel.org/r/20241118075315.466009-4-arun.r.murthy%40intel.com
patch subject: [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
config: x86_64-randconfig-103-20241121 (https://download.01.org/0day-ci/archive/20241122/202411221109.nlXeWx72-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411221109.nlXeWx72-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/display/skl_universal_plane.c:2626:26-32: ERROR: application of sizeof to pointer

vim +2626 drivers/gpu/drm/i915/display/skl_universal_plane.c

  2510	
  2511	struct intel_plane *
  2512	skl_universal_plane_create(struct drm_i915_private *dev_priv,
  2513				   enum pipe pipe, enum plane_id plane_id)
  2514	{
  2515		const struct drm_plane_funcs *plane_funcs;
  2516		struct intel_plane *plane;
  2517		enum drm_plane_type plane_type;
  2518		unsigned int supported_rotations;
  2519		unsigned int supported_csc;
  2520		const u64 *modifiers;
  2521		u64 *async_modifiers;
  2522		const u32 *formats;
  2523		int num_formats;
  2524		int ret;
  2525	
  2526		plane = intel_plane_alloc();
  2527		if (IS_ERR(plane))
  2528			return plane;
  2529	
  2530		plane->pipe = pipe;
  2531		plane->id = plane_id;
  2532		plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane_id);
  2533	
  2534		intel_fbc_add_plane(skl_plane_fbc(dev_priv, pipe, plane_id), plane);
  2535	
  2536		if (DISPLAY_VER(dev_priv) >= 11) {
  2537			plane->min_width = icl_plane_min_width;
  2538			if (icl_is_hdr_plane(dev_priv, plane_id))
  2539				plane->max_width = icl_hdr_plane_max_width;
  2540			else
  2541				plane->max_width = icl_sdr_plane_max_width;
  2542			plane->max_height = icl_plane_max_height;
  2543			plane->min_cdclk = icl_plane_min_cdclk;
  2544		} else if (DISPLAY_VER(dev_priv) >= 10) {
  2545			plane->max_width = glk_plane_max_width;
  2546			plane->max_height = skl_plane_max_height;
  2547			plane->min_cdclk = glk_plane_min_cdclk;
  2548		} else {
  2549			plane->max_width = skl_plane_max_width;
  2550			plane->max_height = skl_plane_max_height;
  2551			plane->min_cdclk = skl_plane_min_cdclk;
  2552		}
  2553	
  2554		if (DISPLAY_VER(dev_priv) >= 13)
  2555			plane->max_stride = adl_plane_max_stride;
  2556		else
  2557			plane->max_stride = skl_plane_max_stride;
  2558	
  2559		if (DISPLAY_VER(dev_priv) >= 12)
  2560			plane->min_alignment = tgl_plane_min_alignment;
  2561		else
  2562			plane->min_alignment = skl_plane_min_alignment;
  2563	
  2564		if (DISPLAY_VER(dev_priv) >= 11) {
  2565			plane->update_noarm = icl_plane_update_noarm;
  2566			plane->update_arm = icl_plane_update_arm;
  2567			plane->disable_arm = icl_plane_disable_arm;
  2568		} else {
  2569			plane->update_noarm = skl_plane_update_noarm;
  2570			plane->update_arm = skl_plane_update_arm;
  2571			plane->disable_arm = skl_plane_disable_arm;
  2572		}
  2573		plane->get_hw_state = skl_plane_get_hw_state;
  2574		plane->check_plane = skl_plane_check;
  2575	
  2576		if (plane_id == PLANE_1) {
  2577			plane->need_async_flip_toggle_wa = IS_DISPLAY_VER(dev_priv, 9, 10);
  2578			plane->async_flip = skl_plane_async_flip;
  2579			plane->enable_flip_done = skl_plane_enable_flip_done;
  2580			plane->disable_flip_done = skl_plane_disable_flip_done;
  2581		}
  2582	
  2583		if (DISPLAY_VER(dev_priv) >= 11)
  2584			formats = icl_get_plane_formats(dev_priv, pipe,
  2585							plane_id, &num_formats);
  2586		else if (DISPLAY_VER(dev_priv) >= 10)
  2587			formats = glk_get_plane_formats(dev_priv, pipe,
  2588							plane_id, &num_formats);
  2589		else
  2590			formats = skl_get_plane_formats(dev_priv, pipe,
  2591							plane_id, &num_formats);
  2592	
  2593		if (DISPLAY_VER(dev_priv) >= 12)
  2594			plane_funcs = &gen12_plane_funcs;
  2595		else
  2596			plane_funcs = &skl_plane_funcs;
  2597	
  2598		if (plane_id == PLANE_1)
  2599			plane_type = DRM_PLANE_TYPE_PRIMARY;
  2600		else
  2601			plane_type = DRM_PLANE_TYPE_OVERLAY;
  2602	
  2603		modifiers = intel_fb_plane_get_modifiers(dev_priv,
  2604							 skl_get_plane_caps(dev_priv, pipe, plane_id));
  2605	
  2606		ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
  2607					       0, plane_funcs,
  2608					       formats, num_formats, modifiers,
  2609					       plane_type,
  2610					       "plane %d%c", plane_id + 1,
  2611					       pipe_name(pipe));
  2612	
  2613		kfree(modifiers);
  2614	
  2615		if (ret)
  2616			goto fail;
  2617	
  2618		if (DISPLAY_VER(dev_priv) >= 12)
  2619			async_modifiers = tgl_asyn_modifiers;
  2620		else if (DISPLAY_VER(dev_priv) == 11)
  2621			async_modifiers = icl_async_modifiers;
  2622		else
  2623			async_modifiers = skl_async_modifiers;
  2624	
  2625		drm_plane_create_format_blob(&dev_priv->drm, &plane->base,
> 2626					     async_modifiers, sizeof(async_modifiers),
  2627					     intel_async_formats,
  2628					     sizeof(intel_async_formats), true);
  2629	
  2630		if (DISPLAY_VER(dev_priv) >= 13)
  2631			supported_rotations = DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_180;
  2632		else
  2633			supported_rotations =
  2634				DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_90 |
  2635				DRM_MODE_ROTATE_180 | DRM_MODE_ROTATE_270;
  2636	
  2637		if (DISPLAY_VER(dev_priv) >= 11)
  2638			supported_rotations |= DRM_MODE_REFLECT_X;
  2639	
  2640		drm_plane_create_rotation_property(&plane->base,
  2641						   DRM_MODE_ROTATE_0,
  2642						   supported_rotations);
  2643	
  2644		supported_csc = BIT(DRM_COLOR_YCBCR_BT601) | BIT(DRM_COLOR_YCBCR_BT709);
  2645	
  2646		if (DISPLAY_VER(dev_priv) >= 10)
  2647			supported_csc |= BIT(DRM_COLOR_YCBCR_BT2020);
  2648	
  2649		drm_plane_create_color_properties(&plane->base,
  2650						  supported_csc,
  2651						  BIT(DRM_COLOR_YCBCR_LIMITED_RANGE) |
  2652						  BIT(DRM_COLOR_YCBCR_FULL_RANGE),
  2653						  DRM_COLOR_YCBCR_BT709,
  2654						  DRM_COLOR_YCBCR_LIMITED_RANGE);
  2655	
  2656		drm_plane_create_alpha_property(&plane->base);
  2657		drm_plane_create_blend_mode_property(&plane->base,
  2658						     BIT(DRM_MODE_BLEND_PIXEL_NONE) |
  2659						     BIT(DRM_MODE_BLEND_PREMULTI) |
  2660						     BIT(DRM_MODE_BLEND_COVERAGE));
  2661	
  2662		drm_plane_create_zpos_immutable_property(&plane->base, plane_id);
  2663	
  2664		if (DISPLAY_VER(dev_priv) >= 12)
  2665			drm_plane_enable_fb_damage_clips(&plane->base);
  2666	
  2667		if (DISPLAY_VER(dev_priv) >= 11)
  2668			drm_plane_create_scaling_filter_property(&plane->base,
  2669							BIT(DRM_SCALING_FILTER_DEFAULT) |
  2670							BIT(DRM_SCALING_FILTER_NEAREST_NEIGHBOR));
  2671	
  2672		intel_plane_helper_add(plane);
  2673	
  2674		return plane;
  2675	
  2676	fail:
  2677		intel_plane_free(plane);
  2678	
  2679		return ERR_PTR(ret);
  2680	}
  2681	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

* Re: [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
  2024-11-18  7:53 ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
  2024-11-22  4:02   ` kernel test robot
@ 2024-11-25 13:05   ` kernel test robot
  2024-11-28 23:21   ` kernel test robot
  2 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2024-11-25 13:05 UTC (permalink / raw)
  To: Arun R Murthy
  Cc: oe-lkp, lkp, intel-gfx, intel-xe, ltp, dri-devel, Arun R Murthy,
	oliver.sang



Hello,

kernel test robot noticed "BUG:KASAN:global-out-of-bounds_in_drm_plane_create_format_blob" on:

commit: ab8ee1a4b22d80e3812a6d9990b92d77eee4a17f ("[PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers")
url: https://github.com/intel-lab-lkp/linux/commits/Arun-R-Murthy/drm-plane-Expose-function-to-create-format-modifier-blob/20241121-105652
base: git://anongit.freedesktop.org/drm-intel for-linux-next-fixes
patch link: https://lore.kernel.org/all/20241118075315.466009-4-arun.r.murthy@intel.com/
patch subject: [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers

in testcase: ltp
version: ltp-x86_64-14c1f76-1_20241111
with following parameters:

	test: lvm.local-00



config: x86_64-rhel-9.4-ltp
compiler: gcc-12
test machine: 8 threads 1 sockets Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz (Kaby Lake) with 32G memory

(please refer to attached dmesg/kmsg for entire log/backtrace)



If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <oliver.sang@intel.com>
| Closes: https://lore.kernel.org/oe-lkp/202411252029.30061fde-lkp@intel.com


kern :err : [   44.116017] BUG: KASAN: global-out-of-bounds in drm_plane_create_format_blob (drivers/gpu/drm/drm_plane.c:191 drivers/gpu/drm/drm_plane.c:238) drm
kern  :notice: [   44.129098] i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
kern  :err   : [   44.138344] Read of size 144 at addr ffffffffc1a99bc0 by task (udev-worker)/230

kern  :err   : [   44.138357] CPU: 1 UID: 0 PID: 230 Comm: (udev-worker) Not tainted 6.12.0-00003-gab8ee1a4b22d #1
kern  :err   : [   44.138361] Hardware name: Dell Inc. OptiPlex 7050/062KRH, BIOS 1.2.0 12/22/2016
kern  :err   : [   44.138363] Call Trace:
kern  :err   : [   44.138365]  <TASK>
kern :err : [   44.138367] dump_stack_lvl (lib/dump_stack.c:123 (discriminator 1)) 
kern :err : [   44.138376] print_address_description+0x2c/0x3a0 
kern :err : [   44.196003] ? drm_plane_create_format_blob (drivers/gpu/drm/drm_plane.c:191 drivers/gpu/drm/drm_plane.c:238) drm
kern :err : [   44.202599] print_report (mm/kasan/report.c:489) 
kern :err : [   44.206894] ? kasan_addr_to_slab (mm/kasan/common.c:37) 
kern :err : [   44.211709] ? drm_plane_create_format_blob (drivers/gpu/drm/drm_plane.c:191 drivers/gpu/drm/drm_plane.c:238) drm
kern :err : [   44.218254] kasan_report (mm/kasan/report.c:603) 
kern :err : [   44.222465] ? drm_plane_create_format_blob (drivers/gpu/drm/drm_plane.c:191 drivers/gpu/drm/drm_plane.c:238) drm
kern :err : [   44.229022] kasan_check_range (mm/kasan/generic.c:183 mm/kasan/generic.c:189) 
kern :err : [   44.233763] __asan_memcpy (mm/kasan/shadow.c:105) 
kern :err : [   44.238065] drm_plane_create_format_blob (drivers/gpu/drm/drm_plane.c:191 drivers/gpu/drm/drm_plane.c:238) drm
kern :err : [   44.244436] ? skl_universal_plane_create (drivers/gpu/drm/i915/display/skl_universal_plane.c:2615) i915
kern :err : [   44.251192] skl_universal_plane_create (drivers/gpu/drm/i915/display/skl_universal_plane.c:2630) i915
kern :err : [   44.257773] intel_crtc_init (drivers/gpu/drm/i915/display/intel_crtc.c:312) i915
kern :err : [   44.263672] ? intel_gmbus_setup (drivers/gpu/drm/i915/display/intel_gmbus.c:935) i915
kern :err : [   44.269640] intel_display_driver_probe_nogem (drivers/gpu/drm/i915/display/intel_display_driver.c:441) i915
kern :err : [   44.277003] i915_driver_probe (drivers/gpu/drm/i915/i915_driver.c:832) i915
kern :err : [   44.282751] ? __pfx_i915_driver_probe (drivers/gpu/drm/i915/i915_driver.c:751) i915
kern :err : [   44.289031] ? drm_privacy_screen_get (drivers/gpu/drm/drm_privacy_screen.c:168) drm
kern :err : [   44.295046] ? intel_display_driver_probe_defer (drivers/gpu/drm/i915/display/intel_display_driver.c:81) i915
kern :err : [   44.302188] ? i915_pci_probe (drivers/gpu/drm/i915/i915_pci.c:998) i915
kern :err : [   44.307853] ? __pfx_i915_pci_probe (drivers/gpu/drm/i915/i915_pci.c:959) i915
kern :err : [   44.314024] local_pci_probe (drivers/pci/pci-driver.c:324) 
kern :err : [   44.318585] pci_call_probe (drivers/pci/pci-driver.c:392) 
kern :err : [   44.323139] ? __pfx_pci_call_probe (drivers/pci/pci-driver.c:352) 
kern :err : [   44.328232] ? pci_assign_irq (drivers/pci/irq.c:149) 
kern :err : [   44.332888] ? pci_match_device (drivers/pci/pci-driver.c:159 (discriminator 1)) 
kern :err : [   44.337812] pci_device_probe (drivers/pci/pci-driver.c:452) 
kern :err : [   44.342468] ? pci_dma_configure (drivers/pci/pci-driver.c:1656) 
kern :err : [   44.347478] really_probe (drivers/base/dd.c:579 drivers/base/dd.c:658) 
kern :err : [   44.351871] __driver_probe_device (drivers/base/dd.c:800) 
kern :err : [   44.357038] driver_probe_device (drivers/base/dd.c:830) 
kern :err : [   44.361948] __driver_attach (drivers/base/dd.c:1217) 
kern :err : [   44.366602] ? __pfx___driver_attach (drivers/base/dd.c:1157) 
kern :err : [   44.371767] bus_for_each_dev (drivers/base/bus.c:370) 
kern :err : [   44.376413] ? __kasan_slab_alloc (mm/kasan/common.c:318 mm/kasan/common.c:345) 
kern :err : [   44.381325] ? __pfx_bus_for_each_dev (drivers/base/bus.c:358) 
kern :err : [   44.386587] ? __pfx__raw_spin_lock (kernel/locking/spinlock.c:153) 
kern :err : [   44.391677] ? klist_add_tail (include/linux/list.h:150 include/linux/list.h:183 lib/klist.c:104 lib/klist.c:137) 
kern :err : [   44.396421] bus_add_driver (drivers/base/bus.c:675) 
kern :err : [   44.400984] driver_register (drivers/base/driver.c:246) 
kern :err : [   44.405631] i915_init (drivers/gpu/drm/i915/i915_driver.c:1395) i915
kern :err : [   44.410605] ? __pfx_i915_init (drivers/gpu/drm/i915/i915_config.c:13) i915
kern :err : [   44.416150] do_one_initcall (init/main.c:1269) 
kern :err : [   44.420704] ? __pfx_do_one_initcall (init/main.c:1260) 
kern :err : [   44.425872] ? __asan_register_globals (mm/kasan/generic.c:232 (discriminator 3)) 
kern :err : [   44.431218] ? kasan_unpoison (mm/kasan/shadow.c:156 mm/kasan/shadow.c:182) 
kern :err : [   44.435787] do_init_module (kernel/module/main.c:2543) 
kern :err : [   44.440356] load_module (kernel/module/main.c:3009) 
kern :err : [   44.444831] ? ima_post_read_file (security/integrity/ima/ima_main.c:835 security/integrity/ima/ima_main.c:817) 
kern :err : [   44.449914] ? __pfx_load_module (kernel/module/main.c:2856) 
kern :err : [   44.454736] ? security_kernel_post_read_file (security/security.c:3356) 
kern :err : [   44.460698] ? __pfx_kernel_read_file (fs/kernel_read_file.c:38) 
kern :err : [   44.465953] ? __pfx_down_write_killable (kernel/locking/rwsem.c:1586) 
kern :err : [   44.471467] ? init_module_from_file (kernel/module/main.c:3198) 
kern :err : [   44.476720] init_module_from_file (kernel/module/main.c:3198) 
kern :err : [   44.481796] ? __pfx_init_module_from_file (kernel/module/main.c:3174) 
kern :err : [   44.487485] ? __pfx_vm_mmap_pgoff (mm/util.c:578) 
kern :err : [   44.492477] ? __pfx__raw_spin_lock (kernel/locking/spinlock.c:153) 
kern :err : [   44.497559] ? ksys_mmap_pgoff (mm/mmap.c:547) 
kern :err : [   44.502382] idempotent_init_module (kernel/module/main.c:3210) 
kern :err : [   44.507642] ? __pfx_idempotent_init_module (kernel/module/main.c:3202) 
kern :err : [   44.513422] ? __pfx___seccomp_filter (kernel/seccomp.c:1218) 
kern :err : [   44.518687] ? fdget (include/linux/atomic/atomic-arch-fallback.h:479 include/linux/atomic/atomic-instrumented.h:50 fs/file.c:1114 fs/file.c:1128) 
kern :err : [   44.522549] ? security_capable (security/security.c:1143) 
kern :err : [   44.527277] __x64_sys_finit_module (include/linux/file.h:68 kernel/module/main.c:3238 kernel/module/main.c:3220 kernel/module/main.c:3220) 
kern :err : [   44.532443] do_syscall_64 (arch/x86/entry/common.c:52 arch/x86/entry/common.c:83) 
kern :err : [   44.536824] ? sched_clock (arch/x86/include/asm/preempt.h:94 arch/x86/kernel/tsc.c:285) 
kern :err : [   44.541029] ? sched_clock_cpu (kernel/sched/clock.c:394) 
kern :err : [   44.545767] ? clockevents_program_event (kernel/time/clockevents.c:334 (discriminator 3)) 
kern :err : [   44.551465] ? __pfx_sched_clock_cpu (kernel/sched/clock.c:389) 
kern :err : [   44.556639] ? hrtimer_interrupt (kernel/time/hrtimer.c:1830) 
kern :err : [   44.561639] ? irqtime_account_irq (kernel/sched/cputime.c:64) 
kern :err : [   44.566730] ? __irq_exit_rcu (kernel/softirq.c:620 kernel/softirq.c:639) 
kern :err : [   44.571387] entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130) 
kern  :err   : [   44.577175] RIP: 0033:0x7f6c1bf48799
kern :err : [ 44.581479] Code: 08 89 e8 5b 5d c3 66 2e 0f 1f 84 00 00 00 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 37 06 0d 00 f7 d8 64 89 01 48
All code
========
   0:	08 89 e8 5b 5d c3    	or     %cl,-0x3ca2a418(%rcx)
   6:	66 2e 0f 1f 84 00 00 	cs nopw 0x0(%rax,%rax,1)
   d:	00 00 00 
  10:	90                   	nop
  11:	48 89 f8             	mov    %rdi,%rax
  14:	48 89 f7             	mov    %rsi,%rdi
  17:	48 89 d6             	mov    %rdx,%rsi
  1a:	48 89 ca             	mov    %rcx,%rdx
  1d:	4d 89 c2             	mov    %r8,%r10
  20:	4d 89 c8             	mov    %r9,%r8
  23:	4c 8b 4c 24 08       	mov    0x8(%rsp),%r9
  28:	0f 05                	syscall
  2a:*	48 3d 01 f0 ff ff    	cmp    $0xfffffffffffff001,%rax		<-- trapping instruction
  30:	73 01                	jae    0x33
  32:	c3                   	ret
  33:	48 8b 0d 37 06 0d 00 	mov    0xd0637(%rip),%rcx        # 0xd0671
  3a:	f7 d8                	neg    %eax
  3c:	64 89 01             	mov    %eax,%fs:(%rcx)
  3f:	48                   	rex.W

Code starting with the faulting instruction
===========================================
   0:	48 3d 01 f0 ff ff    	cmp    $0xfffffffffffff001,%rax
   6:	73 01                	jae    0x9
   8:	c3                   	ret
   9:	48 8b 0d 37 06 0d 00 	mov    0xd0637(%rip),%rcx        # 0xd0647
  10:	f7 d8                	neg    %eax
  12:	64 89 01             	mov    %eax,%fs:(%rcx)
  15:	48                   	rex.W


The kernel config and materials to reproduce are available at:
https://download.01.org/0day-ci/archive/20241125/202411252029.30061fde-lkp@intel.com



-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


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

* Re: [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
  2024-11-18  7:53 ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
  2024-11-22  4:02   ` kernel test robot
  2024-11-25 13:05   ` kernel test robot
@ 2024-11-28 23:21   ` kernel test robot
  2 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2024-11-28 23:21 UTC (permalink / raw)
  To: Arun R Murthy, intel-xe, intel-gfx, dri-devel
  Cc: oe-kbuild-all, Arun R Murthy

Hi Arun,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-intel/for-linux-next-fixes]
[also build test WARNING on v6.12 next-20241128]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Arun-R-Murthy/drm-plane-Expose-function-to-create-format-modifier-blob/20241121-105652
base:   git://anongit.freedesktop.org/drm-intel for-linux-next-fixes
patch link:    https://lore.kernel.org/r/20241118075315.466009-4-arun.r.murthy%40intel.com
patch subject: [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers
config: x86_64-randconfig-103-20241121 (https://download.01.org/0day-ci/archive/20241129/202411290757.FcxceZlQ-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411290757.FcxceZlQ-lkp@intel.com/

cocci warnings: (new ones prefixed by >>)
>> drivers/gpu/drm/i915/display/skl_universal_plane.c:2626:26-32: ERROR: application of sizeof to pointer

vim +2626 drivers/gpu/drm/i915/display/skl_universal_plane.c

  2510	
  2511	struct intel_plane *
  2512	skl_universal_plane_create(struct drm_i915_private *dev_priv,
  2513				   enum pipe pipe, enum plane_id plane_id)
  2514	{
  2515		const struct drm_plane_funcs *plane_funcs;
  2516		struct intel_plane *plane;
  2517		enum drm_plane_type plane_type;
  2518		unsigned int supported_rotations;
  2519		unsigned int supported_csc;
  2520		const u64 *modifiers;
  2521		u64 *async_modifiers;
  2522		const u32 *formats;
  2523		int num_formats;
  2524		int ret;
  2525	
  2526		plane = intel_plane_alloc();
  2527		if (IS_ERR(plane))
  2528			return plane;
  2529	
  2530		plane->pipe = pipe;
  2531		plane->id = plane_id;
  2532		plane->frontbuffer_bit = INTEL_FRONTBUFFER(pipe, plane_id);
  2533	
  2534		intel_fbc_add_plane(skl_plane_fbc(dev_priv, pipe, plane_id), plane);
  2535	
  2536		if (DISPLAY_VER(dev_priv) >= 11) {
  2537			plane->min_width = icl_plane_min_width;
  2538			if (icl_is_hdr_plane(dev_priv, plane_id))
  2539				plane->max_width = icl_hdr_plane_max_width;
  2540			else
  2541				plane->max_width = icl_sdr_plane_max_width;
  2542			plane->max_height = icl_plane_max_height;
  2543			plane->min_cdclk = icl_plane_min_cdclk;
  2544		} else if (DISPLAY_VER(dev_priv) >= 10) {
  2545			plane->max_width = glk_plane_max_width;
  2546			plane->max_height = skl_plane_max_height;
  2547			plane->min_cdclk = glk_plane_min_cdclk;
  2548		} else {
  2549			plane->max_width = skl_plane_max_width;
  2550			plane->max_height = skl_plane_max_height;
  2551			plane->min_cdclk = skl_plane_min_cdclk;
  2552		}
  2553	
  2554		if (DISPLAY_VER(dev_priv) >= 13)
  2555			plane->max_stride = adl_plane_max_stride;
  2556		else
  2557			plane->max_stride = skl_plane_max_stride;
  2558	
  2559		if (DISPLAY_VER(dev_priv) >= 12)
  2560			plane->min_alignment = tgl_plane_min_alignment;
  2561		else
  2562			plane->min_alignment = skl_plane_min_alignment;
  2563	
  2564		if (DISPLAY_VER(dev_priv) >= 11) {
  2565			plane->update_noarm = icl_plane_update_noarm;
  2566			plane->update_arm = icl_plane_update_arm;
  2567			plane->disable_arm = icl_plane_disable_arm;
  2568		} else {
  2569			plane->update_noarm = skl_plane_update_noarm;
  2570			plane->update_arm = skl_plane_update_arm;
  2571			plane->disable_arm = skl_plane_disable_arm;
  2572		}
  2573		plane->get_hw_state = skl_plane_get_hw_state;
  2574		plane->check_plane = skl_plane_check;
  2575	
  2576		if (plane_id == PLANE_1) {
  2577			plane->need_async_flip_toggle_wa = IS_DISPLAY_VER(dev_priv, 9, 10);
  2578			plane->async_flip = skl_plane_async_flip;
  2579			plane->enable_flip_done = skl_plane_enable_flip_done;
  2580			plane->disable_flip_done = skl_plane_disable_flip_done;
  2581		}
  2582	
  2583		if (DISPLAY_VER(dev_priv) >= 11)
  2584			formats = icl_get_plane_formats(dev_priv, pipe,
  2585							plane_id, &num_formats);
  2586		else if (DISPLAY_VER(dev_priv) >= 10)
  2587			formats = glk_get_plane_formats(dev_priv, pipe,
  2588							plane_id, &num_formats);
  2589		else
  2590			formats = skl_get_plane_formats(dev_priv, pipe,
  2591							plane_id, &num_formats);
  2592	
  2593		if (DISPLAY_VER(dev_priv) >= 12)
  2594			plane_funcs = &gen12_plane_funcs;
  2595		else
  2596			plane_funcs = &skl_plane_funcs;
  2597	
  2598		if (plane_id == PLANE_1)
  2599			plane_type = DRM_PLANE_TYPE_PRIMARY;
  2600		else
  2601			plane_type = DRM_PLANE_TYPE_OVERLAY;
  2602	
  2603		modifiers = intel_fb_plane_get_modifiers(dev_priv,
  2604							 skl_get_plane_caps(dev_priv, pipe, plane_id));
  2605	
  2606		ret = drm_universal_plane_init(&dev_priv->drm, &plane->base,
  2607					       0, plane_funcs,
  2608					       formats, num_formats, modifiers,
  2609					       plane_type,
  2610					       "plane %d%c", plane_id + 1,
  2611					       pipe_name(pipe));
  2612	
  2613		kfree(modifiers);
  2614	
  2615		if (ret)
  2616			goto fail;
  2617	
  2618		if (DISPLAY_VER(dev_priv) >= 12)
  2619			async_modifiers = tgl_asyn_modifiers;
  2620		else if (DISPLAY_VER(dev_priv) == 11)
  2621			async_modifiers = icl_async_modifiers;
  2622		else
  2623			async_modifiers = skl_async_modifiers;
  2624	
  2625		drm_plane_create_format_blob(&dev_priv->drm, &plane->base,
> 2626					     async_modifiers, sizeof(async_modifiers),
  2627					     intel_async_formats,
  2628					     sizeof(intel_async_formats), true);
  2629	
  2630		if (DISPLAY_VER(dev_priv) >= 13)
  2631			supported_rotations = DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_180;
  2632		else
  2633			supported_rotations =
  2634				DRM_MODE_ROTATE_0 | DRM_MODE_ROTATE_90 |
  2635				DRM_MODE_ROTATE_180 | DRM_MODE_ROTATE_270;
  2636	
  2637		if (DISPLAY_VER(dev_priv) >= 11)
  2638			supported_rotations |= DRM_MODE_REFLECT_X;
  2639	
  2640		drm_plane_create_rotation_property(&plane->base,
  2641						   DRM_MODE_ROTATE_0,
  2642						   supported_rotations);
  2643	
  2644		supported_csc = BIT(DRM_COLOR_YCBCR_BT601) | BIT(DRM_COLOR_YCBCR_BT709);
  2645	
  2646		if (DISPLAY_VER(dev_priv) >= 10)
  2647			supported_csc |= BIT(DRM_COLOR_YCBCR_BT2020);
  2648	
  2649		drm_plane_create_color_properties(&plane->base,
  2650						  supported_csc,
  2651						  BIT(DRM_COLOR_YCBCR_LIMITED_RANGE) |
  2652						  BIT(DRM_COLOR_YCBCR_FULL_RANGE),
  2653						  DRM_COLOR_YCBCR_BT709,
  2654						  DRM_COLOR_YCBCR_LIMITED_RANGE);
  2655	
  2656		drm_plane_create_alpha_property(&plane->base);
  2657		drm_plane_create_blend_mode_property(&plane->base,
  2658						     BIT(DRM_MODE_BLEND_PIXEL_NONE) |
  2659						     BIT(DRM_MODE_BLEND_PREMULTI) |
  2660						     BIT(DRM_MODE_BLEND_COVERAGE));
  2661	
  2662		drm_plane_create_zpos_immutable_property(&plane->base, plane_id);
  2663	
  2664		if (DISPLAY_VER(dev_priv) >= 12)
  2665			drm_plane_enable_fb_damage_clips(&plane->base);
  2666	
  2667		if (DISPLAY_VER(dev_priv) >= 11)
  2668			drm_plane_create_scaling_filter_property(&plane->base,
  2669							BIT(DRM_SCALING_FILTER_DEFAULT) |
  2670							BIT(DRM_SCALING_FILTER_NEAREST_NEIGHBOR));
  2671	
  2672		intel_plane_helper_add(plane);
  2673	
  2674		return plane;
  2675	
  2676	fail:
  2677		intel_plane_free(plane);
  2678	
  2679		return ERR_PTR(ret);
  2680	}
  2681	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

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

end of thread, other threads:[~2024-11-28 23:21 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
2024-11-05 10:26 ` [PATCH 1/4] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2024-11-06 14:00   ` Ville Syrjälä
2024-11-06 14:32     ` Murthy, Arun R
2024-11-06 14:47       ` Ville Syrjälä
2024-11-05 10:26 ` [PATCH 2/4] drm/i915/fb: Add async field to the modifiers description Arun R Murthy
2024-11-05 10:26 ` [PATCH 3/4] drm/i915/display: Add async_flip flag in get_modifiers Arun R Murthy
2024-11-05 10:26 ` [PATCH 4/4] drm/i915/display: Add async supported formats/modifiers Arun R Murthy
2024-11-05 12:10 ` ✗ Fi.CI.CHECKPATCH: warning for Expose modifiers/formats supported by async flips Patchwork
2024-11-05 12:10 ` ✗ Fi.CI.SPARSE: " Patchwork
2024-11-05 13:21 ` ✗ Fi.CI.BAT: failure " Patchwork
2024-11-18  7:48 ` [PATCHv2/3] " Arun R Murthy
2024-11-18  7:48   ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2024-11-18  7:48   ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
2024-11-18  7:49   ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
  -- strict thread matches above, loose matches on Subject: below --
2024-11-18  7:53 [PATCHv2/3] Expose modifiers/formats supported by async flips Arun R Murthy
2024-11-18  7:53 ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
2024-11-22  4:02   ` kernel test robot
2024-11-25 13:05   ` kernel test robot
2024-11-28 23:21   ` kernel test robot

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