Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [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
  0 siblings, 0 replies; 13+ 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] 13+ messages in thread

* [PATCHv2/3] Expose modifiers/formats supported by async flips
@ 2024-11-18  7:53 Arun R Murthy
  2024-11-18  7:53 ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ 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

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] 13+ messages in thread

* [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC
  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-18  7:53 ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 13+ 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

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] 13+ messages in thread

* [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob
  2024-11-18  7:53 [PATCHv2/3] Expose modifiers/formats supported by async flips Arun R Murthy
  2024-11-18  7:53 ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2024-11-18  7:53 ` Arun R Murthy
  2024-11-22 20:06   ` Ville Syrjälä
  2024-11-18  7:53 ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ 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

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] 13+ 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 ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
  2024-11-18  7:53 ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
@ 2024-11-18  7:53 ` Arun R Murthy
  2024-11-22  4:02   ` kernel test robot
                     ` (2 more replies)
  2024-11-18 14:26 ` ✗ Fi.CI.SPARSE: warning for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Patchwork
  2024-12-13  9:32 ` ✗ Fi.CI.BUILD: failure for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC (rev2) Patchwork
  4 siblings, 3 replies; 13+ 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] 13+ messages in thread

* ✗ Fi.CI.SPARSE: warning for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC
  2024-11-18  7:53 [PATCHv2/3] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (2 preceding siblings ...)
  2024-11-18  7:53 ` [PATCHv2 3/3] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
@ 2024-11-18 14:26 ` Patchwork
  2024-12-13  9:32 ` ✗ Fi.CI.BUILD: failure for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC (rev2) Patchwork
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2024-11-18 14:26 UTC (permalink / raw)
  To: Murthy, Arun R; +Cc: intel-gfx

== Series Details ==

Series: series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC
URL   : https://patchwork.freedesktop.org/series/141475/
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] 13+ 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; 13+ 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] 13+ messages in thread

* Re: [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob
  2024-11-18  7:53 ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
@ 2024-11-22 20:06   ` Ville Syrjälä
  2024-11-25  8:45     ` Murthy, Arun R
  0 siblings, 1 reply; 13+ messages in thread
From: Ville Syrjälä @ 2024-11-22 20:06 UTC (permalink / raw)
  To: Arun R Murthy; +Cc: intel-xe, intel-gfx, dri-devel

On Mon, Nov 18, 2024 at 01:23:14PM +0530, Arun R Murthy wrote:
> 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 ||

I asked for a format_mod_supported_async(). This is not that.

> +			    !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

-- 
Ville Syrjälä
Intel

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

* RE: [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob
  2024-11-22 20:06   ` Ville Syrjälä
@ 2024-11-25  8:45     ` Murthy, Arun R
  2024-12-13  9:02       ` Murthy, Arun R
  0 siblings, 1 reply; 13+ messages in thread
From: Murthy, Arun R @ 2024-11-25  8:45 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org

> On Mon, Nov 18, 2024 at 01:23:14PM +0530, Arun R Murthy wrote:
> > 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 ||
> 
> I asked for a format_mod_supported_async(). This is not that.
> 
In the previous version I had this format_mod_supported(), a similar implementation as in create_in_formats_blob().
Create_in_formats_async_blob() was added but the same function pointer was maintained i.e format_mod_supported.
The intention was in the function defined by vendor specific driver for format_mod_supported() the format and modifier to be checked for async would be sent.
The flag async_flip in drm_crtc_state would be used in the driver to check these format/modifier for async.
I can add something like this
Static bool skl_plane_format_mod_supported(drm_plane, format, modifier)
{
	If (crtc_state->async_flip) {
		Plane->can_async_flip()    /* https://patchwork.freedesktop.org/patch/619047/?series=139807&rev=3  */
		Return;
	}
	/* continue with the code for sync format-modifier supported check */
}

But the comment was to overcome changes in drm and handle in i915. Hence create_in_format_async_blob() in drm_crtc.c was removed in this version.
Please let me know on this, I can add this create_in_format_async_blob() back in the next series along with the above said changes for can_async_flip()

Thanks and Regards,
Arun R Murthy
---------------------

^ permalink raw reply	[flat|nested] 13+ 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; 13+ 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] 13+ 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; 13+ 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] 13+ messages in thread

* RE: [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob
  2024-11-25  8:45     ` Murthy, Arun R
@ 2024-12-13  9:02       ` Murthy, Arun R
  0 siblings, 0 replies; 13+ messages in thread
From: Murthy, Arun R @ 2024-12-13  9:02 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	dri-devel@lists.freedesktop.org

> > On Mon, Nov 18, 2024 at 01:23:14PM +0530, Arun R Murthy wrote:
> > > 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 ||
> >
> > I asked for a format_mod_supported_async(). This is not that.
> >
format_mod_supported() is the existing function pointer and while calling this in universal_plane_init() we don't have any flag to differentiate between sync and async for differentiating the calls. Also this maynot be required at universal_plane_init as only RGB formats are supported under async_flip. Only plane we need is to check if the modifier is supported or not and that can be handled in the present format_mod_supported().
This can be achieved by
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2479,6 +2479,10 @@ static bool tgl_plane_format_mod_supported(struct drm_plane *_plane,
 {
        struct intel_plane *plane = to_intel_plane(_plane);

+       /* handle check for async flips */
+       if (plane->crtc->state->async_flip)
+               return plane->can_async_flip(modifier);
+
        if (!intel_fb_plane_supports_modifier(plane, modifier))
                return false;
Dependency: https://patchwork.freedesktop.org/patch/626849/?series=139807&rev=4

This part can be taken out of this series as this series is focused on exposing the supported formats/modifiers to user by the property IN_FORMATS_ASYNC.

Thanks and Regards,
Arun R Murthy
--------------------

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

* ✗ Fi.CI.BUILD: failure for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC (rev2)
  2024-11-18  7:53 [PATCHv2/3] Expose modifiers/formats supported by async flips Arun R Murthy
                   ` (3 preceding siblings ...)
  2024-11-18 14:26 ` ✗ Fi.CI.SPARSE: warning for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Patchwork
@ 2024-12-13  9:32 ` Patchwork
  4 siblings, 0 replies; 13+ messages in thread
From: Patchwork @ 2024-12-13  9:32 UTC (permalink / raw)
  To: Murthy, Arun R; +Cc: intel-gfx

== Series Details ==

Series: series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC (rev2)
URL   : https://patchwork.freedesktop.org/series/141475/
State : failure

== Summary ==

Error: patch https://patchwork.freedesktop.org/api/1.0/series/141475/revisions/2/mbox/ not applied
Applying: drm/plane: Add new plane property IN_FORMATS_ASYNC
Applying: drm/plane: Expose function to create format/modifier blob
error: corrupt patch at line 13
error: could not build fake ancestor
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0002 drm/plane: Expose function to create format/modifier blob
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".
Build failed, no error log produced



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

end of thread, other threads:[~2024-12-13  9:32 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-18  7:53 [PATCHv2/3] Expose modifiers/formats supported by async flips Arun R Murthy
2024-11-18  7:53 ` [PATCHv2 1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2024-11-18  7:53 ` [PATCHv2 2/3] drm/plane: Expose function to create format/modifier blob Arun R Murthy
2024-11-22 20:06   ` Ville Syrjälä
2024-11-25  8:45     ` Murthy, Arun R
2024-12-13  9:02       ` Murthy, Arun R
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
2024-11-18 14:26 ` ✗ Fi.CI.SPARSE: warning for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC Patchwork
2024-12-13  9:32 ` ✗ Fi.CI.BUILD: failure for series starting with [PATCHv2,1/3] drm/plane: Add new plane property IN_FORMATS_ASYNC (rev2) Patchwork
  -- strict thread matches above, loose matches on Subject: below --
2024-11-05 10:26 [PATCH 0/4] Expose modifiers/formats supported by async flips Arun R Murthy
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

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