* [PATCH v3 0/5] Expose modifiers/formats supported by async flips
@ 2025-01-08 5:38 Arun R Murthy
2025-01-08 5:38 ` [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
` (11 more replies)
0 siblings, 12 replies; 36+ messages in thread
From: Arun R Murthy @ 2025-01-08 5:38 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe; +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
TODO: Upon merge of the patch related to async flip
https://patchwork.freedesktop.org/patch/626849/?series=139807&rev=6
the patch 5 in this series will have to make use of the new function
pointer can_async_flip().
v3: Add new plane->funcs format_mod_supported_async (Ville)
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
---
Arun R Murthy (5):
drm/plane: Add new plane property IN_FORMATS_ASYNC
drm/plane: Expose function to create format/modifier blob
drm/plane: Function to check async supported modifier/format
drm/i915/display: Populate list of async supported formats/modifiers
drm/i915/display: Add function for format_mod_supported_async
drivers/gpu/drm/drm_mode_config.c | 7 ++
drivers/gpu/drm/drm_plane.c | 72 +++++++++----
drivers/gpu/drm/i915/display/skl_universal_plane.c | 113 ++++++++++++++++++---
include/drm/drm_mode_config.h | 6 ++
include/drm/drm_plane.h | 24 +++++
5 files changed, 188 insertions(+), 34 deletions(-)
---
base-commit: 08bd590935a5258ffd79355c59adffd72fb2c642
change-id: 20250102-asyn-bf76730501cc
Best regards,
--
Arun R Murthy <arun.r.murthy@intel.com>
^ permalink raw reply [flat|nested] 36+ messages in thread
* [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
@ 2025-01-08 5:38 ` Arun R Murthy
2025-01-12 7:59 ` Borah, Chaitanya Kumar
2025-01-08 5:39 ` [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob Arun R Murthy
` (10 subsequent siblings)
11 siblings, 1 reply; 36+ messages in thread
From: Arun R Murthy @ 2025-01-08 5:38 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe; +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.
Add a new function pointer similar to format_mod_supported specifically
for asynchronous flips.
v2: Remove async variable from drm_plane (Ville)
v3: Add new function pointer for async (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 ++++++
include/drm/drm_plane.h | 20 ++++++++++++++++++++
4 files changed, 39 insertions(+)
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 8642a2fb25a90116dab975aa0ab6b51deafb4b96..dbbef20753f834a85ae9ded748cff2b3f0e85043 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -388,6 +388,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 a28b22fdd7a41aca82d097d42237851da9a0a79b..416818e54ccffcf3d3aada2723e96ce8ccf1dd97 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 271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c0f097fce2d719f43844 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 dd718c62ac31bf16606f3ee9f025a5b171cd1e67..e8749e6fc3bc0acfc73bbd8401f85c3126e86759 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -549,6 +549,26 @@ struct drm_plane_funcs {
*/
bool (*format_mod_supported)(struct drm_plane *plane, uint32_t format,
uint64_t modifier);
+ /**
+ * @format_mod_supported_async:
+ *
+ * This optional hook is used for the DRM to determine if for
+ * asychronous flip the given format/modifier combination is valid for
+ * the plane. This allows the DRM to generate the correct format
+ * bitmask (which formats apply to which modifier), and to validate
+ * modifiers at atomic_check time.
+ *
+ * If not present, then any modifier in the plane's modifier
+ * list is allowed with any of the plane's formats.
+ *
+ * Returns:
+ *
+ * True if the given modifier is valid for that format on the plane.
+ * False otherwise.
+ */
+ bool (*format_mod_supported_async)(struct drm_plane *plane,
+ uint32_t format, uint64_t modifier);
+
};
/**
--
2.25.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
2025-01-08 5:38 ` [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2025-01-08 5:39 ` Arun R Murthy
2025-01-12 8:00 ` Borah, Chaitanya Kumar
2025-01-20 20:42 ` Ville Syrjälä
2025-01-08 5:39 ` [PATCH v3 3/5] drm/plane: Function to check async supported modifier/format Arun R Murthy
` (9 subsequent siblings)
11 siblings, 2 replies; 36+ messages in thread
From: Arun R Murthy @ 2025-01-08 5:39 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe; +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 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a9068b31c0563a4c0 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 e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf369894a5657cd45 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -1008,5 +1008,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] 36+ messages in thread
* [PATCH v3 3/5] drm/plane: Function to check async supported modifier/format
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
2025-01-08 5:38 ` [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2025-01-08 5:39 ` [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob Arun R Murthy
@ 2025-01-08 5:39 ` Arun R Murthy
2025-01-12 8:01 ` Borah, Chaitanya Kumar
2025-01-08 5:39 ` [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
` (8 subsequent siblings)
11 siblings, 1 reply; 36+ messages in thread
From: Arun R Murthy @ 2025-01-08 5:39 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe; +Cc: Arun R Murthy
Seperate function for async flips is to be called in order to check the
provided format/modifier support.
At present the flag for async flip is stored in crtc_state as async flip
is supported on only one plane for a given crtc. The same is being
used over here to decide the async function pointer.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/drm_plane.c | 30 ++++++++++++++++++++++--------
1 file changed, 22 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
index 4f35eec2b7770fcc90c3e07a9068b31c0563a4c0..9e08ba4318cf0c07fa0701023659986855e0e98a 100644
--- a/drivers/gpu/drm/drm_plane.c
+++ b/drivers/gpu/drm/drm_plane.c
@@ -238,12 +238,21 @@ int drm_plane_create_format_blob(struct drm_device *dev,
mod = modifiers_ptr(blob_data);
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,
- formats[j],
- modifiers[i])) {
- mod->formats |= 1ULL << j;
+ if (is_async) {
+ if (!plane->funcs->format_mod_supported_async ||
+ plane->funcs->format_mod_supported_async(plane,
+ formats[j],
+ modifiers[i])) {
+ mod->formats |= 1ULL << j;
+ }
+
+ } else {
+ if (!plane->funcs->format_mod_supported ||
+ plane->funcs->format_mod_supported(plane,
+ formats[j],
+ modifiers[i])) {
+ mod->formats |= 1ULL << j;
+ }
}
}
@@ -910,6 +919,7 @@ bool drm_plane_has_format(struct drm_plane *plane,
u32 format, u64 modifier)
{
unsigned int i;
+ bool is_async = plane->crtc->state->async_flip;
for (i = 0; i < plane->format_count; i++) {
if (format == plane->format_types[i])
@@ -918,8 +928,12 @@ bool drm_plane_has_format(struct drm_plane *plane,
if (i == plane->format_count)
return false;
- if (plane->funcs->format_mod_supported) {
- if (!plane->funcs->format_mod_supported(plane, format, modifier))
+ if (is_async ? plane->funcs->format_mod_supported_async :
+ plane->funcs->format_mod_supported) {
+ if (!(is_async ? plane->funcs->format_mod_supported_async(
+ plane, format, modifier) :
+ plane->funcs->format_mod_supported(
+ plane, format, modifier)))
return false;
} else {
if (!plane->modifier_count)
--
2.25.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (2 preceding siblings ...)
2025-01-08 5:39 ` [PATCH v3 3/5] drm/plane: Function to check async supported modifier/format Arun R Murthy
@ 2025-01-08 5:39 ` Arun R Murthy
2025-01-12 8:02 ` Borah, Chaitanya Kumar
2025-01-20 20:47 ` Ville Syrjälä
2025-01-08 5:39 ` [PATCH v3 5/5] drm/i915/display: Add function for format_mod_supported_async Arun R Murthy
` (7 subsequent siblings)
11 siblings, 2 replies; 36+ messages in thread
From: Arun R Murthy @ 2025-01-08 5:39 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe; +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>
---
drivers/gpu/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 ff9764cac1e71959e56283f61b5192ea261cec7a..e5e47f2219dae62e76cbde2efb40266b047ab2b2 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) {
@@ -2613,6 +2651,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;
@@ -2715,6 +2754,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] 36+ messages in thread
* [PATCH v3 5/5] drm/i915/display: Add function for format_mod_supported_async
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (3 preceding siblings ...)
2025-01-08 5:39 ` [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
@ 2025-01-08 5:39 ` Arun R Murthy
2025-01-12 8:02 ` Borah, Chaitanya Kumar
2025-01-08 5:58 ` ✓ CI.Patch_applied: success for Expose modifiers/formats supported by async flips (rev2) Patchwork
` (6 subsequent siblings)
11 siblings, 1 reply; 36+ messages in thread
From: Arun R Murthy @ 2025-01-08 5:39 UTC (permalink / raw)
To: dri-devel, intel-gfx, intel-xe; +Cc: Arun R Murthy
Add driver specific function definition for the plane->funcs
format_mod_supported_async to check if the provided format/modifier is
supported for asynchronous flip.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/skl_universal_plane.c | 62 ++++++++++++++++------
1 file changed, 47 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c b/drivers/gpu/drm/i915/display/skl_universal_plane.c
index e5e47f2219dae62e76cbde2efb40266b047ab2b2..00aa254a3b4e992268c9159bc15687e54718dc43 100644
--- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
+++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
@@ -2526,30 +2526,62 @@ static bool tgl_plane_format_mod_supported(struct drm_plane *_plane,
}
}
+static bool intel_plane_format_mod_supported_async(struct drm_plane *_plane,
+ u32 format, u64 modifier)
+{
+ struct intel_plane *plane = to_intel_plane(_plane);
+ struct intel_display *display = to_intel_display(plane);
+ int i, found = false;
+ u64 *async_modifiers;
+
+ if (plane->id != 1)
+ return false;
+
+ if (DISPLAY_VER(display) >= 12)
+ async_modifiers = tgl_asyn_modifiers;
+ else if (DISPLAY_VER(display) == 11)
+ async_modifiers = icl_async_modifiers;
+ else
+ async_modifiers = skl_async_modifiers;
+
+ for (i = 0; i < sizeof(async_modifiers); i++) {
+ if (modifier == async_modifiers[i])
+ found = true;
+ }
+ if (!found)
+ return false;
+
+ /* Async flip supported only on RGB formats */
+ for (i = 0; i < sizeof(intel_async_formats); i++) {
+ if (format == intel_async_formats[i])
+ return true;
+ }
+ return false;
+}
+
+#define INTEL_PLANE_FUNCS \
+ .update_plane = drm_atomic_helper_update_plane, \
+ .disable_plane = drm_atomic_helper_disable_plane, \
+ .destroy = intel_plane_destroy, \
+ .atomic_duplicate_state = intel_plane_duplicate_state, \
+ .atomic_destroy_state = intel_plane_destroy_state, \
+ .format_mod_supported_async = intel_plane_format_mod_supported_async
+
static const struct drm_plane_funcs skl_plane_funcs = {
- .update_plane = drm_atomic_helper_update_plane,
- .disable_plane = drm_atomic_helper_disable_plane,
- .destroy = intel_plane_destroy,
- .atomic_duplicate_state = intel_plane_duplicate_state,
- .atomic_destroy_state = intel_plane_destroy_state,
+ INTEL_PLANE_FUNCS,
+
.format_mod_supported = skl_plane_format_mod_supported,
};
static const struct drm_plane_funcs icl_plane_funcs = {
- .update_plane = drm_atomic_helper_update_plane,
- .disable_plane = drm_atomic_helper_disable_plane,
- .destroy = intel_plane_destroy,
- .atomic_duplicate_state = intel_plane_duplicate_state,
- .atomic_destroy_state = intel_plane_destroy_state,
+ INTEL_PLANE_FUNCS,
+
.format_mod_supported = icl_plane_format_mod_supported,
};
static const struct drm_plane_funcs tgl_plane_funcs = {
- .update_plane = drm_atomic_helper_update_plane,
- .disable_plane = drm_atomic_helper_disable_plane,
- .destroy = intel_plane_destroy,
- .atomic_duplicate_state = intel_plane_duplicate_state,
- .atomic_destroy_state = intel_plane_destroy_state,
+ INTEL_PLANE_FUNCS,
+
.format_mod_supported = tgl_plane_format_mod_supported,
};
--
2.25.1
^ permalink raw reply related [flat|nested] 36+ messages in thread
* ✓ CI.Patch_applied: success for Expose modifiers/formats supported by async flips (rev2)
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (4 preceding siblings ...)
2025-01-08 5:39 ` [PATCH v3 5/5] drm/i915/display: Add function for format_mod_supported_async Arun R Murthy
@ 2025-01-08 5:58 ` Patchwork
2025-01-08 5:58 ` ✗ CI.checkpatch: warning " Patchwork
` (5 subsequent siblings)
11 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-01-08 5:58 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Expose modifiers/formats supported by async flips (rev2)
URL : https://patchwork.freedesktop.org/series/140934/
State : success
== Summary ==
=== Applying kernel patches on branch 'drm-tip' with base: ===
Base commit: 8f14ac27d7b0 drm-tip: 2025y-01m-07d-23h-47m-51s UTC integration manifest
=== git am output follows ===
Applying: drm/plane: Add new plane property IN_FORMATS_ASYNC
Applying: drm/plane: Expose function to create format/modifier blob
Applying: drm/plane: Function to check async supported modifier/format
Applying: drm/i915/display: Populate list of async supported formats/modifiers
Applying: drm/i915/display: Add function for format_mod_supported_async
^ permalink raw reply [flat|nested] 36+ messages in thread
* ✗ CI.checkpatch: warning for Expose modifiers/formats supported by async flips (rev2)
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (5 preceding siblings ...)
2025-01-08 5:58 ` ✓ CI.Patch_applied: success for Expose modifiers/formats supported by async flips (rev2) Patchwork
@ 2025-01-08 5:58 ` Patchwork
2025-01-08 6:00 ` ✓ CI.KUnit: success " Patchwork
` (4 subsequent siblings)
11 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-01-08 5:58 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Expose modifiers/formats supported by async flips (rev2)
URL : https://patchwork.freedesktop.org/series/140934/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
30ab6715fc09baee6cc14cb3c89ad8858688d474
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 30bbf2496cb90644c2981f119a7f2f4d14de7fa5
Author: Arun R Murthy <arun.r.murthy@intel.com>
Date: Wed Jan 8 11:09:03 2025 +0530
drm/i915/display: Add function for format_mod_supported_async
Add driver specific function definition for the plane->funcs
format_mod_supported_async to check if the provided format/modifier is
supported for asynchronous flip.
Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
+ /mt/dim checkpatch 8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5 drm-intel
f072f6ce9821 drm/plane: Add new plane property IN_FORMATS_ASYNC
-:85: WARNING:TYPO_SPELLING: 'asychronous' may be misspelled - perhaps 'asynchronous'?
#85: FILE: include/drm/drm_plane.h:556:
+ * asychronous flip the given format/modifier combination is valid for
^^^^^^^^^^^
-:99: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u32' over 'uint32_t'
#99: FILE: include/drm/drm_plane.h:570:
+ uint32_t format, uint64_t modifier);
total: 0 errors, 1 warnings, 1 checks, 63 lines checked
e9509bf22398 drm/plane: Expose function to create format/modifier blob
da0d446b37eb drm/plane: Function to check async supported modifier/format
-:6: WARNING:TYPO_SPELLING: 'Seperate' may be misspelled - perhaps 'Separate'?
#6:
Seperate function for async flips is to be called in order to check the
^^^^^^^^
-:62: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#62: FILE: drivers/gpu/drm/drm_plane.c:933:
+ if (!(is_async ? plane->funcs->format_mod_supported_async(
-:64: CHECK:OPEN_ENDED_LINE: Lines should not end with a '('
#64: FILE: drivers/gpu/drm/drm_plane.c:935:
+ plane->funcs->format_mod_supported(
total: 0 errors, 1 warnings, 2 checks, 48 lines checked
bb12de39973a drm/i915/display: Populate list of async supported formats/modifiers
30bbf2496cb9 drm/i915/display: Add function for format_mod_supported_async
^ permalink raw reply [flat|nested] 36+ messages in thread
* ✓ CI.KUnit: success for Expose modifiers/formats supported by async flips (rev2)
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (6 preceding siblings ...)
2025-01-08 5:58 ` ✗ CI.checkpatch: warning " Patchwork
@ 2025-01-08 6:00 ` Patchwork
2025-01-08 6:20 ` ✓ CI.Hooks: " Patchwork
` (3 subsequent siblings)
11 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-01-08 6:00 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Expose modifiers/formats supported by async flips (rev2)
URL : https://patchwork.freedesktop.org/series/140934/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[05:58:57] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:59:01] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[05:59:30] Starting KUnit Kernel (1/1)...
[05:59:30] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:59:30] =================== guc_dbm (7 subtests) ===================
[05:59:30] [PASSED] test_empty
[05:59:30] [PASSED] test_default
[05:59:30] ======================== test_size ========================
[05:59:30] [PASSED] 4
[05:59:30] [PASSED] 8
[05:59:30] [PASSED] 32
[05:59:30] [PASSED] 256
[05:59:30] ==================== [PASSED] test_size ====================
[05:59:30] ======================= test_reuse ========================
[05:59:30] [PASSED] 4
[05:59:30] [PASSED] 8
[05:59:30] [PASSED] 32
[05:59:30] [PASSED] 256
[05:59:30] =================== [PASSED] test_reuse ====================
[05:59:30] =================== test_range_overlap ====================
[05:59:30] [PASSED] 4
[05:59:30] [PASSED] 8
[05:59:30] [PASSED] 32
[05:59:30] [PASSED] 256
[05:59:30] =============== [PASSED] test_range_overlap ================
[05:59:30] =================== test_range_compact ====================
[05:59:30] [PASSED] 4
[05:59:30] [PASSED] 8
[05:59:30] [PASSED] 32
[05:59:30] [PASSED] 256
[05:59:30] =============== [PASSED] test_range_compact ================
[05:59:30] ==================== test_range_spare =====================
[05:59:30] [PASSED] 4
[05:59:30] [PASSED] 8
[05:59:30] [PASSED] 32
[05:59:30] [PASSED] 256
[05:59:30] ================ [PASSED] test_range_spare =================
[05:59:30] ===================== [PASSED] guc_dbm =====================
[05:59:30] =================== guc_idm (6 subtests) ===================
[05:59:30] [PASSED] bad_init
[05:59:30] [PASSED] no_init
[05:59:30] [PASSED] init_fini
[05:59:30] [PASSED] check_used
[05:59:30] [PASSED] check_quota
[05:59:30] [PASSED] check_all
[05:59:30] ===================== [PASSED] guc_idm =====================
[05:59:30] ================== no_relay (3 subtests) ===================
[05:59:30] [PASSED] xe_drops_guc2pf_if_not_ready
[05:59:30] [PASSED] xe_drops_guc2vf_if_not_ready
[05:59:30] [PASSED] xe_rejects_send_if_not_ready
[05:59:30] ==================== [PASSED] no_relay =====================
[05:59:30] ================== pf_relay (14 subtests) ==================
[05:59:30] [PASSED] pf_rejects_guc2pf_too_short
[05:59:30] [PASSED] pf_rejects_guc2pf_too_long
[05:59:30] [PASSED] pf_rejects_guc2pf_no_payload
[05:59:30] [PASSED] pf_fails_no_payload
[05:59:30] [PASSED] pf_fails_bad_origin
[05:59:30] [PASSED] pf_fails_bad_type
[05:59:30] [PASSED] pf_txn_reports_error
[05:59:30] [PASSED] pf_txn_sends_pf2guc
[05:59:30] [PASSED] pf_sends_pf2guc
[05:59:30] [SKIPPED] pf_loopback_nop
[05:59:30] [SKIPPED] pf_loopback_echo
[05:59:30] [SKIPPED] pf_loopback_fail
[05:59:30] [SKIPPED] pf_loopback_busy
[05:59:30] [SKIPPED] pf_loopback_retry
[05:59:30] ==================== [PASSED] pf_relay =====================
[05:59:30] ================== vf_relay (3 subtests) ===================
[05:59:30] [PASSED] vf_rejects_guc2vf_too_short
[05:59:30] [PASSED] vf_rejects_guc2vf_too_long
[05:59:30] [PASSED] vf_rejects_guc2vf_no_payload
[05:59:30] ==================== [PASSED] vf_relay =====================
[05:59:30] ================= pf_service (11 subtests) =================
[05:59:30] [PASSED] pf_negotiate_any
[05:59:30] [PASSED] pf_negotiate_base_match
[05:59:30] [PASSED] pf_negotiate_base_newer
[05:59:30] [PASSED] pf_negotiate_base_next
[05:59:30] [SKIPPED] pf_negotiate_base_older
[05:59:30] [PASSED] pf_negotiate_base_prev
[05:59:30] [PASSED] pf_negotiate_latest_match
[05:59:30] [PASSED] pf_negotiate_latest_newer
[05:59:30] [PASSED] pf_negotiate_latest_next
[05:59:30] [SKIPPED] pf_negotiate_latest_older
[05:59:30] [SKIPPED] pf_negotiate_latest_prev
[05:59:30] =================== [PASSED] pf_service ====================
[05:59:30] ===================== lmtt (1 subtest) =====================
[05:59:30] ======================== test_ops =========================
[05:59:30] [PASSED] 2-level
[05:59:30] [PASSED] multi-level
[05:59:30] ==================== [PASSED] test_ops =====================
[05:59:30] ====================== [PASSED] lmtt =======================
[05:59:30] =================== xe_mocs (2 subtests) ===================
[05:59:30] ================ xe_live_mocs_kernel_kunit ================
[05:59:30] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[05:59:30] ================ xe_live_mocs_reset_kunit =================
[05:59:30] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[05:59:30] ==================== [SKIPPED] xe_mocs =====================
[05:59:30] ================= xe_migrate (2 subtests) ==================
[05:59:30] ================= xe_migrate_sanity_kunit =================
[05:59:30] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[05:59:30] ================== xe_validate_ccs_kunit ==================
[05:59:30] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[05:59:30] =================== [SKIPPED] xe_migrate ===================
[05:59:30] ================== xe_dma_buf (1 subtest) ==================
[05:59:30] ==================== xe_dma_buf_kunit =====================
[05:59:30] ================ [SKIPPED] xe_dma_buf_kunit ================
[05:59:30] =================== [SKIPPED] xe_dma_buf ===================
[05:59:30] ================= xe_bo_shrink (1 subtest) =================
[05:59:30] =================== xe_bo_shrink_kunit ====================
[05:59:30] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[05:59:30] ================== [SKIPPED] xe_bo_shrink ==================
[05:59:30] ==================== xe_bo (2 subtests) ====================
[05:59:30] ================== xe_ccs_migrate_kunit ===================
[05:59:30] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[05:59:30] ==================== xe_bo_evict_kunit ====================
[05:59:30] =============== [SKIPPED] xe_bo_evict_kunit ================
[05:59:30] ===================== [SKIPPED] xe_bo ======================
[05:59:30] ==================== args (11 subtests) ====================
[05:59:30] [PASSED] count_args_test
[05:59:30] [PASSED] call_args_example
[05:59:30] [PASSED] call_args_test
[05:59:30] [PASSED] drop_first_arg_example
[05:59:30] [PASSED] drop_first_arg_test
[05:59:30] [PASSED] first_arg_example
[05:59:30] [PASSED] first_arg_test
stty: 'standard input': Inappropriate ioctl for device
[05:59:30] [PASSED] last_arg_example
[05:59:30] [PASSED] last_arg_test
[05:59:30] [PASSED] pick_arg_example
[05:59:30] [PASSED] sep_comma_example
[05:59:30] ====================== [PASSED] args =======================
[05:59:30] =================== xe_pci (2 subtests) ====================
[05:59:30] [PASSED] xe_gmdid_graphics_ip
[05:59:30] [PASSED] xe_gmdid_media_ip
[05:59:30] ===================== [PASSED] xe_pci ======================
[05:59:30] =================== xe_rtp (2 subtests) ====================
[05:59:30] =============== xe_rtp_process_to_sr_tests ================
[05:59:30] [PASSED] coalesce-same-reg
[05:59:30] [PASSED] no-match-no-add
[05:59:30] [PASSED] match-or
[05:59:30] [PASSED] match-or-xfail
[05:59:30] [PASSED] no-match-no-add-multiple-rules
[05:59:30] [PASSED] two-regs-two-entries
[05:59:30] [PASSED] clr-one-set-other
[05:59:30] [PASSED] set-field
[05:59:30] [PASSED] conflict-duplicate
[05:59:30] [PASSED] conflict-not-disjoint
[05:59:30] [PASSED] conflict-reg-type
[05:59:30] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[05:59:30] ================== xe_rtp_process_tests ===================
[05:59:30] [PASSED] active1
[05:59:30] [PASSED] active2
[05:59:30] [PASSED] active-inactive
[05:59:30] [PASSED] inactive-active
[05:59:30] [PASSED] inactive-1st_or_active-inactive
[05:59:30] [PASSED] inactive-2nd_or_active-inactive
[05:59:30] [PASSED] inactive-last_or_active-inactive
[05:59:30] [PASSED] inactive-no_or_active-inactive
[05:59:30] ============== [PASSED] xe_rtp_process_tests ===============
[05:59:30] ===================== [PASSED] xe_rtp ======================
[05:59:30] ==================== xe_wa (1 subtest) =====================
[05:59:30] ======================== xe_wa_gt =========================
[05:59:30] [PASSED] TIGERLAKE (B0)
[05:59:30] [PASSED] DG1 (A0)
[05:59:30] [PASSED] DG1 (B0)
[05:59:30] [PASSED] ALDERLAKE_S (A0)
[05:59:30] [PASSED] ALDERLAKE_S (B0)
[05:59:30] [PASSED] ALDERLAKE_S (C0)
[05:59:30] [PASSED] ALDERLAKE_S (D0)
[05:59:30] [PASSED] ALDERLAKE_P (A0)
[05:59:30] [PASSED] ALDERLAKE_P (B0)
[05:59:30] [PASSED] ALDERLAKE_P (C0)
[05:59:30] [PASSED] ALDERLAKE_S_RPLS (D0)
[05:59:30] [PASSED] ALDERLAKE_P_RPLU (E0)
[05:59:30] [PASSED] DG2_G10 (C0)
[05:59:30] [PASSED] DG2_G11 (B1)
[05:59:30] [PASSED] DG2_G12 (A1)
[05:59:30] [PASSED] METEORLAKE (g:A0, m:A0)
[05:59:30] [PASSED] METEORLAKE (g:A0, m:A0)
[05:59:30] [PASSED] METEORLAKE (g:A0, m:A0)
[05:59:30] [PASSED] LUNARLAKE (g:A0, m:A0)
[05:59:30] [PASSED] LUNARLAKE (g:B0, m:A0)
[05:59:30] [PASSED] BATTLEMAGE (g:A0, m:A1)
[05:59:30] ==================== [PASSED] xe_wa_gt =====================
[05:59:30] ====================== [PASSED] xe_wa ======================
[05:59:30] ============================================================
[05:59:30] Testing complete. Ran 122 tests: passed: 106, skipped: 16
[05:59:30] Elapsed time: 33.181s total, 4.402s configuring, 28.512s building, 0.244s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[05:59:30] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:59:32] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
../lib/iomap.c:156:5: warning: no previous prototype for ‘ioread64_lo_hi’ [-Wmissing-prototypes]
156 | u64 ioread64_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:163:5: warning: no previous prototype for ‘ioread64_hi_lo’ [-Wmissing-prototypes]
163 | u64 ioread64_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~
../lib/iomap.c:170:5: warning: no previous prototype for ‘ioread64be_lo_hi’ [-Wmissing-prototypes]
170 | u64 ioread64be_lo_hi(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:178:5: warning: no previous prototype for ‘ioread64be_hi_lo’ [-Wmissing-prototypes]
178 | u64 ioread64be_hi_lo(const void __iomem *addr)
| ^~~~~~~~~~~~~~~~
../lib/iomap.c:264:6: warning: no previous prototype for ‘iowrite64_lo_hi’ [-Wmissing-prototypes]
264 | void iowrite64_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:272:6: warning: no previous prototype for ‘iowrite64_hi_lo’ [-Wmissing-prototypes]
272 | void iowrite64_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~
../lib/iomap.c:280:6: warning: no previous prototype for ‘iowrite64be_lo_hi’ [-Wmissing-prototypes]
280 | void iowrite64be_lo_hi(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
../lib/iomap.c:288:6: warning: no previous prototype for ‘iowrite64be_hi_lo’ [-Wmissing-prototypes]
288 | void iowrite64be_hi_lo(u64 val, void __iomem *addr)
| ^~~~~~~~~~~~~~~~~
[05:59:55] Starting KUnit Kernel (1/1)...
[05:59:55] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[05:59:55] =========== drm_validate_clone_mode (2 subtests) ===========
[05:59:55] ============== drm_test_check_in_clone_mode ===============
[05:59:55] [PASSED] in_clone_mode
[05:59:55] [PASSED] not_in_clone_mode
[05:59:55] ========== [PASSED] drm_test_check_in_clone_mode ===========
[05:59:55] =============== drm_test_check_valid_clones ===============
[05:59:55] [PASSED] not_in_clone_mode
[05:59:55] [PASSED] valid_clone
[05:59:55] [PASSED] invalid_clone
[05:59:55] =========== [PASSED] drm_test_check_valid_clones ===========
[05:59:55] ============= [PASSED] drm_validate_clone_mode =============
[05:59:55] ============= drm_validate_modeset (1 subtest) =============
[05:59:55] [PASSED] drm_test_check_connector_changed_modeset
[05:59:55] ============== [PASSED] drm_validate_modeset ===============
[05:59:55] ================== drm_buddy (7 subtests) ==================
[05:59:55] [PASSED] drm_test_buddy_alloc_limit
[05:59:55] [PASSED] drm_test_buddy_alloc_optimistic
[05:59:55] [PASSED] drm_test_buddy_alloc_pessimistic
[05:59:55] [PASSED] drm_test_buddy_alloc_pathological
[05:59:55] [PASSED] drm_test_buddy_alloc_contiguous
[05:59:55] [PASSED] drm_test_buddy_alloc_clear
[05:59:55] [PASSED] drm_test_buddy_alloc_range_bias
[05:59:55] ==================== [PASSED] drm_buddy ====================
[05:59:55] ============= drm_cmdline_parser (40 subtests) =============
[05:59:55] [PASSED] drm_test_cmdline_force_d_only
[05:59:55] [PASSED] drm_test_cmdline_force_D_only_dvi
[05:59:55] [PASSED] drm_test_cmdline_force_D_only_hdmi
[05:59:55] [PASSED] drm_test_cmdline_force_D_only_not_digital
[05:59:55] [PASSED] drm_test_cmdline_force_e_only
[05:59:55] [PASSED] drm_test_cmdline_res
[05:59:55] [PASSED] drm_test_cmdline_res_vesa
[05:59:55] [PASSED] drm_test_cmdline_res_vesa_rblank
[05:59:55] [PASSED] drm_test_cmdline_res_rblank
[05:59:55] [PASSED] drm_test_cmdline_res_bpp
[05:59:55] [PASSED] drm_test_cmdline_res_refresh
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[05:59:55] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[05:59:55] [PASSED] drm_test_cmdline_res_margins_force_on
[05:59:55] [PASSED] drm_test_cmdline_res_vesa_margins
[05:59:55] [PASSED] drm_test_cmdline_name
[05:59:55] [PASSED] drm_test_cmdline_name_bpp
[05:59:55] [PASSED] drm_test_cmdline_name_option
[05:59:55] [PASSED] drm_test_cmdline_name_bpp_option
[05:59:55] [PASSED] drm_test_cmdline_rotate_0
[05:59:55] [PASSED] drm_test_cmdline_rotate_90
[05:59:55] [PASSED] drm_test_cmdline_rotate_180
[05:59:55] [PASSED] drm_test_cmdline_rotate_270
[05:59:55] [PASSED] drm_test_cmdline_hmirror
[05:59:55] [PASSED] drm_test_cmdline_vmirror
[05:59:55] [PASSED] drm_test_cmdline_margin_options
[05:59:55] [PASSED] drm_test_cmdline_multiple_options
[05:59:55] [PASSED] drm_test_cmdline_bpp_extra_and_option
[05:59:55] [PASSED] drm_test_cmdline_extra_and_option
[05:59:55] [PASSED] drm_test_cmdline_freestanding_options
[05:59:55] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[05:59:55] [PASSED] drm_test_cmdline_panel_orientation
[05:59:55] ================ drm_test_cmdline_invalid =================
[05:59:55] [PASSED] margin_only
[05:59:55] [PASSED] interlace_only
[05:59:55] [PASSED] res_missing_x
[05:59:55] [PASSED] res_missing_y
[05:59:55] [PASSED] res_bad_y
[05:59:55] [PASSED] res_missing_y_bpp
[05:59:55] [PASSED] res_bad_bpp
[05:59:55] [PASSED] res_bad_refresh
[05:59:55] [PASSED] res_bpp_refresh_force_on_off
[05:59:55] [PASSED] res_invalid_mode
[05:59:55] [PASSED] res_bpp_wrong_place_mode
[05:59:55] [PASSED] name_bpp_refresh
[05:59:55] [PASSED] name_refresh
[05:59:55] [PASSED] name_refresh_wrong_mode
[05:59:55] [PASSED] name_refresh_invalid_mode
[05:59:55] [PASSED] rotate_multiple
[05:59:55] [PASSED] rotate_invalid_val
[05:59:55] [PASSED] rotate_truncated
[05:59:55] [PASSED] invalid_option
[05:59:55] [PASSED] invalid_tv_option
[05:59:55] [PASSED] truncated_tv_option
[05:59:55] ============ [PASSED] drm_test_cmdline_invalid =============
[05:59:55] =============== drm_test_cmdline_tv_options ===============
[05:59:55] [PASSED] NTSC
[05:59:55] [PASSED] NTSC_443
[05:59:55] [PASSED] NTSC_J
[05:59:55] [PASSED] PAL
[05:59:55] [PASSED] PAL_M
[05:59:55] [PASSED] PAL_N
[05:59:55] [PASSED] SECAM
[05:59:55] [PASSED] MONO_525
[05:59:55] [PASSED] MONO_625
[05:59:55] =========== [PASSED] drm_test_cmdline_tv_options ===========
[05:59:55] =============== [PASSED] drm_cmdline_parser ================
[05:59:55] ========== drmm_connector_hdmi_init (19 subtests) ==========
[05:59:55] [PASSED] drm_test_connector_hdmi_init_valid
[05:59:55] [PASSED] drm_test_connector_hdmi_init_bpc_8
[05:59:55] [PASSED] drm_test_connector_hdmi_init_bpc_10
[05:59:55] [PASSED] drm_test_connector_hdmi_init_bpc_12
[05:59:55] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[05:59:55] [PASSED] drm_test_connector_hdmi_init_bpc_null
[05:59:55] [PASSED] drm_test_connector_hdmi_init_formats_empty
[05:59:55] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[05:59:55] [PASSED] drm_test_connector_hdmi_init_null_ddc
[05:59:55] [PASSED] drm_test_connector_hdmi_init_null_product
[05:59:55] [PASSED] drm_test_connector_hdmi_init_null_vendor
[05:59:55] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[05:59:55] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[05:59:55] [PASSED] drm_test_connector_hdmi_init_product_valid
[05:59:55] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[05:59:55] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[05:59:55] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[05:59:55] ========= drm_test_connector_hdmi_init_type_valid =========
[05:59:55] [PASSED] HDMI-A
[05:59:55] [PASSED] HDMI-B
[05:59:55] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[05:59:55] ======== drm_test_connector_hdmi_init_type_invalid ========
[05:59:55] [PASSED] Unknown
[05:59:55] [PASSED] VGA
[05:59:55] [PASSED] DVI-I
[05:59:55] [PASSED] DVI-D
[05:59:55] [PASSED] DVI-A
[05:59:55] [PASSED] Composite
[05:59:55] [PASSED] SVIDEO
[05:59:55] [PASSED] LVDS
[05:59:55] [PASSED] Component
[05:59:55] [PASSED] DIN
[05:59:55] [PASSED] DP
[05:59:55] [PASSED] TV
[05:59:55] [PASSED] eDP
[05:59:55] [PASSED] Virtual
[05:59:55] [PASSED] DSI
[05:59:55] [PASSED] DPI
[05:59:55] [PASSED] Writeback
[05:59:55] [PASSED] SPI
[05:59:55] [PASSED] USB
[05:59:55] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[05:59:55] ============ [PASSED] drmm_connector_hdmi_init =============
[05:59:55] ============= drmm_connector_init (3 subtests) =============
[05:59:55] [PASSED] drm_test_drmm_connector_init
[05:59:55] [PASSED] drm_test_drmm_connector_init_null_ddc
[05:59:55] ========= drm_test_drmm_connector_init_type_valid =========
[05:59:55] [PASSED] Unknown
[05:59:55] [PASSED] VGA
[05:59:55] [PASSED] DVI-I
[05:59:55] [PASSED] DVI-D
[05:59:55] [PASSED] DVI-A
[05:59:55] [PASSED] Composite
[05:59:55] [PASSED] SVIDEO
[05:59:55] [PASSED] LVDS
[05:59:55] [PASSED] Component
[05:59:55] [PASSED] DIN
[05:59:55] [PASSED] DP
[05:59:55] [PASSED] HDMI-A
[05:59:55] [PASSED] HDMI-B
[05:59:55] [PASSED] TV
[05:59:55] [PASSED] eDP
[05:59:55] [PASSED] Virtual
[05:59:55] [PASSED] DSI
[05:59:55] [PASSED] DPI
[05:59:55] [PASSED] Writeback
[05:59:55] [PASSED] SPI
[05:59:55] [PASSED] USB
[05:59:55] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[05:59:55] =============== [PASSED] drmm_connector_init ===============
[05:59:55] ========= drm_connector_dynamic_init (6 subtests) ==========
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_init
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_init_properties
[05:59:55] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[05:59:55] [PASSED] Unknown
[05:59:55] [PASSED] VGA
[05:59:55] [PASSED] DVI-I
[05:59:55] [PASSED] DVI-D
[05:59:55] [PASSED] DVI-A
[05:59:55] [PASSED] Composite
[05:59:55] [PASSED] SVIDEO
[05:59:55] [PASSED] LVDS
[05:59:55] [PASSED] Component
[05:59:55] [PASSED] DIN
[05:59:55] [PASSED] DP
[05:59:55] [PASSED] HDMI-A
[05:59:55] [PASSED] HDMI-B
[05:59:55] [PASSED] TV
[05:59:55] [PASSED] eDP
[05:59:55] [PASSED] Virtual
[05:59:55] [PASSED] DSI
[05:59:55] [PASSED] DPI
[05:59:55] [PASSED] Writeback
[05:59:55] [PASSED] SPI
[05:59:55] [PASSED] USB
[05:59:55] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[05:59:55] ======== drm_test_drm_connector_dynamic_init_name =========
[05:59:55] [PASSED] Unknown
[05:59:55] [PASSED] VGA
[05:59:55] [PASSED] DVI-I
[05:59:55] [PASSED] DVI-D
[05:59:55] [PASSED] DVI-A
[05:59:55] [PASSED] Composite
[05:59:55] [PASSED] SVIDEO
[05:59:55] [PASSED] LVDS
[05:59:55] [PASSED] Component
[05:59:55] [PASSED] DIN
[05:59:55] [PASSED] DP
[05:59:55] [PASSED] HDMI-A
[05:59:55] [PASSED] HDMI-B
[05:59:55] [PASSED] TV
[05:59:55] [PASSED] eDP
[05:59:55] [PASSED] Virtual
[05:59:55] [PASSED] DSI
[05:59:55] [PASSED] DPI
[05:59:55] [PASSED] Writeback
[05:59:55] [PASSED] SPI
[05:59:55] [PASSED] USB
[05:59:55] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[05:59:55] =========== [PASSED] drm_connector_dynamic_init ============
[05:59:55] ==== drm_connector_dynamic_register_early (4 subtests) =====
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[05:59:55] ====== [PASSED] drm_connector_dynamic_register_early =======
[05:59:55] ======= drm_connector_dynamic_register (7 subtests) ========
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[05:59:55] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[05:59:55] ========= [PASSED] drm_connector_dynamic_register ==========
[05:59:55] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[05:59:55] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[05:59:55] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[05:59:55] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[05:59:55] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[05:59:55] ========== drm_test_get_tv_mode_from_name_valid ===========
[05:59:55] [PASSED] NTSC
[05:59:55] [PASSED] NTSC-443
[05:59:55] [PASSED] NTSC-J
[05:59:55] [PASSED] PAL
[05:59:55] [PASSED] PAL-M
[05:59:55] [PASSED] PAL-N
[05:59:55] [PASSED] SECAM
[05:59:55] [PASSED] Mono
[05:59:55] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[05:59:55] [PASSED] drm_test_get_tv_mode_from_name_truncated
[05:59:55] ============ [PASSED] drm_get_tv_mode_from_name ============
[05:59:55] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[05:59:55] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[05:59:55] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[05:59:55] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[05:59:55] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[05:59:55] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[05:59:55] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[05:59:55] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[05:59:55] [PASSED] VIC 96
[05:59:55] [PASSED] VIC 97
[05:59:55] [PASSED] VIC 101
[05:59:55] [PASSED] VIC 102
[05:59:55] [PASSED] VIC 106
[05:59:55] [PASSED] VIC 107
[05:59:55] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[05:59:55] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[05:59:55] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[05:59:55] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[05:59:55] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[05:59:55] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[05:59:55] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[05:59:55] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[05:59:55] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[05:59:55] [PASSED] Automatic
[05:59:55] [PASSED] Full
[05:59:55] [PASSED] Limited 16:235
[05:59:55] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[05:59:55] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[05:59:55] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[05:59:55] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[05:59:55] === drm_test_drm_hdmi_connector_get_output_format_name ====
[05:59:55] [PASSED] RGB
[05:59:55] [PASSED] YUV 4:2:0
[05:59:55] [PASSED] YUV 4:2:2
[05:59:55] [PASSED] YUV 4:4:4
[05:59:55] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[05:59:55] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[05:59:55] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[05:59:55] ============= drm_damage_helper (21 subtests) ==============
[05:59:55] [PASSED] drm_test_damage_iter_no_damage
[05:59:55] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[05:59:55] [PASSED] drm_test_damage_iter_no_damage_src_moved
[05:59:55] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[05:59:55] [PASSED] drm_test_damage_iter_no_damage_not_visible
[05:59:55] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[05:59:55] [PASSED] drm_test_damage_iter_no_damage_no_fb
[05:59:55] [PASSED] drm_test_damage_iter_simple_damage
[05:59:55] [PASSED] drm_test_damage_iter_single_damage
[05:59:55] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[05:59:55] [PASSED] drm_test_damage_iter_single_damage_outside_src
[05:59:55] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[05:59:55] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[05:59:55] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[05:59:55] [PASSED] drm_test_damage_iter_single_damage_src_moved
[05:59:55] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[05:59:55] [PASSED] drm_test_damage_iter_damage
[05:59:55] [PASSED] drm_test_damage_iter_damage_one_intersect
[05:59:55] [PASSED] drm_test_damage_iter_damage_one_outside
[05:59:55] [PASSED] drm_test_damage_iter_damage_src_moved
[05:59:55] [PASSED] drm_test_damage_iter_damage_not_visible
[05:59:55] ================ [PASSED] drm_damage_helper ================
[05:59:55] ============== drm_dp_mst_helper (3 subtests) ==============
[05:59:55] ============== drm_test_dp_mst_calc_pbn_mode ==============
[05:59:55] [PASSED] Clock 154000 BPP 30 DSC disabled
[05:59:55] [PASSED] Clock 234000 BPP 30 DSC disabled
[05:59:55] [PASSED] Clock 297000 BPP 24 DSC disabled
[05:59:55] [PASSED] Clock 332880 BPP 24 DSC enabled
[05:59:55] [PASSED] Clock 324540 BPP 24 DSC enabled
[05:59:55] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[05:59:55] ============== drm_test_dp_mst_calc_pbn_div ===============
[05:59:55] [PASSED] Link rate 2000000 lane count 4
[05:59:55] [PASSED] Link rate 2000000 lane count 2
[05:59:55] [PASSED] Link rate 2000000 lane count 1
[05:59:55] [PASSED] Link rate 1350000 lane count 4
[05:59:55] [PASSED] Link rate 1350000 lane count 2
[05:59:55] [PASSED] Link rate 1350000 lane count 1
[05:59:55] [PASSED] Link rate 1000000 lane count 4
[05:59:55] [PASSED] Link rate 1000000 lane count 2
[05:59:55] [PASSED] Link rate 1000000 lane count 1
[05:59:55] [PASSED] Link rate 810000 lane count 4
[05:59:55] [PASSED] Link rate 810000 lane count 2
[05:59:55] [PASSED] Link rate 810000 lane count 1
[05:59:55] [PASSED] Link rate 540000 lane count 4
[05:59:55] [PASSED] Link rate 540000 lane count 2
[05:59:55] [PASSED] Link rate 540000 lane count 1
[05:59:55] [PASSED] Link rate 270000 lane count 4
[05:59:55] [PASSED] Link rate 270000 lane count 2
[05:59:55] [PASSED] Link rate 270000 lane count 1
[05:59:55] [PASSED] Link rate 162000 lane count 4
[05:59:55] [PASSED] Link rate 162000 lane count 2
[05:59:55] [PASSED] Link rate 162000 lane count 1
[05:59:55] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[05:59:55] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[05:59:55] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[05:59:55] [PASSED] DP_POWER_UP_PHY with port number
[05:59:55] [PASSED] DP_POWER_DOWN_PHY with port number
[05:59:55] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[05:59:55] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[05:59:55] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[05:59:55] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[05:59:55] [PASSED] DP_QUERY_PAYLOAD with port number
[05:59:55] [PASSED] DP_QUERY_PAYLOAD with VCPI
[05:59:55] [PASSED] DP_REMOTE_DPCD_READ with port number
[05:59:55] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[05:59:55] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[05:59:55] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[05:59:55] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[05:59:55] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[05:59:55] [PASSED] DP_REMOTE_I2C_READ with port number
[05:59:55] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[05:59:55] [PASSED] DP_REMOTE_I2C_READ with transactions array
[05:59:55] [PASSED] DP_REMOTE_I2C_WRITE with port number
[05:59:55] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[05:59:55] [PASSED] DP_REMOTE_I2C_WRITE with data array
[05:59:55] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[05:59:55] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[05:59:55] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[05:59:55] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[05:59:55] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[05:59:55] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[05:59:55] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[05:59:55] ================ [PASSED] drm_dp_mst_helper ================
[05:59:55] ================== drm_exec (7 subtests) ===================
[05:59:55] [PASSED] sanitycheck
[05:59:55] [PASSED] test_lock
[05:59:55] [PASSED] test_lock_unlock
[05:59:55] [PASSED] test_duplicates
[05:59:55] [PASSED] test_prepare
[05:59:55] [PASSED] test_prepare_array
[05:59:55] [PASSED] test_multiple_loops
[05:59:55] ==================== [PASSED] drm_exec =====================
[05:59:55] =========== drm_format_helper_test (17 subtests) ===========
[05:59:55] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[05:59:55] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[05:59:55] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[05:59:55] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[05:59:55] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[05:59:55] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[05:59:55] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[05:59:55] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[05:59:55] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[05:59:55] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[05:59:55] ============== drm_test_fb_xrgb8888_to_mono ===============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[05:59:55] ==================== drm_test_fb_swab =====================
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ================ [PASSED] drm_test_fb_swab =================
[05:59:55] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[05:59:55] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[05:59:55] [PASSED] single_pixel_source_buffer
[05:59:55] [PASSED] single_pixel_clip_rectangle
[05:59:55] [PASSED] well_known_colors
[05:59:55] [PASSED] destination_pitch
[05:59:55] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[05:59:55] ================= drm_test_fb_clip_offset =================
[05:59:55] [PASSED] pass through
[05:59:55] [PASSED] horizontal offset
[05:59:55] [PASSED] vertical offset
[05:59:55] [PASSED] horizontal and vertical offset
[05:59:55] [PASSED] horizontal offset (custom pitch)
[05:59:55] [PASSED] vertical offset (custom pitch)
[05:59:55] [PASSED] horizontal and vertical offset (custom pitch)
[05:59:55] ============= [PASSED] drm_test_fb_clip_offset =============
[05:59:55] ============== drm_test_fb_build_fourcc_list ==============
[05:59:55] [PASSED] no native formats
[05:59:55] [PASSED] XRGB8888 as native format
[05:59:55] [PASSED] remove duplicates
[05:59:55] [PASSED] convert alpha formats
[05:59:55] [PASSED] random formats
[05:59:55] ========== [PASSED] drm_test_fb_build_fourcc_list ==========
[05:59:55] =================== drm_test_fb_memcpy ====================
[05:59:55] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[05:59:55] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[05:59:55] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[05:59:55] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[05:59:55] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[05:59:55] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[05:59:55] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[05:59:55] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[05:59:55] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[05:59:55] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[05:59:55] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[05:59:55] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[05:59:55] =============== [PASSED] drm_test_fb_memcpy ================
[05:59:55] ============= [PASSED] drm_format_helper_test ==============
[05:59:55] ================= drm_format (18 subtests) =================
[05:59:55] [PASSED] drm_test_format_block_width_invalid
[05:59:55] [PASSED] drm_test_format_block_width_one_plane
[05:59:55] [PASSED] drm_test_format_block_width_two_plane
[05:59:55] [PASSED] drm_test_format_block_width_three_plane
[05:59:55] [PASSED] drm_test_format_block_width_tiled
[05:59:55] [PASSED] drm_test_format_block_height_invalid
[05:59:55] [PASSED] drm_test_format_block_height_one_plane
[05:59:55] [PASSED] drm_test_format_block_height_two_plane
[05:59:55] [PASSED] drm_test_format_block_height_three_plane
[05:59:55] [PASSED] drm_test_format_block_height_tiled
[05:59:55] [PASSED] drm_test_format_min_pitch_invalid
[05:59:55] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[05:59:55] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[05:59:55] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[05:59:55] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[05:59:55] [PASSED] drm_test_format_min_pitch_two_plane
[05:59:55] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[05:59:55] [PASSED] drm_test_format_min_pitch_tiled
[05:59:55] =================== [PASSED] drm_format ====================
[05:59:55] ============== drm_framebuffer (10 subtests) ===============
[05:59:55] ========== drm_test_framebuffer_check_src_coords ==========
[05:59:55] [PASSED] Success: source fits into fb
[05:59:55] [PASSED] Fail: overflowing fb with x-axis coordinate
[05:59:55] [PASSED] Fail: overflowing fb with y-axis coordinate
[05:59:55] [PASSED] Fail: overflowing fb with source width
[05:59:55] [PASSED] Fail: overflowing fb with source height
[05:59:55] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[05:59:55] [PASSED] drm_test_framebuffer_cleanup
[05:59:55] =============== drm_test_framebuffer_create ===============
[05:59:55] [PASSED] ABGR8888 normal sizes
[05:59:55] [PASSED] ABGR8888 max sizes
[05:59:55] [PASSED] ABGR8888 pitch greater than min required
[05:59:55] [PASSED] ABGR8888 pitch less than min required
[05:59:55] [PASSED] ABGR8888 Invalid width
[05:59:55] [PASSED] ABGR8888 Invalid buffer handle
[05:59:55] [PASSED] No pixel format
[05:59:55] [PASSED] ABGR8888 Width 0
[05:59:55] [PASSED] ABGR8888 Height 0
[05:59:55] [PASSED] ABGR8888 Out of bound height * pitch combination
[05:59:55] [PASSED] ABGR8888 Large buffer offset
[05:59:55] [PASSED] ABGR8888 Buffer offset for inexistent plane
[05:59:55] [PASSED] ABGR8888 Invalid flag
[05:59:55] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[05:59:55] [PASSED] ABGR8888 Valid buffer modifier
[05:59:55] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[05:59:55] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[05:59:55] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[05:59:55] [PASSED] NV12 Normal sizes
[05:59:55] [PASSED] NV12 Max sizes
[05:59:55] [PASSED] NV12 Invalid pitch
[05:59:55] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[05:59:55] [PASSED] NV12 different modifier per-plane
[05:59:55] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[05:59:55] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[05:59:55] [PASSED] NV12 Modifier for inexistent plane
[05:59:55] [PASSED] NV12 Handle for inexistent plane
[05:59:55] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[05:59:55] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[05:59:55] [PASSED] YVU420 Normal sizes
[05:59:55] [PASSED] YVU420 Max sizes
[05:59:55] [PASSED] YVU420 Invalid pitch
[05:59:55] [PASSED] YVU420 Different pitches
[05:59:55] [PASSED] YVU420 Different buffer offsets/pitches
[05:59:55] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[05:59:55] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[05:59:55] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[05:59:55] [PASSED] YVU420 Valid modifier
[05:59:55] [PASSED] YVU420 Different modifiers per plane
[05:59:55] [PASSED] YVU420 Modifier for inexistent plane
[05:59:55] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[05:59:55] [PASSED] X0L2 Normal sizes
[05:59:55] [PASSED] X0L2 Max sizes
[05:59:55] [PASSED] X0L2 Invalid pitch
[05:59:55] [PASSED] X0L2 Pitch greater than minimum required
[05:59:55] [PASSED] X0L2 Handle for inexistent plane
[05:59:55] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[05:59:55] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[05:59:55] [PASSED] X0L2 Valid modifier
[05:59:55] [PASSED] X0L2 Modifier for inexistent plane
[05:59:55] =========== [PASSED] drm_test_framebuffer_create ===========
[05:59:55] [PASSED] drm_test_framebuffer_free
[05:59:55] [PASSED] drm_test_framebuffer_init
[05:59:55] [PASSED] drm_test_framebuffer_init_bad_format
[05:59:55] [PASSED] drm_test_framebuffer_init_dev_mismatch
[05:59:55] [PASSED] drm_test_framebuffer_lookup
[05:59:55] [PASSED] drm_test_framebuffer_lookup_inexistent
[05:59:55] [PASSED] drm_test_framebuffer_modifiers_not_supported
[05:59:55] ================= [PASSED] drm_framebuffer =================
[05:59:55] ================ drm_gem_shmem (8 subtests) ================
[05:59:55] [PASSED] drm_gem_shmem_test_obj_create
[05:59:55] [PASSED] drm_gem_shmem_test_obj_create_private
[05:59:55] [PASSED] drm_gem_shmem_test_pin_pages
[05:59:55] [PASSED] drm_gem_shmem_test_vmap
[05:59:55] [PASSED] drm_gem_shmem_test_get_pages_sgt
[05:59:55] [PASSED] drm_gem_shmem_test_get_sg_table
[05:59:55] [PASSED] drm_gem_shmem_test_madvise
[05:59:55] [PASSED] drm_gem_shmem_test_purge
[05:59:55] ================== [PASSED] drm_gem_shmem ==================
[05:59:55] === drm_atomic_helper_connector_hdmi_check (22 subtests) ===
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[05:59:55] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[05:59:55] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback
[05:59:55] [PASSED] drm_test_check_max_tmds_rate_format_fallback
[05:59:55] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[05:59:55] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[05:59:55] [PASSED] drm_test_check_output_bpc_dvi
[05:59:55] [PASSED] drm_test_check_output_bpc_format_vic_1
[05:59:55] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[05:59:55] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[05:59:55] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[05:59:55] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[05:59:55] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[05:59:55] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[05:59:55] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[05:59:55] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[05:59:55] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[05:59:55] [PASSED] drm_test_check_broadcast_rgb_value
[05:59:55] [PASSED] drm_test_check_bpc_8_value
[05:59:55] [PASSED] drm_test_check_bpc_10_value
[05:59:55] [PASSED] drm_test_check_bpc_12_value
[05:59:55] [PASSED] drm_test_check_format_value
[05:59:55] [PASSED] drm_test_check_tmds_char_value
[05:59:55] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[05:59:55] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[05:59:55] [PASSED] drm_test_check_mode_valid
[05:59:55] [PASSED] drm_test_check_mode_valid_reject
[05:59:55] [PASSED] drm_test_check_mode_valid_reject_rate
[05:59:55] [PASSED] drm_test_check_mode_valid_reject_max_clock
[05:59:55] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[05:59:55] ================= drm_managed (2 subtests) =================
[05:59:55] [PASSED] drm_test_managed_release_action
[05:59:55] [PASSED] drm_test_managed_run_action
[05:59:55] =================== [PASSED] drm_managed ===================
[05:59:55] =================== drm_mm (6 subtests) ====================
[05:59:55] [PASSED] drm_test_mm_init
[05:59:55] [PASSED] drm_test_mm_debug
[05:59:55] [PASSED] drm_test_mm_align32
[05:59:55] [PASSED] drm_test_mm_align64
[05:59:55] [PASSED] drm_test_mm_lowest
[05:59:55] [PASSED] drm_test_mm_highest
[05:59:55] ===================== [PASSED] drm_mm ======================
[05:59:55] ============= drm_modes_analog_tv (5 subtests) =============
[05:59:55] [PASSED] drm_test_modes_analog_tv_mono_576i
[05:59:55] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[05:59:55] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[05:59:55] [PASSED] drm_test_modes_analog_tv_pal_576i
[05:59:55] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[05:59:55] =============== [PASSED] drm_modes_analog_tv ===============
[05:59:55] ============== drm_plane_helper (2 subtests) ===============
[05:59:55] =============== drm_test_check_plane_state ================
[05:59:55] [PASSED] clipping_simple
[05:59:55] [PASSED] clipping_rotate_reflect
[05:59:55] [PASSED] positioning_simple
[05:59:55] [PASSED] upscaling
[05:59:55] [PASSED] downscaling
[05:59:55] [PASSED] rounding1
[05:59:55] [PASSED] rounding2
[05:59:55] [PASSED] rounding3
[05:59:55] [PASSED] rounding4
[05:59:55] =========== [PASSED] drm_test_check_plane_state ============
[05:59:55] =========== drm_test_check_invalid_plane_state ============
[05:59:55] [PASSED] positioning_invalid
[05:59:55] [PASSED] upscaling_invalid
[05:59:55] [PASSED] downscaling_invalid
[05:59:55] ======= [PASSED] drm_test_check_invalid_plane_state ========
[05:59:55] ================ [PASSED] drm_plane_helper =================
[05:59:55] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[05:59:55] ====== drm_test_connector_helper_tv_get_modes_check =======
[05:59:55] [PASSED] None
[05:59:55] [PASSED] PAL
[05:59:55] [PASSED] NTSC
[05:59:55] [PASSED] Both, NTSC Default
[05:59:55] [PASSED] Both, PAL Default
[05:59:55] [PASSED] Both, NTSC Default, with PAL on command-line
[05:59:55] [PASSED] Both, PAL Default, with NTSC on command-line
[05:59:55] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[05:59:55] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[05:59:55] ================== drm_rect (9 subtests) ===================
[05:59:55] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[05:59:55] [PASSED] drm_test_rect_clip_scaled_not_clipped
[05:59:55] [PASSED] drm_test_rect_clip_scaled_clipped
[05:59:55] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[05:59:55] ================= drm_test_rect_intersect =================
[05:59:55] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[05:59:55] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[05:59:55] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[05:59:55] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[05:59:55] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[05:59:55] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[05:59:55] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[05:59:55] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[05:59:55] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[05:59:55] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[05:59:55] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[05:59:55] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[05:59:55] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[05:59:55] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[05:59:55] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[05:59:55] ============= [PASSED] drm_test_rect_intersect =============
[05:59:55] ================ drm_test_rect_calc_hscale ================
[05:59:55] [PASSED] normal use
[05:59:55] [PASSED] out of max range
[05:59:55] [PASSED] out of min range
[05:59:55] [PASSED] zero dst
[05:59:55] [PASSED] negative src
[05:59:55] [PASSED] negative dst
[05:59:55] ============ [PASSED] drm_test_rect_calc_hscale ============
[05:59:55] ================ drm_test_rect_calc_vscale ================
[05:59:55] [PASSED] normal use
[05:59:55] [PASSED] out of max range
[05:59:55] [PASSED] out of min range
[05:59:55] [PASSED] zero dst
[05:59:55] [PASSED] negative src
[05:59:55] [PASSED] negative dst
[05:59:55] ============ [PASSED] drm_test_rect_calc_vscale ============
[05:59:55] ================== drm_test_rect_rotate ===================
[05:59:55] [PASSED] reflect-x
[05:59:55] [PASSED] reflect-y
[05:59:55] [PASSED] rotate-0
[05:59:55] [PASSED] rotate-90
[05:59:55] [PASSED] rotate-180
[05:59:55] [PASSED] rotate-270
[05:59:55] ============== [PASSED] drm_test_rect_rotate ===============
[05:59:55] ================ drm_test_rect_rotate_inv =================
[05:59:55] [PASSED] reflect-x
[05:59:55] [PASSED] reflect-y
[05:59:55] [PASSED] rotate-0
[05:59:55] [PASSED] rotate-90
[05:59:55] [PASSED] rotate-180
[05:59:55] [PASSED] rotate-270
[05:59:55] ============ [PASSED] drm_test_rect_rotate_inv =============
[05:59:55] ==================== [PASSED] drm_rect =====================
[05:59:55] ============================================================
stty: 'standard input': Inappropriate ioctl for device
[05:59:55] Testing complete. Ran 593 tests: passed: 593
[05:59:55] Elapsed time: 24.698s total, 1.676s configuring, 22.805s building, 0.175s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[05:59:55] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[05:59:57] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json ARCH=um O=.kunit --jobs=48
[06:00:05] Starting KUnit Kernel (1/1)...
[06:00:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[06:00:05] ================= ttm_device (5 subtests) ==================
[06:00:05] [PASSED] ttm_device_init_basic
[06:00:05] [PASSED] ttm_device_init_multiple
[06:00:05] [PASSED] ttm_device_fini_basic
[06:00:05] [PASSED] ttm_device_init_no_vma_man
[06:00:05] ================== ttm_device_init_pools ==================
[06:00:05] [PASSED] No DMA allocations, no DMA32 required
[06:00:05] [PASSED] DMA allocations, DMA32 required
[06:00:05] [PASSED] No DMA allocations, DMA32 required
[06:00:05] [PASSED] DMA allocations, no DMA32 required
[06:00:05] ============== [PASSED] ttm_device_init_pools ==============
[06:00:05] =================== [PASSED] ttm_device ====================
[06:00:05] ================== ttm_pool (8 subtests) ===================
[06:00:05] ================== ttm_pool_alloc_basic ===================
[06:00:05] [PASSED] One page
[06:00:05] [PASSED] More than one page
[06:00:05] [PASSED] Above the allocation limit
[06:00:05] [PASSED] One page, with coherent DMA mappings enabled
[06:00:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[06:00:05] ============== [PASSED] ttm_pool_alloc_basic ===============
[06:00:05] ============== ttm_pool_alloc_basic_dma_addr ==============
[06:00:05] [PASSED] One page
[06:00:05] [PASSED] More than one page
[06:00:05] [PASSED] Above the allocation limit
[06:00:05] [PASSED] One page, with coherent DMA mappings enabled
[06:00:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[06:00:05] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[06:00:05] [PASSED] ttm_pool_alloc_order_caching_match
[06:00:05] [PASSED] ttm_pool_alloc_caching_mismatch
[06:00:05] [PASSED] ttm_pool_alloc_order_mismatch
[06:00:05] [PASSED] ttm_pool_free_dma_alloc
[06:00:05] [PASSED] ttm_pool_free_no_dma_alloc
[06:00:05] [PASSED] ttm_pool_fini_basic
[06:00:05] ==================== [PASSED] ttm_pool =====================
[06:00:05] ================ ttm_resource (8 subtests) =================
[06:00:05] ================= ttm_resource_init_basic =================
[06:00:05] [PASSED] Init resource in TTM_PL_SYSTEM
[06:00:05] [PASSED] Init resource in TTM_PL_VRAM
[06:00:05] [PASSED] Init resource in a private placement
[06:00:05] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[06:00:05] ============= [PASSED] ttm_resource_init_basic =============
[06:00:05] [PASSED] ttm_resource_init_pinned
[06:00:05] [PASSED] ttm_resource_fini_basic
[06:00:05] [PASSED] ttm_resource_manager_init_basic
[06:00:05] [PASSED] ttm_resource_manager_usage_basic
[06:00:05] [PASSED] ttm_resource_manager_set_used_basic
[06:00:05] [PASSED] ttm_sys_man_alloc_basic
[06:00:05] [PASSED] ttm_sys_man_free_basic
[06:00:05] ================== [PASSED] ttm_resource ===================
[06:00:05] =================== ttm_tt (15 subtests) ===================
[06:00:05] ==================== ttm_tt_init_basic ====================
[06:00:05] [PASSED] Page-aligned size
[06:00:05] [PASSED] Extra pages requested
[06:00:05] ================ [PASSED] ttm_tt_init_basic ================
[06:00:05] [PASSED] ttm_tt_init_misaligned
[06:00:05] [PASSED] ttm_tt_fini_basic
[06:00:05] [PASSED] ttm_tt_fini_sg
[06:00:05] [PASSED] ttm_tt_fini_shmem
[06:00:05] [PASSED] ttm_tt_create_basic
[06:00:05] [PASSED] ttm_tt_create_invalid_bo_type
[06:00:05] [PASSED] ttm_tt_create_ttm_exists
[06:00:05] [PASSED] ttm_tt_create_failed
[06:00:05] [PASSED] ttm_tt_destroy_basic
[06:00:05] [PASSED] ttm_tt_populate_null_ttm
[06:00:05] [PASSED] ttm_tt_populate_populated_ttm
[06:00:05] [PASSED] ttm_tt_unpopulate_basic
[06:00:05] [PASSED] ttm_tt_unpopulate_empty_ttm
[06:00:05] [PASSED] ttm_tt_swapin_basic
[06:00:05] ===================== [PASSED] ttm_tt ======================
[06:00:05] =================== ttm_bo (14 subtests) ===================
[06:00:05] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[06:00:05] [PASSED] Cannot be interrupted and sleeps
[06:00:05] [PASSED] Cannot be interrupted, locks straight away
[06:00:05] [PASSED] Can be interrupted, sleeps
[06:00:05] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[06:00:05] [PASSED] ttm_bo_reserve_locked_no_sleep
[06:00:05] [PASSED] ttm_bo_reserve_no_wait_ticket
[06:00:05] [PASSED] ttm_bo_reserve_double_resv
[06:00:05] [PASSED] ttm_bo_reserve_interrupted
[06:00:05] [PASSED] ttm_bo_reserve_deadlock
[06:00:05] [PASSED] ttm_bo_unreserve_basic
[06:00:05] [PASSED] ttm_bo_unreserve_pinned
[06:00:05] [PASSED] ttm_bo_unreserve_bulk
[06:00:05] [PASSED] ttm_bo_put_basic
[06:00:05] [PASSED] ttm_bo_put_shared_resv
[06:00:05] [PASSED] ttm_bo_pin_basic
[06:00:05] [PASSED] ttm_bo_pin_unpin_resource
[06:00:05] [PASSED] ttm_bo_multiple_pin_one_unpin
[06:00:05] ===================== [PASSED] ttm_bo ======================
[06:00:05] ============== ttm_bo_validate (22 subtests) ===============
[06:00:05] ============== ttm_bo_init_reserved_sys_man ===============
[06:00:05] [PASSED] Buffer object for userspace
[06:00:05] [PASSED] Kernel buffer object
[06:00:05] [PASSED] Shared buffer object
[06:00:05] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[06:00:05] ============== ttm_bo_init_reserved_mock_man ==============
[06:00:05] [PASSED] Buffer object for userspace
[06:00:05] [PASSED] Kernel buffer object
[06:00:05] [PASSED] Shared buffer object
[06:00:05] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[06:00:05] [PASSED] ttm_bo_init_reserved_resv
[06:00:05] ================== ttm_bo_validate_basic ==================
[06:00:05] [PASSED] Buffer object for userspace
[06:00:05] [PASSED] Kernel buffer object
[06:00:05] [PASSED] Shared buffer object
[06:00:05] ============== [PASSED] ttm_bo_validate_basic ==============
[06:00:05] [PASSED] ttm_bo_validate_invalid_placement
[06:00:05] ============= ttm_bo_validate_same_placement ==============
[06:00:05] [PASSED] System manager
[06:00:05] [PASSED] VRAM manager
[06:00:05] ========= [PASSED] ttm_bo_validate_same_placement ==========
[06:00:05] [PASSED] ttm_bo_validate_failed_alloc
[06:00:05] [PASSED] ttm_bo_validate_pinned
[06:00:05] [PASSED] ttm_bo_validate_busy_placement
[06:00:05] ================ ttm_bo_validate_multihop =================
[06:00:05] [PASSED] Buffer object for userspace
[06:00:05] [PASSED] Kernel buffer object
[06:00:05] [PASSED] Shared buffer object
[06:00:05] ============ [PASSED] ttm_bo_validate_multihop =============
[06:00:05] ========== ttm_bo_validate_no_placement_signaled ==========
[06:00:05] [PASSED] Buffer object in system domain, no page vector
[06:00:05] [PASSED] Buffer object in system domain with an existing page vector
[06:00:05] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[06:00:05] ======== ttm_bo_validate_no_placement_not_signaled ========
[06:00:05] [PASSED] Buffer object for userspace
[06:00:05] [PASSED] Kernel buffer object
[06:00:05] [PASSED] Shared buffer object
[06:00:05] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[06:00:05] [PASSED] ttm_bo_validate_move_fence_signaled
[06:00:05] ========= ttm_bo_validate_move_fence_not_signaled =========
[06:00:05] [PASSED] Waits for GPU
[06:00:05] [PASSED] Tries to lock straight away
[06:00:05] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[06:00:05] [PASSED] ttm_bo_validate_swapout
[06:00:05] [PASSED] ttm_bo_validate_happy_evict
[06:00:05] [PASSED] ttm_bo_validate_all_pinned_evict
[06:00:05] [PASSED] ttm_bo_validate_allowed_only_evict
[06:00:05] [PASSED] ttm_bo_validate_deleted_evict
[06:00:05] [PASSED] ttm_bo_validate_busy_domain_evict
[06:00:05] [PASSED] ttm_bo_validate_evict_gutting
[06:00:05] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[06:00:05] ================= [PASSED] ttm_bo_validate =================
[06:00:05] ============================================================
[06:00:05] Testing complete. Ran 102 tests: passed: 102
[06:00:05] Elapsed time: 10.105s total, 1.655s configuring, 7.783s building, 0.570s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 36+ messages in thread
* ✓ CI.Hooks: success for Expose modifiers/formats supported by async flips (rev2)
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (7 preceding siblings ...)
2025-01-08 6:00 ` ✓ CI.KUnit: success " Patchwork
@ 2025-01-08 6:20 ` Patchwork
2025-01-08 6:22 ` ✗ CI.checksparse: warning " Patchwork
` (2 subsequent siblings)
11 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-01-08 6:20 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Expose modifiers/formats supported by async flips (rev2)
URL : https://patchwork.freedesktop.org/series/140934/
State : success
== Summary ==
run-parts: executing /workspace/ci/hooks/00-showenv
+ export
+ grep -Ei '(^|\W)CI_'
declare -x CI_KERNEL_BUILD_DIR="/workspace/kernel/build64-default"
declare -x CI_KERNEL_SRC_DIR="/workspace/kernel"
declare -x CI_TOOLS_SRC_DIR="/workspace/ci"
declare -x CI_WORKSPACE_DIR="/workspace"
run-parts: executing /workspace/ci/hooks/10-build-W1
+ SRC_DIR=/workspace/kernel
+ RESTORE_DISPLAY_CONFIG=0
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ cd /workspace/kernel
++ nproc
+ make -j48 O=/workspace/kernel/build64-default modules_prepare
make[1]: Entering directory '/workspace/kernel/build64-default'
GEN Makefile
mkdir -p /workspace/kernel/build64-default/tools/objtool && make O=/workspace/kernel/build64-default subdir=tools/objtool --no-print-directory -C objtool
CALL ../scripts/checksyscalls.sh
INSTALL libsubcmd_headers
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/exec-cmd.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/help.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/pager.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/parse-options.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/run-command.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/sigchain.o
CC /workspace/kernel/build64-default/tools/objtool/libsubcmd/subcmd-config.o
LD /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd-in.o
AR /workspace/kernel/build64-default/tools/objtool/libsubcmd/libsubcmd.a
CC /workspace/kernel/build64-default/tools/objtool/weak.o
CC /workspace/kernel/build64-default/tools/objtool/check.o
CC /workspace/kernel/build64-default/tools/objtool/special.o
CC /workspace/kernel/build64-default/tools/objtool/builtin-check.o
CC /workspace/kernel/build64-default/tools/objtool/elf.o
CC /workspace/kernel/build64-default/tools/objtool/objtool.o
CC /workspace/kernel/build64-default/tools/objtool/orc_gen.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/special.o
CC /workspace/kernel/build64-default/tools/objtool/orc_dump.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/decode.o
CC /workspace/kernel/build64-default/tools/objtool/libstring.o
CC /workspace/kernel/build64-default/tools/objtool/arch/x86/orc.o
CC /workspace/kernel/build64-default/tools/objtool/libctype.o
CC /workspace/kernel/build64-default/tools/objtool/str_error_r.o
CC /workspace/kernel/build64-default/tools/objtool/librbtree.o
LD /workspace/kernel/build64-default/tools/objtool/arch/x86/objtool-in.o
LD /workspace/kernel/build64-default/tools/objtool/objtool-in.o
LINK /workspace/kernel/build64-default/tools/objtool/objtool
make[1]: Leaving directory '/workspace/kernel/build64-default'
++ nproc
+ make -j48 O=/workspace/kernel/build64-default W=1 drivers/gpu/drm/xe
make[1]: Entering directory '/workspace/kernel/build64-default'
make[2]: Nothing to be done for 'drivers/gpu/drm/xe'.
make[1]: Leaving directory '/workspace/kernel/build64-default'
run-parts: executing /workspace/ci/hooks/11-build-32b
+++ realpath /workspace/ci/hooks/11-build-32b
++ dirname /workspace/ci/hooks/11-build-32b
+ THIS_SCRIPT_DIR=/workspace/ci/hooks
+ SRC_DIR=/workspace/kernel
+ TOOLS_SRC_DIR=/workspace/ci
+ '[' -n /workspace/kernel/build64-default ']'
+ BUILD_DIR=/workspace/kernel/build64-default
+ BUILD_DIR=/workspace/kernel/build64-default/build32
+ cd /workspace/kernel
+ mkdir -p /workspace/kernel/build64-default/build32
++ nproc
+ make -j48 ARCH=i386 O=/workspace/kernel/build64-default/build32 defconfig
make[1]: Entering directory '/workspace/kernel/build64-default/build32'
GEN Makefile
HOSTCC scripts/basic/fixdep
HOSTCC scripts/kconfig/conf.o
HOSTCC scripts/kconfig/confdata.o
HOSTCC scripts/kconfig/expr.o
LEX scripts/kconfig/lexer.lex.c
YACC scripts/kconfig/parser.tab.[ch]
HOSTCC scripts/kconfig/menu.o
HOSTCC scripts/kconfig/preprocess.o
HOSTCC scripts/kconfig/symbol.o
HOSTCC scripts/kconfig/util.o
HOSTCC scripts/kconfig/lexer.lex.o
HOSTCC scripts/kconfig/parser.tab.o
HOSTLD scripts/kconfig/conf
*** Default configuration is based on 'i386_defconfig'
#
# configuration written to .config
#
make[1]: Leaving directory '/workspace/kernel/build64-default/build32'
+ cd /workspace/kernel/build64-default/build32
+ /workspace/kernel/scripts/kconfig/merge_config.sh .config /workspace/ci/kernel/fragments/10-xe.fragment
Using .config as base
Merging /workspace/ci/kernel/fragments/10-xe.fragment
Value of CONFIG_DRM_XE is redefined by fragment /workspace/ci/kernel/fragments/10-xe.fragment:
Previous value: # CONFIG_DRM_XE is not set
New value: CONFIG_DRM_XE=m
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
Value requested for CONFIG_HAVE_UID16 not in final .config
Requested value: CONFIG_HAVE_UID16=y
Actual value:
Value requested for CONFIG_UID16 not in final .config
Requested value: CONFIG_UID16=y
Actual value:
Value requested for CONFIG_X86_32 not in final .config
Requested value: CONFIG_X86_32=y
Actual value:
Value requested for CONFIG_OUTPUT_FORMAT not in final .config
Requested value: CONFIG_OUTPUT_FORMAT="elf32-i386"
Actual value: CONFIG_OUTPUT_FORMAT="elf64-x86-64"
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MIN not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MIN=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MIN=28
Value requested for CONFIG_ARCH_MMAP_RND_BITS_MAX not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS_MAX=16
Actual value: CONFIG_ARCH_MMAP_RND_BITS_MAX=32
Value requested for CONFIG_PGTABLE_LEVELS not in final .config
Requested value: CONFIG_PGTABLE_LEVELS=2
Actual value: CONFIG_PGTABLE_LEVELS=5
Value requested for CONFIG_X86_BIGSMP not in final .config
Requested value: # CONFIG_X86_BIGSMP is not set
Actual value:
Value requested for CONFIG_X86_INTEL_QUARK not in final .config
Requested value: # CONFIG_X86_INTEL_QUARK is not set
Actual value:
Value requested for CONFIG_X86_RDC321X not in final .config
Requested value: # CONFIG_X86_RDC321X is not set
Actual value:
Value requested for CONFIG_X86_32_NON_STANDARD not in final .config
Requested value: # CONFIG_X86_32_NON_STANDARD is not set
Actual value:
Value requested for CONFIG_X86_32_IRIS not in final .config
Requested value: # CONFIG_X86_32_IRIS is not set
Actual value:
Value requested for CONFIG_M486SX not in final .config
Requested value: # CONFIG_M486SX is not set
Actual value:
Value requested for CONFIG_M486 not in final .config
Requested value: # CONFIG_M486 is not set
Actual value:
Value requested for CONFIG_M586 not in final .config
Requested value: # CONFIG_M586 is not set
Actual value:
Value requested for CONFIG_M586TSC not in final .config
Requested value: # CONFIG_M586TSC is not set
Actual value:
Value requested for CONFIG_M586MMX not in final .config
Requested value: # CONFIG_M586MMX is not set
Actual value:
Value requested for CONFIG_M686 not in final .config
Requested value: CONFIG_M686=y
Actual value:
Value requested for CONFIG_MPENTIUMII not in final .config
Requested value: # CONFIG_MPENTIUMII is not set
Actual value:
Value requested for CONFIG_MPENTIUMIII not in final .config
Requested value: # CONFIG_MPENTIUMIII is not set
Actual value:
Value requested for CONFIG_MPENTIUMM not in final .config
Requested value: # CONFIG_MPENTIUMM is not set
Actual value:
Value requested for CONFIG_MPENTIUM4 not in final .config
Requested value: # CONFIG_MPENTIUM4 is not set
Actual value:
Value requested for CONFIG_MK6 not in final .config
Requested value: # CONFIG_MK6 is not set
Actual value:
Value requested for CONFIG_MK7 not in final .config
Requested value: # CONFIG_MK7 is not set
Actual value:
Value requested for CONFIG_MCRUSOE not in final .config
Requested value: # CONFIG_MCRUSOE is not set
Actual value:
Value requested for CONFIG_MEFFICEON not in final .config
Requested value: # CONFIG_MEFFICEON is not set
Actual value:
Value requested for CONFIG_MWINCHIPC6 not in final .config
Requested value: # CONFIG_MWINCHIPC6 is not set
Actual value:
Value requested for CONFIG_MWINCHIP3D not in final .config
Requested value: # CONFIG_MWINCHIP3D is not set
Actual value:
Value requested for CONFIG_MELAN not in final .config
Requested value: # CONFIG_MELAN is not set
Actual value:
Value requested for CONFIG_MGEODEGX1 not in final .config
Requested value: # CONFIG_MGEODEGX1 is not set
Actual value:
Value requested for CONFIG_MGEODE_LX not in final .config
Requested value: # CONFIG_MGEODE_LX is not set
Actual value:
Value requested for CONFIG_MCYRIXIII not in final .config
Requested value: # CONFIG_MCYRIXIII is not set
Actual value:
Value requested for CONFIG_MVIAC3_2 not in final .config
Requested value: # CONFIG_MVIAC3_2 is not set
Actual value:
Value requested for CONFIG_MVIAC7 not in final .config
Requested value: # CONFIG_MVIAC7 is not set
Actual value:
Value requested for CONFIG_X86_GENERIC not in final .config
Requested value: # CONFIG_X86_GENERIC is not set
Actual value:
Value requested for CONFIG_X86_INTERNODE_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_INTERNODE_CACHE_SHIFT=5
Actual value: CONFIG_X86_INTERNODE_CACHE_SHIFT=6
Value requested for CONFIG_X86_L1_CACHE_SHIFT not in final .config
Requested value: CONFIG_X86_L1_CACHE_SHIFT=5
Actual value: CONFIG_X86_L1_CACHE_SHIFT=6
Value requested for CONFIG_X86_USE_PPRO_CHECKSUM not in final .config
Requested value: CONFIG_X86_USE_PPRO_CHECKSUM=y
Actual value:
Value requested for CONFIG_X86_MINIMUM_CPU_FAMILY not in final .config
Requested value: CONFIG_X86_MINIMUM_CPU_FAMILY=6
Actual value: CONFIG_X86_MINIMUM_CPU_FAMILY=64
Value requested for CONFIG_CPU_SUP_TRANSMETA_32 not in final .config
Requested value: CONFIG_CPU_SUP_TRANSMETA_32=y
Actual value:
Value requested for CONFIG_CPU_SUP_VORTEX_32 not in final .config
Requested value: CONFIG_CPU_SUP_VORTEX_32=y
Actual value:
Value requested for CONFIG_HPET_TIMER not in final .config
Requested value: # CONFIG_HPET_TIMER is not set
Actual value: CONFIG_HPET_TIMER=y
Value requested for CONFIG_NR_CPUS_RANGE_END not in final .config
Requested value: CONFIG_NR_CPUS_RANGE_END=8
Actual value: CONFIG_NR_CPUS_RANGE_END=512
Value requested for CONFIG_NR_CPUS_DEFAULT not in final .config
Requested value: CONFIG_NR_CPUS_DEFAULT=8
Actual value: CONFIG_NR_CPUS_DEFAULT=64
Value requested for CONFIG_X86_ANCIENT_MCE not in final .config
Requested value: # CONFIG_X86_ANCIENT_MCE is not set
Actual value:
Value requested for CONFIG_X86_LEGACY_VM86 not in final .config
Requested value: # CONFIG_X86_LEGACY_VM86 is not set
Actual value:
Value requested for CONFIG_X86_ESPFIX32 not in final .config
Requested value: CONFIG_X86_ESPFIX32=y
Actual value:
Value requested for CONFIG_TOSHIBA not in final .config
Requested value: # CONFIG_TOSHIBA is not set
Actual value:
Value requested for CONFIG_X86_REBOOTFIXUPS not in final .config
Requested value: # CONFIG_X86_REBOOTFIXUPS is not set
Actual value:
Value requested for CONFIG_MICROCODE_INITRD32 not in final .config
Requested value: CONFIG_MICROCODE_INITRD32=y
Actual value:
Value requested for CONFIG_NOHIGHMEM not in final .config
Requested value: # CONFIG_NOHIGHMEM is not set
Actual value:
Value requested for CONFIG_HIGHMEM4G not in final .config
Requested value: CONFIG_HIGHMEM4G=y
Actual value:
Value requested for CONFIG_HIGHMEM64G not in final .config
Requested value: # CONFIG_HIGHMEM64G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_3G not in final .config
Requested value: CONFIG_VMSPLIT_3G=y
Actual value:
Value requested for CONFIG_VMSPLIT_3G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_3G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G not in final .config
Requested value: # CONFIG_VMSPLIT_2G is not set
Actual value:
Value requested for CONFIG_VMSPLIT_2G_OPT not in final .config
Requested value: # CONFIG_VMSPLIT_2G_OPT is not set
Actual value:
Value requested for CONFIG_VMSPLIT_1G not in final .config
Requested value: # CONFIG_VMSPLIT_1G is not set
Actual value:
Value requested for CONFIG_PAGE_OFFSET not in final .config
Requested value: CONFIG_PAGE_OFFSET=0xC0000000
Actual value:
Value requested for CONFIG_HIGHMEM not in final .config
Requested value: CONFIG_HIGHMEM=y
Actual value:
Value requested for CONFIG_X86_PAE not in final .config
Requested value: # CONFIG_X86_PAE is not set
Actual value:
Value requested for CONFIG_ARCH_FLATMEM_ENABLE not in final .config
Requested value: CONFIG_ARCH_FLATMEM_ENABLE=y
Actual value:
Value requested for CONFIG_ARCH_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_ARCH_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_ILLEGAL_POINTER_VALUE not in final .config
Requested value: CONFIG_ILLEGAL_POINTER_VALUE=0
Actual value: CONFIG_ILLEGAL_POINTER_VALUE=0xdead000000000000
Value requested for CONFIG_HIGHPTE not in final .config
Requested value: # CONFIG_HIGHPTE is not set
Actual value:
Value requested for CONFIG_COMPAT_VDSO not in final .config
Requested value: # CONFIG_COMPAT_VDSO is not set
Actual value:
Value requested for CONFIG_FUNCTION_PADDING_CFI not in final .config
Requested value: CONFIG_FUNCTION_PADDING_CFI=0
Actual value: CONFIG_FUNCTION_PADDING_CFI=11
Value requested for CONFIG_FUNCTION_PADDING_BYTES not in final .config
Requested value: CONFIG_FUNCTION_PADDING_BYTES=4
Actual value: CONFIG_FUNCTION_PADDING_BYTES=16
Value requested for CONFIG_APM not in final .config
Requested value: # CONFIG_APM is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K6 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K6 is not set
Actual value:
Value requested for CONFIG_X86_POWERNOW_K7 not in final .config
Requested value: # CONFIG_X86_POWERNOW_K7 is not set
Actual value:
Value requested for CONFIG_X86_GX_SUSPMOD not in final .config
Requested value: # CONFIG_X86_GX_SUSPMOD is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_ICH not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_ICH is not set
Actual value:
Value requested for CONFIG_X86_SPEEDSTEP_SMI not in final .config
Requested value: # CONFIG_X86_SPEEDSTEP_SMI is not set
Actual value:
Value requested for CONFIG_X86_CPUFREQ_NFORCE2 not in final .config
Requested value: # CONFIG_X86_CPUFREQ_NFORCE2 is not set
Actual value:
Value requested for CONFIG_X86_LONGRUN not in final .config
Requested value: # CONFIG_X86_LONGRUN is not set
Actual value:
Value requested for CONFIG_X86_LONGHAUL not in final .config
Requested value: # CONFIG_X86_LONGHAUL is not set
Actual value:
Value requested for CONFIG_X86_E_POWERSAVER not in final .config
Requested value: # CONFIG_X86_E_POWERSAVER is not set
Actual value:
Value requested for CONFIG_PCI_GOBIOS not in final .config
Requested value: # CONFIG_PCI_GOBIOS is not set
Actual value:
Value requested for CONFIG_PCI_GOMMCONFIG not in final .config
Requested value: # CONFIG_PCI_GOMMCONFIG is not set
Actual value:
Value requested for CONFIG_PCI_GODIRECT not in final .config
Requested value: # CONFIG_PCI_GODIRECT is not set
Actual value:
Value requested for CONFIG_PCI_GOANY not in final .config
Requested value: CONFIG_PCI_GOANY=y
Actual value:
Value requested for CONFIG_PCI_BIOS not in final .config
Requested value: CONFIG_PCI_BIOS=y
Actual value:
Value requested for CONFIG_ISA not in final .config
Requested value: # CONFIG_ISA is not set
Actual value:
Value requested for CONFIG_SCx200 not in final .config
Requested value: # CONFIG_SCx200 is not set
Actual value:
Value requested for CONFIG_OLPC not in final .config
Requested value: # CONFIG_OLPC is not set
Actual value:
Value requested for CONFIG_ALIX not in final .config
Requested value: # CONFIG_ALIX is not set
Actual value:
Value requested for CONFIG_NET5501 not in final .config
Requested value: # CONFIG_NET5501 is not set
Actual value:
Value requested for CONFIG_GEOS not in final .config
Requested value: # CONFIG_GEOS is not set
Actual value:
Value requested for CONFIG_COMPAT_32 not in final .config
Requested value: CONFIG_COMPAT_32=y
Actual value:
Value requested for CONFIG_HAVE_ATOMIC_IOMAP not in final .config
Requested value: CONFIG_HAVE_ATOMIC_IOMAP=y
Actual value:
Value requested for CONFIG_ARCH_32BIT_OFF_T not in final .config
Requested value: CONFIG_ARCH_32BIT_OFF_T=y
Actual value:
Value requested for CONFIG_ARCH_WANT_IPC_PARSE_VERSION not in final .config
Requested value: CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
Actual value:
Value requested for CONFIG_MODULES_USE_ELF_REL not in final .config
Requested value: CONFIG_MODULES_USE_ELF_REL=y
Actual value:
Value requested for CONFIG_ARCH_MMAP_RND_BITS not in final .config
Requested value: CONFIG_ARCH_MMAP_RND_BITS=8
Actual value: CONFIG_ARCH_MMAP_RND_BITS=28
Value requested for CONFIG_CLONE_BACKWARDS not in final .config
Requested value: CONFIG_CLONE_BACKWARDS=y
Actual value:
Value requested for CONFIG_OLD_SIGSUSPEND3 not in final .config
Requested value: CONFIG_OLD_SIGSUSPEND3=y
Actual value:
Value requested for CONFIG_OLD_SIGACTION not in final .config
Requested value: CONFIG_OLD_SIGACTION=y
Actual value:
Value requested for CONFIG_ARCH_SPLIT_ARG64 not in final .config
Requested value: CONFIG_ARCH_SPLIT_ARG64=y
Actual value:
Value requested for CONFIG_FUNCTION_ALIGNMENT not in final .config
Requested value: CONFIG_FUNCTION_ALIGNMENT=4
Actual value: CONFIG_FUNCTION_ALIGNMENT=16
Value requested for CONFIG_SELECT_MEMORY_MODEL not in final .config
Requested value: CONFIG_SELECT_MEMORY_MODEL=y
Actual value:
Value requested for CONFIG_FLATMEM_MANUAL not in final .config
Requested value: CONFIG_FLATMEM_MANUAL=y
Actual value:
Value requested for CONFIG_SPARSEMEM_MANUAL not in final .config
Requested value: # CONFIG_SPARSEMEM_MANUAL is not set
Actual value:
Value requested for CONFIG_FLATMEM not in final .config
Requested value: CONFIG_FLATMEM=y
Actual value:
Value requested for CONFIG_SPARSEMEM_STATIC not in final .config
Requested value: CONFIG_SPARSEMEM_STATIC=y
Actual value:
Value requested for CONFIG_BOUNCE not in final .config
Requested value: CONFIG_BOUNCE=y
Actual value:
Value requested for CONFIG_KMAP_LOCAL not in final .config
Requested value: CONFIG_KMAP_LOCAL=y
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_COMPAQ not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_COMPAQ is not set
Actual value:
Value requested for CONFIG_HOTPLUG_PCI_IBM not in final .config
Requested value: # CONFIG_HOTPLUG_PCI_IBM is not set
Actual value:
Value requested for CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH not in final .config
Requested value: CONFIG_EFI_CAPSULE_QUIRK_QUARK_CSH=y
Actual value:
Value requested for CONFIG_PCH_PHUB not in final .config
Requested value: # CONFIG_PCH_PHUB is not set
Actual value:
Value requested for CONFIG_SCSI_NSP32 not in final .config
Requested value: # CONFIG_SCSI_NSP32 is not set
Actual value:
Value requested for CONFIG_PATA_CS5520 not in final .config
Requested value: # CONFIG_PATA_CS5520 is not set
Actual value:
Value requested for CONFIG_PATA_CS5530 not in final .config
Requested value: # CONFIG_PATA_CS5530 is not set
Actual value:
Value requested for CONFIG_PATA_CS5535 not in final .config
Requested value: # CONFIG_PATA_CS5535 is not set
Actual value:
Value requested for CONFIG_PATA_CS5536 not in final .config
Requested value: # CONFIG_PATA_CS5536 is not set
Actual value:
Value requested for CONFIG_PATA_SC1200 not in final .config
Requested value: # CONFIG_PATA_SC1200 is not set
Actual value:
Value requested for CONFIG_PCH_GBE not in final .config
Requested value: # CONFIG_PCH_GBE is not set
Actual value:
Value requested for CONFIG_INPUT_WISTRON_BTNS not in final .config
Requested value: # CONFIG_INPUT_WISTRON_BTNS is not set
Actual value:
Value requested for CONFIG_SERIAL_TIMBERDALE not in final .config
Requested value: # CONFIG_SERIAL_TIMBERDALE is not set
Actual value:
Value requested for CONFIG_SERIAL_PCH_UART not in final .config
Requested value: # CONFIG_SERIAL_PCH_UART is not set
Actual value:
Value requested for CONFIG_HW_RANDOM_GEODE not in final .config
Requested value: CONFIG_HW_RANDOM_GEODE=y
Actual value:
Value requested for CONFIG_SONYPI not in final .config
Requested value: # CONFIG_SONYPI is not set
Actual value:
Value requested for CONFIG_PC8736x_GPIO not in final .config
Requested value: # CONFIG_PC8736x_GPIO is not set
Actual value:
Value requested for CONFIG_NSC_GPIO not in final .config
Requested value: # CONFIG_NSC_GPIO is not set
Actual value:
Value requested for CONFIG_I2C_EG20T not in final .config
Requested value: # CONFIG_I2C_EG20T is not set
Actual value:
Value requested for CONFIG_SCx200_ACB not in final .config
Requested value: # CONFIG_SCx200_ACB is not set
Actual value:
Value requested for CONFIG_PTP_1588_CLOCK_PCH not in final .config
Requested value: # CONFIG_PTP_1588_CLOCK_PCH is not set
Actual value:
Value requested for CONFIG_SBC8360_WDT not in final .config
Requested value: # CONFIG_SBC8360_WDT is not set
Actual value:
Value requested for CONFIG_SBC7240_WDT not in final .config
Requested value: # CONFIG_SBC7240_WDT is not set
Actual value:
Value requested for CONFIG_MFD_CS5535 not in final .config
Requested value: # CONFIG_MFD_CS5535 is not set
Actual value:
Value requested for CONFIG_AGP_ALI not in final .config
Requested value: # CONFIG_AGP_ALI is not set
Actual value:
Value requested for CONFIG_AGP_ATI not in final .config
Requested value: # CONFIG_AGP_ATI is not set
Actual value:
Value requested for CONFIG_AGP_AMD not in final .config
Requested value: # CONFIG_AGP_AMD is not set
Actual value:
Value requested for CONFIG_AGP_NVIDIA not in final .config
Requested value: # CONFIG_AGP_NVIDIA is not set
Actual value:
Value requested for CONFIG_AGP_SWORKS not in final .config
Requested value: # CONFIG_AGP_SWORKS is not set
Actual value:
Value requested for CONFIG_AGP_EFFICEON not in final .config
Requested value: # CONFIG_AGP_EFFICEON is not set
Actual value:
Value requested for CONFIG_SND_CS5530 not in final .config
Requested value: # CONFIG_SND_CS5530 is not set
Actual value:
Value requested for CONFIG_SND_CS5535AUDIO not in final .config
Requested value: # CONFIG_SND_CS5535AUDIO is not set
Actual value:
Value requested for CONFIG_SND_SIS7019 not in final .config
Requested value: # CONFIG_SND_SIS7019 is not set
Actual value:
Value requested for CONFIG_LEDS_OT200 not in final .config
Requested value: # CONFIG_LEDS_OT200 is not set
Actual value:
Value requested for CONFIG_PCH_DMA not in final .config
Requested value: # CONFIG_PCH_DMA is not set
Actual value:
Value requested for CONFIG_CLKSRC_I8253 not in final .config
Requested value: CONFIG_CLKSRC_I8253=y
Actual value:
Value requested for CONFIG_MAILBOX not in final .config
Requested value: # CONFIG_MAILBOX is not set
Actual value: CONFIG_MAILBOX=y
Value requested for CONFIG_CRYPTO_SERPENT_SSE2_586 not in final .config
Requested value: # CONFIG_CRYPTO_SERPENT_SSE2_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_TWOFISH_586 not in final .config
Requested value: # CONFIG_CRYPTO_TWOFISH_586 is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_GEODE not in final .config
Requested value: # CONFIG_CRYPTO_DEV_GEODE is not set
Actual value:
Value requested for CONFIG_CRYPTO_DEV_HIFN_795X not in final .config
Requested value: # CONFIG_CRYPTO_DEV_HIFN_795X is not set
Actual value:
Value requested for CONFIG_CRYPTO_LIB_POLY1305_RSIZE not in final .config
Requested value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=1
Actual value: CONFIG_CRYPTO_LIB_POLY1305_RSIZE=11
Value requested for CONFIG_AUDIT_GENERIC not in final .config
Requested value: CONFIG_AUDIT_GENERIC=y
Actual value:
Value requested for CONFIG_GENERIC_VDSO_32 not in final .config
Requested value: CONFIG_GENERIC_VDSO_32=y
Actual value:
Value requested for CONFIG_DEBUG_KMAP_LOCAL not in final .config
Requested value: # CONFIG_DEBUG_KMAP_LOCAL is not set
Actual value:
Value requested for CONFIG_DEBUG_HIGHMEM not in final .config
Requested value: # CONFIG_DEBUG_HIGHMEM is not set
Actual value:
Value requested for CONFIG_HAVE_DEBUG_STACKOVERFLOW not in final .config
Requested value: CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
Actual value:
Value requested for CONFIG_DEBUG_STACKOVERFLOW not in final .config
Requested value: # CONFIG_DEBUG_STACKOVERFLOW is not set
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_TRACER not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
Actual value:
Value requested for CONFIG_HAVE_FUNCTION_GRAPH_RETVAL not in final .config
Requested value: CONFIG_HAVE_FUNCTION_GRAPH_RETVAL=y
Actual value:
Value requested for CONFIG_DRM_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_KUNIT_TEST=m
Actual value:
Value requested for CONFIG_DRM_XE_WERROR not in final .config
Requested value: CONFIG_DRM_XE_WERROR=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG not in final .config
Requested value: CONFIG_DRM_XE_DEBUG=y
Actual value:
Value requested for CONFIG_DRM_XE_DEBUG_MEM not in final .config
Requested value: CONFIG_DRM_XE_DEBUG_MEM=y
Actual value:
Value requested for CONFIG_DRM_XE_KUNIT_TEST not in final .config
Requested value: CONFIG_DRM_XE_KUNIT_TEST=m
Actual value:
++ nproc
+ make -j48 ARCH=i386 olddefconfig
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
#
# configuration written to .config
#
++ nproc
+ make -j48 ARCH=i386
SYNC include/config/auto.conf.cmd
GEN Makefile
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
WARNING: unmet direct dependencies detected for FB_IOMEM_HELPERS
Depends on [n]: HAS_IOMEM [=y] && FB_CORE [=n]
Selected by [m]:
- DRM_XE_DISPLAY [=y] && HAS_IOMEM [=y] && DRM [=y] && DRM_XE [=m] && DRM_XE [=m]=m [=m] && HAS_IOPORT [=y]
GEN Makefile
WRAP arch/x86/include/generated/uapi/asm/errno.h
WRAP arch/x86/include/generated/uapi/asm/bpf_perf_event.h
UPD include/generated/uapi/linux/version.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_32.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_64.h
WRAP arch/x86/include/generated/uapi/asm/ioctl.h
WRAP arch/x86/include/generated/uapi/asm/fcntl.h
WRAP arch/x86/include/generated/uapi/asm/ioctls.h
SYSHDR arch/x86/include/generated/uapi/asm/unistd_x32.h
WRAP arch/x86/include/generated/uapi/asm/ipcbuf.h
SYSTBL arch/x86/include/generated/asm/syscalls_32.h
WRAP arch/x86/include/generated/uapi/asm/param.h
WRAP arch/x86/include/generated/uapi/asm/poll.h
WRAP arch/x86/include/generated/uapi/asm/resource.h
WRAP arch/x86/include/generated/uapi/asm/socket.h
WRAP arch/x86/include/generated/uapi/asm/sockios.h
WRAP arch/x86/include/generated/uapi/asm/termbits.h
WRAP arch/x86/include/generated/uapi/asm/termios.h
WRAP arch/x86/include/generated/uapi/asm/types.h
UPD include/generated/compile.h
HOSTCC arch/x86/tools/relocs_32.o
HOSTCC arch/x86/tools/relocs_64.o
HOSTCC arch/x86/tools/relocs_common.o
WRAP arch/x86/include/generated/asm/early_ioremap.h
WRAP arch/x86/include/generated/asm/mcs_spinlock.h
WRAP arch/x86/include/generated/asm/mmzone.h
WRAP arch/x86/include/generated/asm/irq_regs.h
WRAP arch/x86/include/generated/asm/kmap_size.h
WRAP arch/x86/include/generated/asm/local64.h
WRAP arch/x86/include/generated/asm/mmiowb.h
WRAP arch/x86/include/generated/asm/module.lds.h
WRAP arch/x86/include/generated/asm/rwonce.h
HOSTCC scripts/kallsyms
HOSTCC scripts/sorttable
HOSTCC scripts/asn1_compiler
HOSTCC scripts/selinux/mdp/mdp
HOSTLD arch/x86/tools/relocs
UPD include/config/kernel.release
UPD include/generated/utsrelease.h
CC scripts/mod/empty.o
HOSTCC scripts/mod/mk_elfconfig
CC scripts/mod/devicetable-offsets.s
UPD scripts/mod/devicetable-offsets.h
MKELF scripts/mod/elfconfig.h
HOSTCC scripts/mod/modpost.o
HOSTCC scripts/mod/file2alias.o
HOSTCC scripts/mod/sumversion.o
HOSTCC scripts/mod/symsearch.o
HOSTLD scripts/mod/modpost
CC kernel/bounds.s
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-arch-fallback.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-instrumented.h
CHKSHA1 /workspace/kernel/include/linux/atomic/atomic-long.h
UPD include/generated/timeconst.h
UPD include/generated/bounds.h
CC arch/x86/kernel/asm-offsets.s
UPD include/generated/asm-offsets.h
CALL /workspace/kernel/scripts/checksyscalls.sh
LDS scripts/module.lds
CC init/main.o
HOSTCC usr/gen_init_cpio
CC init/do_mounts.o
CC init/do_mounts_initrd.o
CC certs/system_keyring.o
UPD init/utsversion-tmp.h
CC init/initramfs.o
CC ipc/util.o
CC init/calibrate.o
CC ipc/msgutil.o
CC mm/filemap.o
CC init/init_task.o
CC arch/x86/realmode/init.o
CC ipc/msg.o
CC block/bdev.o
CC security/commoncap.o
AS arch/x86/lib/atomic64_cx8_32.o
AS arch/x86/entry/entry.o
CC mm/mempool.o
CC ipc/sem.o
AR arch/x86/crypto/built-in.a
CC security/lsm_syscalls.o
CC block/fops.o
CC io_uring/io_uring.o
CC arch/x86/power/cpu.o
AS arch/x86/entry/entry_32.o
AR arch/x86/net/built-in.a
CC block/partitions/core.o
CC arch/x86/video/video-common.o
AR arch/x86/entry/vsyscall/built-in.a
CC security/keys/gc.o
CC security/integrity/iint.o
CC arch/x86/pci/i386.o
HOSTCC security/selinux/genheaders
AS arch/x86/realmode/rm/header.o
AR drivers/cache/built-in.a
AR arch/x86/platform/atom/built-in.a
CC arch/x86/mm/pat/set_memory.o
CC arch/x86/virt/svm/cmdline.o
CC arch/x86/pci/init.o
AR virt/lib/built-in.a
CC arch/x86/kernel/fpu/init.o
CC arch/x86/events/amd/core.o
CC lib/math/div64.o
CC net/core/sock.o
CC security/min_addr.o
CC fs/notify/dnotify/dnotify.o
CC sound/core/seq/seq.o
AR arch/x86/platform/ce4100/built-in.a
AR virt/built-in.a
AR drivers/irqchip/built-in.a
AS arch/x86/lib/checksum_32.o
CC arch/x86/entry/vdso/vma.o
AR sound/i2c/other/built-in.a
AS arch/x86/realmode/rm/trampoline_32.o
AR sound/i2c/built-in.a
CC arch/x86/platform/efi/memmap.o
AR drivers/pwm/built-in.a
AR drivers/bus/mhi/built-in.a
CC kernel/sched/core.o
AR drivers/bus/built-in.a
CC arch/x86/platform/efi/quirks.o
CC arch/x86/kernel/cpu/mce/core.o
CC arch/x86/lib/cmdline.o
AS arch/x86/realmode/rm/stack.o
AR drivers/leds/trigger/built-in.a
CC drivers/pci/msi/pcidev_msi.o
CC crypto/api.o
CC crypto/asymmetric_keys/asymmetric_type.o
AR drivers/leds/blink/built-in.a
AS arch/x86/realmode/rm/reboot.o
AR drivers/leds/simple/built-in.a
CC drivers/leds/led-core.o
AS arch/x86/realmode/rm/wakeup_asm.o
AR arch/x86/virt/svm/built-in.a
CC arch/x86/realmode/rm/wakemain.o
AR arch/x86/virt/vmx/built-in.a
AR arch/x86/virt/built-in.a
CC arch/x86/entry/vdso/extable.o
CC lib/math/gcd.o
AS arch/x86/lib/cmpxchg8b_emu.o
GEN security/selinux/flask.h security/selinux/av_permissions.h
CC security/selinux/avc.o
CC arch/x86/lib/cpu.o
CC arch/x86/realmode/rm/video-mode.o
CC lib/math/lcm.o
CC lib/math/int_log.o
CC sound/core/seq/seq_lock.o
AS arch/x86/realmode/rm/copy.o
GEN usr/initramfs_data.cpio
AS arch/x86/realmode/rm/bioscall.o
COPY usr/initramfs_inc_data
AS usr/initramfs_data.o
CC arch/x86/realmode/rm/regs.o
AR usr/built-in.a
CC lib/math/int_pow.o
CC security/security.o
HOSTCC certs/extract-cert
CC arch/x86/kernel/fpu/bugs.o
CC arch/x86/realmode/rm/video-vga.o
CC lib/math/int_sqrt.o
CC arch/x86/kernel/fpu/core.o
CC arch/x86/realmode/rm/video-vesa.o
CC lib/math/reciprocal_div.o
CC arch/x86/kernel/fpu/regset.o
CC arch/x86/realmode/rm/video-bios.o
CC crypto/asymmetric_keys/restrict.o
CC lib/math/rational.o
CC arch/x86/lib/delay.o
AR arch/x86/video/built-in.a
CC ipc/shm.o
CC ipc/syscall.o
CERT certs/x509_certificate_list
PASYMS arch/x86/realmode/rm/pasyms.h
CERT certs/signing_key.x509
AS certs/system_certificates.o
CC ipc/ipc_sysctl.o
CC sound/core/seq/seq_clientmgr.o
CC drivers/leds/led-class.o
AR certs/built-in.a
CC security/integrity/integrity_audit.o
CC drivers/pci/msi/api.o
CC sound/core/seq/seq_memory.o
LDS arch/x86/realmode/rm/realmode.lds
CC sound/core/seq/seq_queue.o
LD arch/x86/realmode/rm/realmode.elf
RELOCS arch/x86/realmode/rm/realmode.relocs
OBJCOPY arch/x86/realmode/rm/realmode.bin
AS arch/x86/realmode/rmpiggy.o
CC block/partitions/msdos.o
CC mm/oom_kill.o
CC block/bio.o
CC arch/x86/pci/pcbios.o
AR arch/x86/realmode/built-in.a
CC lib/crypto/mpi/generic_mpih-lshift.o
CC crypto/asymmetric_keys/signature.o
AR fs/notify/dnotify/built-in.a
CC arch/x86/kernel/acpi/boot.o
CC fs/notify/inotify/inotify_fsnotify.o
CC security/keys/key.o
CC security/keys/keyring.o
CC lib/zlib_inflate/inffast.o
CC arch/x86/power/hibernate_32.o
AR fs/notify/fanotify/built-in.a
AS arch/x86/lib/getuser.o
CC fs/notify/fsnotify.o
LDS arch/x86/entry/vdso/vdso32/vdso32.lds
GEN arch/x86/lib/inat-tables.c
AS arch/x86/entry/vdso/vdso32/note.o
CC arch/x86/lib/insn-eval.o
CC lib/zlib_deflate/deflate.o
AS arch/x86/entry/vdso/vdso32/system_call.o
AR lib/math/built-in.a
CC arch/x86/mm/init.o
AS arch/x86/entry/vdso/vdso32/sigreturn.o
CC arch/x86/entry/vdso/vdso32/vclock_gettime.o
CC lib/zlib_inflate/inflate.o
CC lib/zlib_deflate/deftree.o
CC arch/x86/platform/efi/efi.o
CC drivers/video/console/dummycon.o
CC sound/core/sound.o
CC arch/x86/kernel/apic/apic.o
CC arch/x86/kernel/kprobes/core.o
CC arch/x86/entry/vdso/vdso32/vgetcpu.o
CC arch/x86/kernel/fpu/signal.o
CC crypto/cipher.o
CC arch/x86/events/amd/lbr.o
CC crypto/compress.o
CC net/ethernet/eth.o
CC drivers/leds/led-triggers.o
CC crypto/asymmetric_keys/public_key.o
CC fs/notify/inotify/inotify_user.o
CC lib/crypto/mpi/generic_mpih-mul1.o
CC arch/x86/mm/pat/memtype.o
CC arch/x86/entry/syscall_32.o
CC lib/zlib_inflate/infutil.o
AR security/integrity/built-in.a
CC drivers/pci/msi/msi.o
CC arch/x86/pci/mmconfig_32.o
CC arch/x86/pci/direct.o
CC lib/zlib_inflate/inftrees.o
CC init/version.o
CC arch/x86/events/amd/ibs.o
AS arch/x86/power/hibernate_asm_32.o
CC arch/x86/power/hibernate.o
CC block/partitions/efi.o
CC mm/fadvise.o
HOSTCC arch/x86/entry/vdso/vdso2c
CC fs/notify/notification.o
CC drivers/video/console/vgacon.o
CC arch/x86/entry/vdso/vdso32-setup.o
AR sound/drivers/opl3/built-in.a
AR sound/drivers/opl4/built-in.a
AR init/built-in.a
CC block/elevator.o
AR sound/drivers/mpu401/built-in.a
AR sound/drivers/vx/built-in.a
CC security/selinux/hooks.o
AR sound/drivers/pcsp/built-in.a
AR sound/drivers/built-in.a
CC lib/zlib_deflate/deflate_syms.o
CC io_uring/opdef.o
CC arch/x86/kernel/cpu/mtrr/mtrr.o
CC arch/x86/kernel/apic/apic_common.o
CC lib/zlib_inflate/inflate_syms.o
CC net/core/request_sock.o
CC arch/x86/lib/insn.o
CC arch/x86/kernel/cpu/mtrr/if.o
CC arch/x86/kernel/cpu/mce/severity.o
CC net/core/skbuff.o
CC ipc/mqueue.o
CC arch/x86/kernel/apic/apic_noop.o
CC lib/crypto/mpi/generic_mpih-mul2.o
CC arch/x86/kernel/acpi/sleep.o
CC arch/x86/platform/efi/efi_32.o
CC fs/notify/group.o
CC sound/core/seq/seq_fifo.o
ASN.1 crypto/asymmetric_keys/x509.asn1.[ch]
ASN.1 crypto/asymmetric_keys/x509_akid.asn1.[ch]
CC crypto/asymmetric_keys/x509_loader.o
CC arch/x86/entry/common.o
AR drivers/leds/built-in.a
AS arch/x86/entry/thunk.o
CC arch/x86/kernel/cpu/mce/genpool.o
CC security/keys/keyctl.o
CC arch/x86/kernel/fpu/xstate.o
AR lib/zlib_deflate/built-in.a
VDSO arch/x86/entry/vdso/vdso32.so.dbg
CC drivers/pci/msi/irqdomain.o
CC arch/x86/kernel/kprobes/opt.o
CC lib/crypto/memneq.o
CC arch/x86/lib/kaslr.o
OBJCOPY arch/x86/entry/vdso/vdso32.so
VDSO2C arch/x86/entry/vdso/vdso-image-32.c
CC arch/x86/entry/vdso/vdso-image-32.o
AR lib/zlib_inflate/built-in.a
LDS arch/x86/kernel/vmlinux.lds
CC fs/notify/mark.o
CC security/lsm_audit.o
CC arch/x86/pci/mmconfig-shared.o
CC crypto/asymmetric_keys/x509_public_key.o
CC arch/x86/kernel/cpu/microcode/core.o
CC arch/x86/mm/pat/memtype_interval.o
CC fs/nfs_common/nfsacl.o
AR arch/x86/power/built-in.a
AR fs/notify/inotify/built-in.a
CC security/selinux/selinuxfs.o
CC drivers/pci/pcie/portdrv.o
CC arch/x86/lib/memcpy_32.o
CC crypto/algapi.o
CC arch/x86/events/amd/uncore.o
AS arch/x86/lib/memmove_32.o
CC arch/x86/lib/misc.o
ASN.1 crypto/asymmetric_keys/pkcs7.asn1.[ch]
AR arch/x86/entry/vdso/built-in.a
CC arch/x86/kernel/cpu/microcode/intel.o
CC drivers/video/backlight/backlight.o
CC fs/nfs_common/grace.o
AR drivers/pci/pwrctrl/built-in.a
CC arch/x86/kernel/cpu/cacheinfo.o
CC arch/x86/kernel/apic/ipi.o
CC crypto/scatterwalk.o
CC arch/x86/lib/pc-conf-reg.o
AR block/partitions/built-in.a
AR net/802/built-in.a
CC ipc/namespace.o
CC arch/x86/kernel/cpu/mce/intel.o
CC lib/crypto/mpi/generic_mpih-mul3.o
CC arch/x86/kernel/cpu/mtrr/generic.o
CC fs/notify/fdinfo.o
CC sound/core/seq/seq_prioq.o
AS arch/x86/lib/putuser.o
AR net/ethernet/built-in.a
CC net/sched/sch_generic.o
AS arch/x86/lib/retpoline.o
CC lib/lzo/lzo1x_compress.o
AS arch/x86/platform/efi/efi_stub_32.o
AS arch/x86/kernel/acpi/wakeup_32.o
AR drivers/video/console/built-in.a
CC arch/x86/kernel/acpi/cstate.o
CC ipc/mq_sysctl.o
CC arch/x86/lib/string_32.o
CC arch/x86/platform/efi/runtime-map.o
CC arch/x86/lib/strstr_32.o
CC lib/lzo/lzo1x_decompress_safe.o
CC lib/lz4/lz4_decompress.o
CC crypto/asymmetric_keys/pkcs7_trust.o
CC arch/x86/lib/usercopy.o
AR drivers/idle/built-in.a
CC drivers/pci/hotplug/pci_hotplug_core.o
AR drivers/pci/controller/dwc/built-in.a
CC block/blk-core.o
AR drivers/pci/controller/mobiveil/built-in.a
AR drivers/pci/controller/plda/built-in.a
AR drivers/pci/controller/built-in.a
AR drivers/pci/msi/built-in.a
AR arch/x86/entry/built-in.a
CC arch/x86/lib/usercopy_32.o
CC mm/maccess.o
CC drivers/pci/hotplug/acpi_pcihp.o
CC block/blk-sysfs.o
AR arch/x86/mm/pat/built-in.a
CC arch/x86/mm/init_32.o
CC block/blk-flush.o
CC block/blk-settings.o
AR arch/x86/platform/geode/built-in.a
CC arch/x86/kernel/apic/vector.o
CC drivers/pci/pcie/rcec.o
AR arch/x86/platform/iris/built-in.a
CC net/netlink/af_netlink.o
AR arch/x86/kernel/kprobes/built-in.a
AR net/bpf/built-in.a
CC arch/x86/lib/msr-smp.o
CC io_uring/kbuf.o
CC block/blk-ioc.o
AR drivers/char/ipmi/built-in.a
CC arch/x86/kernel/cpu/microcode/amd.o
CC io_uring/rsrc.o
CC lib/crypto/mpi/generic_mpih-rshift.o
CC crypto/proc.o
CC drivers/video/aperture.o
AR drivers/video/fbdev/core/built-in.a
CC crypto/asymmetric_keys/pkcs7_verify.o
AR drivers/video/fbdev/omap/built-in.a
CC arch/x86/kernel/cpu/mce/amd.o
AR drivers/video/fbdev/omap2/omapfb/dss/built-in.a
CC fs/nfs_common/common.o
CC arch/x86/pci/fixup.o
AR drivers/video/fbdev/omap2/omapfb/displays/built-in.a
AR drivers/video/fbdev/omap2/omapfb/built-in.a
AR drivers/video/fbdev/omap2/built-in.a
CC security/keys/permission.o
CC crypto/aead.o
AR drivers/video/fbdev/built-in.a
CC crypto/geniv.o
CC arch/x86/pci/acpi.o
AS arch/x86/kernel/head_32.o
AR arch/x86/kernel/acpi/built-in.a
AR lib/lzo/built-in.a
CC arch/x86/kernel/apic/init.o
CC fs/iomap/trace.o
AR fs/notify/built-in.a
AR sound/isa/ad1816a/built-in.a
AR sound/isa/ad1848/built-in.a
CC fs/iomap/iter.o
AR drivers/video/backlight/built-in.a
AR sound/isa/cs423x/built-in.a
CC sound/core/seq/seq_timer.o
CC fs/iomap/buffered-io.o
AR sound/isa/es1688/built-in.a
AR sound/isa/galaxy/built-in.a
AR sound/isa/gus/built-in.a
AR sound/isa/msnd/built-in.a
AR sound/isa/opti9xx/built-in.a
CC arch/x86/lib/cache-smp.o
AR sound/isa/sb/built-in.a
AR sound/isa/wavefront/built-in.a
AR arch/x86/kernel/fpu/built-in.a
CC lib/crypto/utils.o
AR sound/isa/wss/built-in.a
AR sound/isa/built-in.a
AR ipc/built-in.a
CC sound/core/init.o
CC arch/x86/kernel/apic/hw_nmi.o
CC drivers/pci/pcie/bwctrl.o
AR arch/x86/platform/efi/built-in.a
CC arch/x86/platform/intel/iosf_mbi.o
AR arch/x86/events/amd/built-in.a
AR arch/x86/platform/intel-mid/built-in.a
CC net/sched/sch_mq.o
CC arch/x86/events/intel/core.o
CC arch/x86/lib/msr.o
CC arch/x86/kernel/cpu/mtrr/cleanup.o
CC net/core/datagram.o
CC crypto/asymmetric_keys/x509.asn1.o
CC crypto/asymmetric_keys/x509_akid.asn1.o
CC mm/page-writeback.o
CC crypto/asymmetric_keys/x509_cert_parser.o
CC kernel/locking/mutex.o
CC lib/crypto/mpi/generic_mpih-sub1.o
CC crypto/asymmetric_keys/pkcs7.asn1.o
CC security/keys/process_keys.o
CC arch/x86/kernel/head32.o
CC arch/x86/mm/fault.o
AR drivers/pci/hotplug/built-in.a
CC crypto/lskcipher.o
CC security/selinux/netlink.o
CC arch/x86/pci/legacy.o
CC sound/core/memory.o
CC crypto/asymmetric_keys/pkcs7_parser.o
AR fs/nfs_common/built-in.a
CC lib/crypto/mpi/generic_mpih-add1.o
CC net/ethtool/ioctl.o
CC kernel/locking/semaphore.o
CC sound/core/seq/seq_system.o
AR sound/pci/ac97/built-in.a
AR sound/pci/ali5451/built-in.a
AR sound/pci/asihpi/built-in.a
CC drivers/video/cmdline.o
AR sound/pci/au88x0/built-in.a
AR sound/pci/aw2/built-in.a
AR sound/pci/ctxfi/built-in.a
AR sound/pci/ca0106/built-in.a
AR sound/pci/cs46xx/built-in.a
AR sound/pci/cs5535audio/built-in.a
AR arch/x86/kernel/cpu/microcode/built-in.a
CC kernel/locking/rwsem.o
CC kernel/locking/percpu-rwsem.o
AR sound/pci/lola/built-in.a
AR sound/pci/lx6464es/built-in.a
CC kernel/locking/spinlock.o
AR lib/lz4/built-in.a
AR sound/pci/echoaudio/built-in.a
CC lib/crypto/mpi/mpicoder.o
CC arch/x86/kernel/cpu/mtrr/amd.o
CC sound/core/control.o
AR sound/pci/emu10k1/built-in.a
CC sound/pci/hda/hda_bind.o
CC net/netfilter/core.o
CC block/blk-map.o
CC drivers/acpi/acpica/dsargs.o
CC arch/x86/pci/irq.o
CC drivers/pci/pcie/aspm.o
AR arch/x86/platform/intel/built-in.a
CC arch/x86/pci/common.o
AR arch/x86/platform/intel-quark/built-in.a
AR arch/x86/platform/olpc/built-in.a
AR arch/x86/platform/scx200/built-in.a
AR arch/x86/platform/ts5500/built-in.a
CC net/netfilter/nf_log.o
AR arch/x86/platform/uv/built-in.a
AR arch/x86/platform/built-in.a
CC kernel/sched/fair.o
CC block/blk-merge.o
CC sound/core/seq/seq_ports.o
CC net/sched/sch_frag.o
CC sound/pci/hda/hda_codec.o
AS arch/x86/lib/msr-reg.o
CC arch/x86/lib/msr-reg-export.o
AR crypto/asymmetric_keys/built-in.a
CC kernel/locking/osq_lock.o
CC arch/x86/pci/early.o
CC io_uring/notif.o
AR drivers/acpi/pmic/built-in.a
CC drivers/acpi/dptf/int340x_thermal.o
CC arch/x86/mm/ioremap.o
CC arch/x86/kernel/cpu/scattered.o
CC drivers/pci/pcie/pme.o
CC net/netlink/genetlink.o
CC drivers/acpi/acpica/dscontrol.o
CC arch/x86/kernel/apic/io_apic.o
CC security/device_cgroup.o
AS arch/x86/lib/hweight.o
CC arch/x86/lib/iomem.o
CC sound/core/misc.o
CC fs/quota/dquot.o
CC arch/x86/kernel/cpu/mtrr/cyrix.o
CC net/ipv4/netfilter/nf_defrag_ipv4.o
CC arch/x86/kernel/cpu/mtrr/centaur.o
CC net/netfilter/nf_queue.o
CC crypto/skcipher.o
CC drivers/video/nomodeset.o
CC arch/x86/kernel/cpu/mce/threshold.o
CC security/keys/request_key.o
CC lib/crypto/mpi/mpi-add.o
CC arch/x86/kernel/cpu/mtrr/legacy.o
AR drivers/pci/switch/built-in.a
CC net/xfrm/xfrm_policy.o
CC drivers/pci/access.o
CC kernel/locking/qspinlock.o
CC arch/x86/events/intel/bts.o
CC net/netfilter/nf_sockopt.o
AR drivers/acpi/dptf/built-in.a
CC drivers/acpi/acpica/dsdebug.o
CC arch/x86/kernel/cpu/topology_common.o
CC arch/x86/events/zhaoxin/core.o
CC arch/x86/lib/atomic64_32.o
CC fs/iomap/direct-io.o
CC arch/x86/lib/inat.o
CC lib/crypto/mpi/mpi-bit.o
CC sound/core/seq/seq_info.o
CC drivers/video/hdmi.o
CC net/core/stream.o
AR arch/x86/lib/built-in.a
AR arch/x86/lib/lib.a
CC crypto/seqiv.o
CC fs/quota/quota_v2.o
CC fs/quota/quota_tree.o
CC io_uring/tctx.o
AR arch/x86/kernel/cpu/mtrr/built-in.a
CC fs/quota/quota.o
CC fs/quota/kqid.o
CC arch/x86/mm/extable.o
CC fs/quota/netlink.o
CC security/selinux/nlmsgtab.o
CC drivers/acpi/acpica/dsfield.o
CC arch/x86/pci/bus_numa.o
CC arch/x86/pci/amd_bus.o
CC kernel/locking/rtmutex_api.o
CC lib/crypto/chacha.o
CC mm/folio-compat.o
CC fs/iomap/fiemap.o
CC arch/x86/events/intel/ds.o
AR drivers/pci/pcie/built-in.a
CC block/blk-timeout.o
CC arch/x86/kernel/ebda.o
CC sound/core/seq/seq_dummy.o
CC net/sched/sch_api.o
CC net/ipv4/netfilter/nf_reject_ipv4.o
CC io_uring/filetable.o
CC drivers/pci/bus.o
CC security/keys/request_key_auth.o
CC lib/zstd/zstd_decompress_module.o
CC lib/crypto/mpi/mpi-cmp.o
CC lib/xz/xz_dec_syms.o
CC drivers/acpi/acpica/dsinit.o
CC net/ipv4/route.o
CC arch/x86/events/core.o
CC drivers/acpi/x86/apple.o
CC block/blk-lib.o
AR arch/x86/kernel/cpu/mce/built-in.a
CC net/ipv4/netfilter/ip_tables.o
CC arch/x86/kernel/cpu/topology_ext.o
CC drivers/acpi/acpica/dsmethod.o
CC lib/dim/dim.o
CC arch/x86/kernel/apic/msi.o
CC crypto/echainiv.o
CC net/netfilter/utils.o
AR arch/x86/events/zhaoxin/built-in.a
AR drivers/video/built-in.a
CC lib/crypto/mpi/mpi-sub-ui.o
AR sound/pci/ice1712/built-in.a
CC net/netfilter/nfnetlink.o
CC io_uring/rw.o
CC lib/zstd/decompress/huf_decompress.o
AR sound/core/seq/built-in.a
CC sound/core/device.o
CC lib/xz/xz_dec_stream.o
CC net/ethtool/common.o
CC net/core/scm.o
CC net/core/gen_stats.o
CC fs/iomap/seek.o
CC lib/xz/xz_dec_lzma2.o
CC fs/iomap/swapfile.o
CC arch/x86/mm/mmap.o
AR arch/x86/pci/built-in.a
CC mm/readahead.o
CC crypto/ahash.o
CC fs/proc/task_mmu.o
CC kernel/power/qos.o
CC net/netlink/policy.o
CC arch/x86/kernel/platform-quirks.o
CC lib/dim/net_dim.o
CC arch/x86/kernel/cpu/topology_amd.o
CC net/ethtool/netlink.o
CC security/selinux/netif.o
CC drivers/acpi/tables.o
CC drivers/acpi/acpica/dsmthdat.o
CC security/keys/user_defined.o
CC drivers/acpi/x86/cmos_rtc.o
CC drivers/pci/probe.o
CC kernel/locking/qrwlock.o
CC lib/dim/rdma_dim.o
CC security/selinux/netnode.o
CC sound/core/info.o
CC sound/pci/hda/hda_jack.o
CC lib/crypto/mpi/mpi-div.o
CC sound/core/isadma.o
CC net/ipv4/inetpeer.o
CC block/blk-mq.o
CC kernel/power/main.o
AR fs/quota/built-in.a
CC lib/zstd/decompress/zstd_ddict.o
CC arch/x86/kernel/apic/probe_32.o
CC net/netfilter/nfnetlink_log.o
CC arch/x86/kernel/cpu/common.o
CC drivers/acpi/acpica/dsobject.o
AR sound/pci/korg1212/built-in.a
CC net/xfrm/xfrm_state.o
CC fs/proc/inode.o
CC security/selinux/netport.o
CC arch/x86/mm/pgtable.o
CC arch/x86/mm/physaddr.o
AR kernel/locking/built-in.a
CC block/blk-mq-tag.o
CC drivers/acpi/x86/lpss.o
CC drivers/acpi/acpica/dsopcode.o
CC lib/xz/xz_dec_bcj.o
AR fs/iomap/built-in.a
CC net/netfilter/nf_conntrack_core.o
CC security/keys/proc.o
CC lib/crypto/mpi/mpi-mod.o
CC mm/swap.o
CC net/ipv4/protocol.o
AR arch/x86/kernel/apic/built-in.a
CC kernel/power/console.o
AR net/netlink/built-in.a
CC lib/fonts/fonts.o
CC sound/pci/hda/hda_auto_parser.o
AR sound/pci/mixart/built-in.a
CC drivers/pnp/pnpacpi/core.o
CC lib/argv_split.o
CC drivers/pnp/core.o
AR lib/dim/built-in.a
CC crypto/shash.o
CC drivers/pnp/card.o
CC drivers/pnp/pnpacpi/rsparser.o
CC drivers/pnp/driver.o
CC drivers/acpi/acpica/dspkginit.o
CC drivers/pnp/resource.o
CC net/core/gen_estimator.o
CC lib/zstd/decompress/zstd_decompress.o
CC sound/core/vmaster.o
CC arch/x86/events/intel/knc.o
AR lib/xz/built-in.a
CC net/sched/sch_blackhole.o
CC net/ipv4/netfilter/iptable_filter.o
CC net/sched/cls_api.o
CC net/xfrm/xfrm_hash.o
CC block/blk-stat.o
CC io_uring/net.o
CC io_uring/poll.o
CC lib/fonts/font_8x16.o
CC kernel/sched/build_policy.o
AR sound/ppc/built-in.a
CC kernel/sched/build_utility.o
CC arch/x86/mm/tlb.o
CC net/unix/af_unix.o
CC net/ethtool/bitset.o
CC drivers/pci/host-bridge.o
CC lib/crypto/mpi/mpi-mul.o
CC drivers/acpi/x86/s2idle.o
CC security/keys/sysctl.o
CC arch/x86/events/probe.o
AR drivers/amba/built-in.a
CC arch/x86/events/intel/lbr.o
CC drivers/acpi/acpica/dsutils.o
CC kernel/power/process.o
CC drivers/acpi/osi.o
CC block/blk-mq-sysfs.o
CC io_uring/eventfd.o
CC net/xfrm/xfrm_input.o
CC kernel/printk/printk.o
AR lib/fonts/built-in.a
CC mm/truncate.o
CC security/selinux/status.o
CC fs/proc/root.o
CC sound/core/ctljack.o
CC arch/x86/kernel/process_32.o
CC net/unix/garbage.o
CC io_uring/uring_cmd.o
CC net/core/net_namespace.o
CC fs/kernfs/mount.o
CC net/sched/act_api.o
CC kernel/power/suspend.o
AR drivers/pnp/pnpacpi/built-in.a
CC mm/vmscan.o
CC crypto/akcipher.o
CC lib/zstd/decompress/zstd_decompress_block.o
AR drivers/clk/actions/built-in.a
CC security/keys/keyctl_pkey.o
CC drivers/acpi/acpica/dswexec.o
CC arch/x86/kernel/cpu/rdrand.o
AR drivers/clk/analogbits/built-in.a
AR drivers/clk/bcm/built-in.a
CC lib/crypto/mpi/mpih-cmp.o
CC drivers/pci/remove.o
AR drivers/clk/imgtec/built-in.a
AR drivers/clk/imx/built-in.a
AR drivers/clk/ingenic/built-in.a
CC kernel/printk/printk_safe.o
AR drivers/clk/mediatek/built-in.a
AR drivers/clk/microchip/built-in.a
CC sound/pci/hda/hda_sysfs.o
AR drivers/clk/mstar/built-in.a
AR drivers/clk/mvebu/built-in.a
CC fs/kernfs/inode.o
AR drivers/clk/ralink/built-in.a
CC lib/zstd/zstd_common_module.o
CC arch/x86/kernel/cpu/match.o
AR drivers/clk/renesas/built-in.a
AR drivers/clk/socfpga/built-in.a
CC sound/core/jack.o
AR drivers/clk/sophgo/built-in.a
CC drivers/pnp/manager.o
AR drivers/clk/sprd/built-in.a
AR drivers/clk/starfive/built-in.a
CC net/ipv4/ip_input.o
AR sound/arm/built-in.a
AR drivers/clk/sunxi-ng/built-in.a
CC arch/x86/mm/cpu_entry_area.o
AR drivers/clk/ti/built-in.a
AR drivers/clk/versatile/built-in.a
CC net/ipv4/netfilter/iptable_mangle.o
AR drivers/clk/xilinx/built-in.a
AR drivers/clk/built-in.a
CC net/ipv4/netfilter/ipt_REJECT.o
CC drivers/acpi/x86/utils.o
CC crypto/sig.o
CC sound/pci/hda/hda_controller.o
CC net/core/secure_seq.o
CC drivers/acpi/acpica/dswload.o
CC arch/x86/events/utils.o
CC kernel/irq/irqdesc.o
CC fs/proc/base.o
CC arch/x86/kernel/cpu/bugs.o
CC lib/crypto/mpi/mpih-div.o
AR security/keys/built-in.a
CC arch/x86/kernel/cpu/aperfmperf.o
CC net/ethtool/strset.o
CC arch/x86/kernel/cpu/cpuid-deps.o
CC fs/proc/generic.o
CC net/core/flow_dissector.o
CC arch/x86/mm/maccess.o
CC drivers/pci/pci.o
CC lib/zstd/common/debug.o
AR sound/sh/built-in.a
CC fs/sysfs/file.o
CC drivers/pnp/support.o
CC crypto/kpp.o
CC net/ipv6/netfilter/ip6_tables.o
ASN.1 crypto/rsapubkey.asn1.[ch]
CC fs/kernfs/dir.o
CC lib/bug.o
CC drivers/acpi/acpica/dswload2.o
CC sound/core/hwdep.o
CC net/netfilter/nf_conntrack_standalone.o
CC arch/x86/events/intel/p4.o
CC security/selinux/ss/ebitmap.o
CC io_uring/openclose.o
CC net/xfrm/xfrm_output.o
CC arch/x86/kernel/signal.o
CC arch/x86/mm/pgprot.o
CC arch/x86/kernel/cpu/umwait.o
CC drivers/acpi/x86/blacklist.o
CC block/blk-mq-cpumap.o
CC kernel/power/hibernate.o
CC security/selinux/ss/hashtab.o
CC kernel/printk/nbcon.o
CC lib/zstd/common/entropy_common.o
CC drivers/acpi/acpica/dswscope.o
CC arch/x86/events/intel/p6.o
CC kernel/irq/handle.o
AR sound/synth/emux/built-in.a
CC [M] net/ipv4/netfilter/iptable_nat.o
AR sound/synth/built-in.a
CC fs/proc/array.o
CC fs/kernfs/file.o
CC lib/zstd/common/error_private.o
CC drivers/pnp/interface.o
ASN.1 crypto/rsaprivkey.asn1.[ch]
CC net/sched/sch_fifo.o
CC net/ethtool/linkinfo.o
CC lib/crypto/mpi/mpih-mul.o
MKCAP arch/x86/kernel/cpu/capflags.c
AR drivers/acpi/x86/built-in.a
CC lib/zstd/common/fse_decompress.o
CC kernel/power/snapshot.o
CC arch/x86/kernel/signal_32.o
CC arch/x86/mm/pgtable_32.o
CC arch/x86/kernel/traps.o
CC sound/core/timer.o
CC fs/sysfs/dir.o
CC drivers/acpi/acpica/dswstate.o
CC lib/crypto/aes.o
CC drivers/pci/pci-driver.o
CC crypto/rsa.o
CC drivers/pnp/quirks.o
CC net/unix/sysctl_net_unix.o
CC sound/pci/hda/hda_proc.o
CC lib/crypto/mpi/mpi-pow.o
CC net/core/sysctl_net_core.o
CC block/blk-mq-sched.o
CC kernel/rcu/update.o
CC crypto/rsa_helper.o
CC kernel/rcu/sync.o
CC io_uring/sqpoll.o
CC kernel/irq/manage.o
CC sound/pci/hda/hda_hwdep.o
CC net/netfilter/nf_conntrack_expect.o
CC arch/x86/events/intel/pt.o
CC drivers/acpi/acpica/evevent.o
CC kernel/printk/printk_ringbuffer.o
CC arch/x86/mm/iomap_32.o
CC lib/crypto/mpi/mpiutil.o
CC drivers/dma/dw/core.o
CC drivers/pnp/system.o
CC arch/x86/kernel/cpu/powerflags.o
CC security/selinux/ss/symtab.o
CC drivers/dma/dw/dw.o
CC fs/sysfs/symlink.o
CC net/ipv6/af_inet6.o
CC lib/zstd/common/zstd_common.o
CC block/ioctl.o
AR sound/usb/misc/built-in.a
AR sound/usb/usx2y/built-in.a
AR sound/usb/caiaq/built-in.a
AR sound/usb/6fire/built-in.a
AR sound/usb/hiface/built-in.a
AR sound/usb/bcd2000/built-in.a
AR sound/usb/built-in.a
AR lib/zstd/built-in.a
CC drivers/pci/search.o
CC net/packet/af_packet.o
AR net/dsa/built-in.a
CC arch/x86/events/intel/uncore.o
CC crypto/rsa-pkcs1pad.o
CC arch/x86/kernel/idt.o
CC fs/kernfs/symlink.o
CC security/selinux/ss/sidtab.o
CC net/ethtool/linkmodes.o
CC drivers/dma/dw/idma32.o
AR net/ipv4/netfilter/built-in.a
CC net/ipv4/ip_fragment.o
CC net/xfrm/xfrm_sysctl.o
CC fs/proc/fd.o
CC drivers/dma/hsu/hsu.o
AR drivers/dma/idxd/built-in.a
CC drivers/acpi/acpica/evgpe.o
CC net/sched/cls_cgroup.o
AR drivers/soc/apple/built-in.a
AR drivers/soc/aspeed/built-in.a
AR drivers/soc/bcm/built-in.a
AR drivers/soc/fsl/built-in.a
AR drivers/soc/fujitsu/built-in.a
CC net/ipv6/anycast.o
AR drivers/soc/hisilicon/built-in.a
AR drivers/soc/imx/built-in.a
AR drivers/soc/ixp4xx/built-in.a
AR drivers/soc/loongson/built-in.a
CC drivers/dma/dw/acpi.o
AR drivers/soc/mediatek/built-in.a
AR drivers/pnp/built-in.a
CC net/ipv6/netfilter/ip6table_filter.o
CC drivers/acpi/acpica/evgpeblk.o
AR drivers/soc/microchip/built-in.a
AR drivers/soc/nuvoton/built-in.a
AR drivers/soc/pxa/built-in.a
AR drivers/soc/amlogic/built-in.a
AR drivers/soc/qcom/built-in.a
CC arch/x86/mm/hugetlbpage.o
AR drivers/soc/renesas/built-in.a
CC net/xfrm/xfrm_replay.o
AR drivers/soc/rockchip/built-in.a
CC fs/proc/proc_tty.o
AR drivers/soc/sunxi/built-in.a
AR net/unix/built-in.a
AR drivers/soc/ti/built-in.a
CC arch/x86/kernel/irq.o
AR drivers/soc/versatile/built-in.a
AR drivers/soc/xilinx/built-in.a
AR drivers/soc/built-in.a
AR lib/crypto/mpi/built-in.a
CC lib/crypto/arc4.o
CC arch/x86/mm/dump_pagetables.o
CC net/ipv6/netfilter/ip6table_mangle.o
CC kernel/printk/sysctl.o
CC arch/x86/mm/highmem_32.o
CC fs/sysfs/mount.o
CC kernel/rcu/srcutree.o
CC sound/pci/hda/hda_intel.o
CC fs/devpts/inode.o
CC mm/shrinker.o
CC fs/netfs/buffered_read.o
CC fs/ext4/balloc.o
CC crypto/rsassa-pkcs1.o
CC drivers/acpi/acpica/evgpeinit.o
CC sound/core/hrtimer.o
AR fs/kernfs/built-in.a
CC lib/crypto/gf128mul.o
CC fs/jbd2/transaction.o
CC arch/x86/events/rapl.o
CC mm/shmem.o
CC net/core/dev.o
CC io_uring/xattr.o
CC block/genhd.o
AR kernel/printk/built-in.a
CC lib/buildid.o
CC security/selinux/ss/avtab.o
CC kernel/power/swap.o
AR drivers/dma/dw/built-in.a
AR sound/firewire/built-in.a
AR drivers/dma/hsu/built-in.a
CC fs/ramfs/inode.o
AR drivers/dma/amd/built-in.a
AR drivers/dma/mediatek/built-in.a
CC drivers/virtio/virtio.o
AR drivers/dma/qcom/built-in.a
CC drivers/virtio/virtio_ring.o
AR drivers/dma/stm32/built-in.a
CC fs/proc/cmdline.o
CC drivers/virtio/virtio_anchor.o
CC kernel/irq/spurious.o
AR drivers/dma/ti/built-in.a
AR drivers/dma/xilinx/built-in.a
CC drivers/dma/dmaengine.o
CC net/netfilter/nf_conntrack_helper.o
CC net/ethtool/rss.o
CC drivers/acpi/acpica/evgpeutil.o
AR kernel/livepatch/built-in.a
CC drivers/dma/virt-dma.o
CC kernel/irq/resend.o
CC fs/sysfs/group.o
AR arch/x86/mm/built-in.a
CC drivers/pci/rom.o
CC sound/core/pcm.o
CC drivers/tty/vt/vt_ioctl.o
CC net/sched/ematch.o
CC drivers/tty/hvc/hvc_console.o
CC net/ipv4/ip_forward.o
AR fs/devpts/built-in.a
CC net/ipv4/ip_options.o
CC drivers/virtio/virtio_pci_modern_dev.o
CC lib/crypto/blake2s.o
CC crypto/acompress.o
CC drivers/virtio/virtio_pci_legacy_dev.o
CC drivers/virtio/virtio_pci_modern.o
CC arch/x86/kernel/irq_32.o
CC sound/core/pcm_native.o
CC drivers/acpi/acpica/evglock.o
CC fs/proc/consoles.o
CC net/xfrm/xfrm_device.o
CC drivers/pci/setup-res.o
CC fs/ramfs/file-mmu.o
CC arch/x86/events/intel/uncore_nhmex.o
CC kernel/irq/chip.o
CC fs/hugetlbfs/inode.o
AR kernel/sched/built-in.a
CC fs/ext4/bitmap.o
CC net/ipv6/netfilter/nf_defrag_ipv6_hooks.o
CC security/selinux/ss/policydb.o
CC io_uring/nop.o
CC io_uring/fs.o
CC lib/crypto/blake2s-generic.o
CC drivers/char/hw_random/core.o
CC net/ipv6/ip6_output.o
AR fs/sysfs/built-in.a
CC fs/netfs/buffered_write.o
CC drivers/virtio/virtio_pci_common.o
CC mm/util.o
CC security/selinux/ss/services.o
CC drivers/acpi/acpica/evhandler.o
CC block/ioprio.o
CC block/badblocks.o
AR sound/pci/hda/built-in.a
AR sound/pci/nm256/built-in.a
CC block/blk-rq-qos.o
CC kernel/rcu/tree.o
AR sound/pci/oxygen/built-in.a
AR sound/pci/pcxhr/built-in.a
CC fs/proc/cpuinfo.o
CC block/disk-events.o
AR sound/pci/riptide/built-in.a
CC drivers/tty/serial/8250/8250_core.o
CC block/blk-ia-ranges.o
AR sound/pci/rme9652/built-in.a
CC net/ethtool/linkstate.o
AR sound/pci/trident/built-in.a
AR drivers/tty/hvc/built-in.a
AR sound/pci/vx222/built-in.a
AR sound/pci/ymfpci/built-in.a
CC fs/netfs/direct_read.o
CC drivers/virtio/virtio_pci_legacy.o
AR sound/pci/built-in.a
CC kernel/power/user.o
CC lib/crypto/sha1.o
CC drivers/tty/vt/vc_screen.o
CC io_uring/splice.o
CC crypto/scompress.o
CC drivers/dma/acpi-dma.o
CC fs/jbd2/commit.o
CC drivers/acpi/acpica/evmisc.o
AR fs/ramfs/built-in.a
AR net/sched/built-in.a
CC net/ipv4/ip_output.o
CC drivers/pci/irq.o
CC net/netfilter/nf_conntrack_proto.o
AR drivers/iommu/amd/built-in.a
CC security/selinux/ss/conditional.o
AR drivers/iommu/intel/built-in.a
AR drivers/gpu/host1x/built-in.a
AR drivers/iommu/arm/arm-smmu/built-in.a
AR drivers/iommu/arm/arm-smmu-v3/built-in.a
AR drivers/iommu/arm/built-in.a
AR drivers/iommu/iommufd/built-in.a
AR drivers/iommu/riscv/built-in.a
CC drivers/iommu/iommu.o
AR drivers/gpu/vga/built-in.a
CC kernel/dma/mapping.o
AR drivers/gpu/drm/tests/built-in.a
CC drivers/char/hw_random/intel-rng.o
AR drivers/gpu/drm/arm/built-in.a
CC fs/ext4/block_validity.o
AR drivers/gpu/drm/clients/built-in.a
CC drivers/gpu/drm/display/drm_display_helper_mod.o
CC sound/core/pcm_lib.o
CC kernel/irq/dummychip.o
CC lib/crypto/sha256.o
CC net/xfrm/xfrm_nat_keepalive.o
CC io_uring/sync.o
CC arch/x86/events/intel/uncore_snb.o
CC fs/proc/devices.o
CC drivers/acpi/acpica/evregion.o
CC arch/x86/kernel/cpu/topology.o
CC arch/x86/kernel/dumpstack_32.o
CC net/sunrpc/auth_gss/auth_gss.o
CC drivers/virtio/virtio_pci_admin_legacy_io.o
CC drivers/tty/serial/8250/8250_platform.o
CC net/sunrpc/clnt.o
CC kernel/entry/common.o
CC kernel/irq/devres.o
CC net/ipv6/netfilter/nf_conntrack_reasm.o
AR net/wireless/tests/built-in.a
CC net/wireless/core.o
CC block/early-lookup.o
CC drivers/gpu/drm/display/drm_dp_dual_mode_helper.o
CC kernel/power/poweroff.o
CC drivers/char/agp/backend.o
AR drivers/dma/built-in.a
CC drivers/pci/vpd.o
CC block/bounce.o
CC block/bsg.o
CC lib/clz_tab.o
CC net/core/dev_addr_lists.o
CC drivers/tty/vt/selection.o
CC drivers/tty/vt/keyboard.o
AR fs/hugetlbfs/built-in.a
CC lib/cmdline.o
CC fs/netfs/direct_write.o
CC mm/mmzone.o
CC net/ethtool/debug.o
CC drivers/acpi/acpica/evrgnini.o
AR lib/crypto/built-in.a
CC crypto/algboss.o
CC fs/proc/interrupts.o
AR net/packet/built-in.a
AR kernel/power/built-in.a
CC net/ethtool/wol.o
CC net/ipv6/ip6_input.o
CC drivers/char/hw_random/amd-rng.o
CC lib/cpumask.o
CC drivers/char/hw_random/geode-rng.o
CC fs/fat/cache.o
CC arch/x86/kernel/cpu/proc.o
CC kernel/irq/autoprobe.o
CC fs/ext4/dir.o
CC net/ipv4/ip_sockglue.o
CC io_uring/msg_ring.o
CC drivers/virtio/virtio_input.o
CC drivers/acpi/acpica/evsci.o
CC drivers/gpu/drm/ttm/ttm_tt.o
CC fs/jbd2/recovery.o
CC drivers/tty/serial/8250/8250_pnp.o
CC net/ipv6/netfilter/nf_reject_ipv6.o
CC arch/x86/events/intel/uncore_snbep.o
CC drivers/char/agp/generic.o
CC fs/proc/loadavg.o
CC mm/vmstat.o
CC net/netfilter/nf_conntrack_proto_generic.o
CC net/xfrm/xfrm_algo.o
CC drivers/tty/serial/8250/8250_rsa.o
CC drivers/virtio/virtio_dma_buf.o
CC drivers/connector/cn_queue.o
CC drivers/pci/setup-bus.o
CC drivers/gpu/drm/display/drm_dp_helper.o
CC kernel/irq/irqdomain.o
CC lib/ctype.o
CC lib/dec_and_lock.o
CC drivers/iommu/iommu-traces.o
CC kernel/entry/syscall_user_dispatch.o
CC drivers/acpi/acpica/evxface.o
CC drivers/char/hw_random/via-rng.o
CC arch/x86/kernel/cpu/feat_ctl.o
CC fs/netfs/iterator.o
CC block/blk-cgroup.o
CC lib/decompress.o
CC lib/decompress_bunzip2.o
CC drivers/char/mem.o
CC drivers/char/random.o
CC crypto/testmgr.o
CC sound/core/pcm_misc.o
CC net/ethtool/features.o
CC fs/fat/dir.o
CC net/xfrm/xfrm_user.o
CC fs/proc/meminfo.o
CC drivers/acpi/acpica/evxfevnt.o
CC net/sunrpc/xprt.o
CC net/sunrpc/auth_gss/gss_generic_token.o
CC arch/x86/kernel/time.o
AR sound/sparc/built-in.a
CC arch/x86/kernel/ioport.o
CC security/selinux/ss/mls.o
AR drivers/char/hw_random/built-in.a
CC net/sunrpc/socklib.o
CC io_uring/advise.o
CC fs/ext4/ext4_jbd2.o
CC drivers/tty/vt/vt.o
AR drivers/virtio/built-in.a
CC drivers/tty/serial/8250/8250_port.o
CC fs/isofs/namei.o
CC arch/x86/kernel/dumpstack.o
CC arch/x86/kernel/cpu/intel.o
CC drivers/tty/serial/serial_core.o
CC drivers/gpu/drm/ttm/ttm_bo.o
CC fs/jbd2/checkpoint.o
AR kernel/entry/built-in.a
AR drivers/tty/ipwireless/built-in.a
CC arch/x86/events/intel/uncore_discovery.o
CC drivers/acpi/acpica/evxfgpe.o
CC kernel/dma/direct.o
CC drivers/char/agp/isoch.o
CC fs/proc/stat.o
CC crypto/cmac.o
CC net/netfilter/nf_conntrack_proto_tcp.o
CC drivers/connector/connector.o
CC crypto/hmac.o
CC lib/decompress_inflate.o
CC sound/core/pcm_memory.o
CC drivers/acpi/osl.o
CC drivers/iommu/iommu-sysfs.o
CC net/ipv6/netfilter/ip6t_ipv6header.o
CC drivers/pci/vc.o
CC fs/jbd2/revoke.o
CC fs/netfs/locking.o
CC kernel/irq/proc.o
CC net/sunrpc/auth_gss/gss_mech_switch.o
CC kernel/irq/migration.o
CC drivers/acpi/acpica/evxfregn.o
CC net/ethtool/privflags.o
CC fs/isofs/inode.o
CC arch/x86/kernel/cpu/tsx.o
CC io_uring/epoll.o
CC mm/backing-dev.o
CC sound/core/memalloc.o
CC drivers/acpi/utils.o
CC net/ipv4/inet_hashtables.o
CC security/selinux/ss/context.o
CC lib/decompress_unlz4.o
CC fs/proc/uptime.o
CC fs/ext4/extents.o
CC net/core/dst.o
CC drivers/gpu/drm/ttm/ttm_bo_util.o
CC drivers/char/agp/amd64-agp.o
CC drivers/acpi/acpica/exconcat.o
CC crypto/crypto_null.o
CC drivers/tty/serial/serial_base_bus.o
CC drivers/tty/tty_io.o
CC mm/mm_init.o
CC drivers/iommu/dma-iommu.o
CC block/blk-ioprio.o
CC kernel/dma/ops_helpers.o
CC drivers/acpi/acpica/exconfig.o
CC arch/x86/kernel/cpu/intel_epb.o
CC arch/x86/events/msr.o
CC fs/fat/fatent.o
CC io_uring/statx.o
CC drivers/pci/mmap.o
CC drivers/gpu/drm/display/drm_dp_mst_topology.o
CC kernel/irq/cpuhotplug.o
CC arch/x86/events/intel/cstate.o
CC drivers/connector/cn_proc.o
CC fs/jbd2/journal.o
COPY drivers/tty/vt/defkeymap.c
CC net/core/netevent.o
CC lib/decompress_unlzma.o
CC fs/netfs/main.o
CC lib/decompress_unlzo.o
CC drivers/iommu/iova.o
CC net/wireless/sysfs.o
CC kernel/dma/remap.o
CC fs/proc/util.o
CC drivers/acpi/acpica/exconvrt.o
CC arch/x86/kernel/cpu/amd.o
CC kernel/rcu/rcu_segcblist.o
CC drivers/char/misc.o
CC crypto/md5.o
CC kernel/module/main.o
CC net/ipv6/netfilter/ip6t_REJECT.o
CC sound/core/pcm_timer.o
CC net/ipv6/addrconf.o
CC net/ethtool/rings.o
CC security/selinux/netlabel.o
AR net/mac80211/tests/built-in.a
CC net/mac80211/main.o
CC drivers/char/agp/intel-agp.o
CC block/blk-iolatency.o
CC drivers/tty/serial/8250/8250_dma.o
CC drivers/gpu/drm/ttm/ttm_bo_vm.o
CC drivers/pci/devres.o
CC fs/isofs/dir.o
CC drivers/pci/proc.o
CC drivers/pci/pci-sysfs.o
CC net/sunrpc/auth_gss/svcauth_gss.o
CC kernel/irq/pm.o
CC drivers/acpi/acpica/excreate.o
CC drivers/acpi/acpica/exdebug.o
CC io_uring/timeout.o
CC net/netfilter/nf_conntrack_proto_udp.o
CC fs/proc/version.o
CC crypto/sha256_generic.o
AR kernel/rcu/built-in.a
AR kernel/dma/built-in.a
CC lib/decompress_unxz.o
CC net/wireless/radiotap.o
CC net/sunrpc/auth_gss/gss_rpc_upcall.o
CC drivers/tty/n_tty.o
CC drivers/base/power/sysfs.o
AR net/xfrm/built-in.a
CC kernel/irq/msi.o
CC drivers/gpu/drm/i915/i915_config.o
AR arch/x86/events/intel/built-in.a
CC drivers/block/loop.o
AR arch/x86/events/built-in.a
CC drivers/acpi/reboot.o
CC sound/core/seq_device.o
CC drivers/tty/vt/consolemap.o
CC mm/percpu.o
CC net/wireless/util.o
CC fs/fat/file.o
CC drivers/base/power/generic_ops.o
CC drivers/acpi/acpica/exdump.o
AR drivers/connector/built-in.a
CC fs/nfs/client.o
AR drivers/iommu/built-in.a
CC drivers/base/firmware_loader/builtin/main.o
CC arch/x86/kernel/cpu/hygon.o
CC drivers/gpu/drm/i915/i915_driver.o
CC drivers/char/agp/intel-gtt.o
CC arch/x86/kernel/cpu/centaur.o
CC drivers/tty/serial/8250/8250_dwlib.o
CC fs/isofs/util.o
CC fs/proc/softirqs.o
CC lib/decompress_unzstd.o
CC drivers/gpu/drm/ttm/ttm_module.o
CC net/ethtool/channels.o
CC crypto/sha512_generic.o
CC drivers/acpi/acpica/exfield.o
AR sound/spi/built-in.a
AR sound/parisc/built-in.a
CC net/ipv4/inet_timewait_sock.o
CC drivers/base/power/common.o
CC block/blk-iocost.o
CC drivers/block/virtio_blk.o
CC arch/x86/kernel/cpu/transmeta.o
CC net/sunrpc/auth_gss/gss_rpc_xdr.o
AR net/ipv6/netfilter/built-in.a
CC fs/netfs/misc.o
AR drivers/base/firmware_loader/builtin/built-in.a
CC drivers/base/firmware_loader/main.o
CC net/sunrpc/auth_gss/trace.o
AR sound/core/built-in.a
AR sound/pcmcia/vx/built-in.a
AR sound/pcmcia/pdaudiocf/built-in.a
AR sound/pcmcia/built-in.a
AR sound/mips/built-in.a
AR sound/soc/built-in.a
CC drivers/char/virtio_console.o
AR sound/atmel/built-in.a
CC drivers/base/regmap/regmap.o
CC sound/hda/hda_bus_type.o
AR security/selinux/built-in.a
CC net/core/neighbour.o
AR security/built-in.a
CC drivers/gpu/drm/display/drm_dsc_helper.o
CC drivers/tty/serial/8250/8250_pcilib.o
CC io_uring/fdinfo.o
CC drivers/pci/slot.o
CC drivers/base/regmap/regcache.o
CC fs/netfs/objects.o
CC drivers/acpi/acpica/exfldio.o
CC net/netlabel/netlabel_user.o
HOSTCC drivers/tty/vt/conmakehash
CC lib/dump_stack.o
CC drivers/gpu/drm/ttm/ttm_execbuf_util.o
CC fs/proc/namespaces.o
CC fs/isofs/rock.o
CC drivers/char/hpet.o
CC drivers/base/power/qos.o
CC fs/fat/inode.o
CC kernel/irq/affinity.o
CC net/netlabel/netlabel_kapi.o
CC drivers/tty/vt/defkeymap.o
CC net/netfilter/nf_conntrack_proto_icmp.o
CC arch/x86/kernel/cpu/zhaoxin.o
CC crypto/sha3_generic.o
CONMK drivers/tty/vt/consolemap_deftbl.c
CC drivers/tty/vt/consolemap_deftbl.o
AR drivers/char/agp/built-in.a
CC net/netlabel/netlabel_domainhash.o
CC net/ethtool/coalesce.o
AR drivers/tty/vt/built-in.a
CC net/ipv6/addrlabel.o
CC sound/hda/hdac_bus.o
CC drivers/acpi/acpica/exmisc.o
CC net/sunrpc/xprtsock.o
CC kernel/module/strict_rwx.o
CC drivers/tty/serial/8250/8250_early.o
CC fs/netfs/read_collect.o
CC drivers/tty/tty_ioctl.o
CC kernel/irq/matrix.o
CC arch/x86/kernel/cpu/vortex.o
CC net/ethtool/pause.o
AR drivers/base/firmware_loader/built-in.a
CC lib/earlycpio.o
AR sound/x86/built-in.a
CC drivers/gpu/drm/ttm/ttm_range_manager.o
AR fs/jbd2/built-in.a
CC arch/x86/kernel/nmi.o
CC net/ethtool/eee.o
CC drivers/pci/pci-acpi.o
CC drivers/base/power/runtime.o
CC lib/extable.o
AR drivers/block/built-in.a
CC net/rfkill/core.o
CC net/rfkill/input.o
CC net/ipv4/inet_connection_sock.o
CC crypto/ecb.o
CC net/ipv4/tcp.o
CC fs/nfs/dir.o
CC fs/proc/self.o
CC io_uring/cancel.o
CC drivers/gpu/drm/i915/i915_drm_client.o
CC io_uring/waitid.o
CC drivers/acpi/acpica/exmutex.o
CC drivers/gpu/drm/ttm/ttm_resource.o
CC drivers/tty/tty_ldisc.o
CC drivers/gpu/drm/display/drm_hdcp_helper.o
CC fs/isofs/export.o
CC arch/x86/kernel/cpu/perfctr-watchdog.o
CC drivers/acpi/nvs.o
CC kernel/module/kmod.o
CC drivers/char/nvram.o
CC lib/flex_proportions.o
CC drivers/tty/serial/8250/8250_exar.o
CC sound/hda/hdac_device.o
CC crypto/cbc.o
CC drivers/base/power/wakeirq.o
CC drivers/acpi/acpica/exnames.o
AR drivers/gpu/drm/renesas/rcar-du/built-in.a
CC mm/slab_common.o
AR drivers/gpu/drm/renesas/rz-du/built-in.a
AR drivers/gpu/drm/renesas/built-in.a
CC net/wireless/reg.o
CC net/mac80211/status.o
CC drivers/acpi/wakeup.o
CC fs/proc/thread_self.o
CC drivers/gpu/drm/i915/i915_getparam.o
CC net/netfilter/nf_conntrack_extend.o
AR drivers/base/test/built-in.a
AR sound/xen/built-in.a
CC arch/x86/kernel/ldt.o
CC net/ipv6/route.o
CC fs/fat/misc.o
CC lib/idr.o
CC lib/iomem_copy.o
CC drivers/gpu/drm/i915/i915_ioctl.o
CC fs/isofs/joliet.o
CC net/ethtool/tsinfo.o
CC arch/x86/kernel/cpu/vmware.o
CC fs/isofs/compress.o
CC net/netlabel/netlabel_addrlist.o
CC crypto/ctr.o
AR net/rfkill/built-in.a
CC arch/x86/kernel/cpu/hypervisor.o
CC drivers/acpi/acpica/exoparg1.o
CC drivers/gpu/drm/display/drm_hdmi_helper.o
CC net/ethtool/cabletest.o
CC net/wireless/scan.o
CC fs/netfs/read_pgpriv2.o
CC net/sunrpc/sched.o
CC drivers/acpi/sleep.o
CC net/sunrpc/auth_gss/gss_krb5_mech.o
CC drivers/base/power/main.o
CC net/ipv6/ip6_fib.o
CC drivers/pci/iomap.o
CC io_uring/register.o
CC fs/ext4/extents_status.o
AR kernel/irq/built-in.a
CC kernel/module/tree_lookup.o
CC drivers/gpu/drm/ttm/ttm_pool.o
CC fs/proc/proc_sysctl.o
CC net/mac80211/driver-ops.o
AR drivers/char/built-in.a
CC net/core/rtnetlink.o
CC net/netfilter/nf_conntrack_acct.o
CC drivers/base/component.o
CC drivers/acpi/acpica/exoparg2.o
CC block/mq-deadline.o
CC lib/irq_regs.o
CC crypto/gcm.o
CC drivers/tty/serial/8250/8250_lpss.o
CC net/netlabel/netlabel_mgmt.o
CC sound/hda/hdac_sysfs.o
CC net/9p/mod.o
CC arch/x86/kernel/cpu/mshyperv.o
CC lib/is_single_threaded.o
CC drivers/base/regmap/regcache-rbtree.o
CC net/9p/client.o
CC drivers/gpu/drm/display/drm_scdc_helper.o
CC drivers/base/core.o
CC net/mac80211/sta_info.o
CC kernel/module/kallsyms.o
CC fs/fat/nfs.o
CC drivers/pci/quirks.o
CC drivers/acpi/acpica/exoparg3.o
AR fs/isofs/built-in.a
CC drivers/base/bus.o
CC drivers/gpu/drm/i915/i915_irq.o
CC drivers/tty/serial/serial_ctrl.o
CC fs/nfs/file.o
CC fs/netfs/read_retry.o
CC fs/nfs/getroot.o
CC lib/klist.o
CC io_uring/truncate.o
CC io_uring/memmap.o
CC net/netlabel/netlabel_unlabeled.o
CC net/ipv4/tcp_input.o
CC drivers/pci/pci-label.o
CC net/ethtool/tunnels.o
CC drivers/gpu/drm/ttm/ttm_device.o
CC net/sunrpc/auth_gss/gss_krb5_seal.o
CC drivers/acpi/acpica/exoparg6.o
CC drivers/tty/serial/8250/8250_mid.o
CC net/dns_resolver/dns_key.o
CC mm/compaction.o
CC net/netfilter/nf_conntrack_seqadj.o
CC lib/kobject.o
CC drivers/base/regmap/regcache-flat.o
CC sound/hda/hdac_regmap.o
CC drivers/pci/vgaarb.o
CC crypto/ccm.o
CC fs/fat/namei_vfat.o
AR drivers/gpu/drm/display/built-in.a
CC drivers/acpi/acpica/exprep.o
CC kernel/module/procfs.o
CC arch/x86/kernel/cpu/debugfs.o
CC net/ethtool/fec.o
CC drivers/tty/tty_buffer.o
CC block/kyber-iosched.o
CC drivers/base/power/wakeup.o
CC fs/ext4/file.o
CC fs/proc/proc_net.o
CC arch/x86/kernel/cpu/bus_lock.o
CC sound/hda/hdac_controller.o
CC net/dns_resolver/dns_query.o
CC drivers/gpu/drm/ttm/ttm_sys_manager.o
CC drivers/acpi/acpica/exregion.o
CC drivers/acpi/acpica/exresnte.o
CC drivers/base/regmap/regcache-maple.o
CC fs/netfs/write_collect.o
CC io_uring/io-wq.o
CC fs/netfs/write_issue.o
CC drivers/tty/serial/8250/8250_pci.o
CC lib/kobject_uevent.o
CC arch/x86/kernel/setup.o
CC drivers/gpu/drm/i915/i915_mitigations.o
CC kernel/module/sysfs.o
CC drivers/tty/serial/serial_port.o
CC drivers/acpi/device_sysfs.o
CC fs/exportfs/expfs.o
CC fs/ext4/fsmap.o
CC net/sunrpc/auth_gss/gss_krb5_unseal.o
CC net/9p/error.o
CC net/handshake/alert.o
CC drivers/acpi/acpica/exresolv.o
CC net/netlabel/netlabel_cipso_v4.o
CC drivers/gpu/drm/ttm/ttm_agp_backend.o
CC drivers/misc/eeprom/eeprom_93cx6.o
CC crypto/aes_generic.o
AR drivers/mfd/built-in.a
AR drivers/nfc/built-in.a
CC net/handshake/genl.o
CC net/handshake/netlink.o
CC fs/proc/kcore.o
AR drivers/gpu/drm/omapdrm/built-in.a
CC net/handshake/request.o
AR drivers/gpu/drm/tilcdc/built-in.a
CC net/handshake/tlshd.o
CC net/netfilter/nf_conntrack_proto_icmpv6.o
AR net/dns_resolver/built-in.a
CC drivers/base/regmap/regmap-debugfs.o
CC drivers/gpu/drm/i915/i915_module.o
CC net/ethtool/eeprom.o
CC arch/x86/kernel/cpu/capflags.o
AR arch/x86/kernel/cpu/built-in.a
CC net/sunrpc/auth_gss/gss_krb5_wrap.o
CC net/9p/protocol.o
CC sound/hda/hdac_stream.o
CC drivers/acpi/acpica/exresop.o
CC fs/fat/namei_msdos.o
CC net/sunrpc/auth_gss/gss_krb5_crypto.o
CC drivers/tty/tty_port.o
AR fs/exportfs/built-in.a
AR drivers/misc/eeprom/built-in.a
CC net/ipv4/tcp_output.o
CC drivers/tty/tty_mutex.o
CC crypto/crc32c_generic.o
AR drivers/misc/cb710/built-in.a
AR drivers/pci/built-in.a
AR drivers/misc/lis3lv02d/built-in.a
CC mm/show_mem.o
AR drivers/misc/cardreader/built-in.a
AR drivers/misc/keba/built-in.a
CC mm/interval_tree.o
AR kernel/module/built-in.a
AR drivers/misc/built-in.a
CC kernel/time/time.o
CC drivers/gpu/drm/virtio/virtgpu_drv.o
CC fs/nfs/inode.o
CC drivers/base/power/wakeup_stats.o
CC drivers/gpu/drm/virtio/virtgpu_kms.o
AR drivers/gpu/drm/ttm/built-in.a
CC net/sunrpc/auth.o
CC arch/x86/kernel/x86_init.o
CC lib/logic_pio.o
CC drivers/acpi/acpica/exserial.o
CC drivers/acpi/acpica/exstore.o
CC net/handshake/trace.o
CC drivers/acpi/device_pm.o
CC kernel/time/timer.o
CC block/blk-mq-pci.o
CC drivers/tty/serial/8250/8250_pericom.o
CC crypto/authenc.o
AR fs/netfs/built-in.a
CC fs/ext4/fsync.o
CC io_uring/futex.o
CC sound/hda/array.o
AR drivers/base/regmap/built-in.a
CC drivers/base/power/trace.o
CC drivers/gpu/drm/i915/i915_params.o
CC block/blk-mq-virtio.o
CC fs/proc/vmcore.o
CC drivers/gpu/drm/i915/i915_pci.o
CC net/9p/trans_common.o
CC net/netlabel/netlabel_calipso.o
CC kernel/time/hrtimer.o
CC drivers/tty/serial/earlycon.o
CC drivers/acpi/acpica/exstoren.o
CC net/sunrpc/auth_gss/gss_krb5_keys.o
CC net/core/utils.o
AR drivers/dax/hmem/built-in.a
AR drivers/dax/built-in.a
CC net/9p/trans_fd.o
AR sound/virtio/built-in.a
CC mm/list_lru.o
CC net/ethtool/stats.o
CC io_uring/napi.o
CC block/blk-mq-debugfs.o
CC block/blk-pm.o
CC block/holder.o
AR fs/fat/built-in.a
CC kernel/time/sleep_timeout.o
CC lib/maple_tree.o
CC drivers/acpi/acpica/exstorob.o
CC drivers/base/dd.o
CC net/ipv6/ipv6_sockglue.o
CC drivers/gpu/drm/virtio/virtgpu_gem.o
CC arch/x86/kernel/i8259.o
CC net/netfilter/nf_conntrack_netlink.o
CC net/sunrpc/auth_null.o
CC drivers/tty/tty_ldsem.o
CC net/wireless/nl80211.o
CC drivers/tty/tty_baudrate.o
AR drivers/tty/serial/8250/built-in.a
CC drivers/gpu/drm/i915/i915_scatterlist.o
CC drivers/gpu/drm/i915/i915_switcheroo.o
AR drivers/gpu/drm/imx/built-in.a
CC lib/memcat_p.o
CC sound/hda/hdmi_chmap.o
CC fs/proc/kmsg.o
CC fs/nfs/super.o
CC net/ethtool/phc_vclocks.o
AR drivers/base/power/built-in.a
CC crypto/authencesn.o
CC net/ipv6/ndisc.o
AR drivers/gpu/drm/i2c/built-in.a
AR drivers/tty/serial/built-in.a
CC net/sunrpc/auth_tls.o
CC drivers/acpi/acpica/exsystem.o
CC kernel/futex/core.o
CC drivers/dma-buf/dma-buf.o
CC net/netfilter/nf_conntrack_ftp.o
CC crypto/lzo.o
CC mm/workingset.o
CC drivers/dma-buf/dma-fence.o
CC kernel/cgroup/cgroup.o
AR drivers/gpu/drm/panel/built-in.a
CC drivers/gpu/drm/i915/i915_sysfs.o
CC net/mac80211/wep.o
CC sound/sound_core.o
CC lib/nmi_backtrace.o
CC arch/x86/kernel/irqinit.o
CC net/netfilter/nf_conntrack_irc.o
CC kernel/time/timekeeping.o
CC drivers/tty/tty_jobctrl.o
AR net/netlabel/built-in.a
CC net/ipv6/udp.o
CC fs/proc/page.o
CC drivers/acpi/acpica/extrace.o
AR net/handshake/built-in.a
CC kernel/futex/syscalls.o
CC drivers/gpu/drm/virtio/virtgpu_vram.o
AR block/built-in.a
CC drivers/base/syscore.o
CC lib/objpool.o
AR net/sunrpc/auth_gss/built-in.a
CC net/ethtool/mm.o
CC drivers/tty/n_null.o
CC fs/ext4/hash.o
CC crypto/lzo-rle.o
CC net/core/link_watch.o
CC net/devres.o
CC net/wireless/mlme.o
CC fs/lockd/clntlock.o
CC fs/nls/nls_base.o
CC net/9p/trans_virtio.o
CC drivers/acpi/acpica/exutils.o
CC drivers/tty/pty.o
CC fs/ext4/ialloc.o
CC net/core/filter.o
CC sound/hda/trace.o
AR io_uring/built-in.a
CC mm/debug.o
CC kernel/futex/pi.o
CC drivers/base/driver.o
CC net/ipv6/udplite.o
CC fs/nls/nls_cp437.o
CC net/wireless/ibss.o
CC sound/hda/hdac_component.o
AR drivers/cxl/core/built-in.a
AR drivers/cxl/built-in.a
CC drivers/base/class.o
CC net/ethtool/module.o
CC net/netfilter/nf_conntrack_sip.o
CC arch/x86/kernel/jump_label.o
CC drivers/gpu/drm/virtio/virtgpu_display.o
CC drivers/gpu/drm/i915/i915_utils.o
AR fs/proc/built-in.a
CC net/mac80211/aead_api.o
CC crypto/rng.o
CC net/ipv4/tcp_timer.o
CC drivers/acpi/acpica/hwacpi.o
CC net/wireless/sme.o
CC sound/last.o
CC fs/nls/nls_ascii.o
CC kernel/cgroup/rstat.o
CC drivers/dma-buf/dma-fence-array.o
CC drivers/dma-buf/dma-fence-chain.o
CC lib/plist.o
CC drivers/gpu/drm/i915/intel_clock_gating.o
CC net/core/sock_diag.o
CC fs/nfs/io.o
AR drivers/gpu/drm/bridge/analogix/built-in.a
CC kernel/time/ntp.o
AR drivers/gpu/drm/bridge/cadence/built-in.a
CC net/ethtool/cmis_fw_update.o
CC kernel/time/clocksource.o
AR drivers/gpu/drm/bridge/imx/built-in.a
CC drivers/macintosh/mac_hid.o
AR drivers/gpu/drm/bridge/synopsys/built-in.a
AR drivers/gpu/drm/bridge/built-in.a
CC net/ipv6/raw.o
CC kernel/cgroup/namespace.o
CC kernel/time/jiffies.o
CC drivers/tty/tty_audit.o
CC drivers/acpi/acpica/hwesleep.o
CC kernel/futex/requeue.o
CC fs/nls/nls_iso8859-1.o
CC drivers/base/platform.o
CC drivers/dma-buf/dma-fence-unwrap.o
CC mm/gup.o
CC fs/nfs/direct.o
CC sound/hda/hdac_i915.o
CC arch/x86/kernel/irq_work.o
CC lib/radix-tree.o
CC net/mac80211/wpa.o
CC crypto/drbg.o
CC kernel/time/timer_list.o
CC fs/nfs/pagelist.o
CC net/ethtool/cmis_cdb.o
CC fs/lockd/clntproc.o
CC net/wireless/chan.o
CC fs/ext4/indirect.o
CC drivers/gpu/drm/virtio/virtgpu_vq.o
CC drivers/base/cpu.o
AR net/9p/built-in.a
CC drivers/acpi/acpica/hwgpe.o
CC net/core/dev_ioctl.o
CC fs/nls/nls_utf8.o
CC net/ipv6/icmp.o
CC drivers/gpu/drm/i915/intel_cpu_info.o
AR drivers/macintosh/built-in.a
AR drivers/gpu/drm/hisilicon/built-in.a
CC drivers/tty/sysrq.o
CC net/netfilter/nf_nat_core.o
CC net/netfilter/nf_nat_proto.o
CC fs/lockd/clntxdr.o
CC fs/nfs/read.o
CC drivers/dma-buf/dma-resv.o
CC net/mac80211/scan.o
CC net/ipv4/tcp_ipv4.o
CC kernel/futex/waitwake.o
CC net/socket.o
AR fs/nls/built-in.a
CC drivers/base/firmware.o
CC net/sunrpc/auth_unix.o
CC drivers/acpi/acpica/hwregs.o
CC net/netfilter/nf_nat_helper.o
CC sound/hda/intel-dsp-config.o
CC net/ipv4/tcp_minisocks.o
CC net/wireless/ethtool.o
CC fs/ext4/inline.o
CC kernel/time/timeconv.o
CC drivers/gpu/drm/i915/intel_device_info.o
AR drivers/gpu/drm/mxsfb/built-in.a
CC kernel/trace/trace_clock.o
CC kernel/bpf/core.o
CC arch/x86/kernel/probe_roms.o
AR drivers/gpu/drm/tiny/built-in.a
CC drivers/gpu/drm/i915/intel_memory_region.o
CC net/netfilter/nf_nat_masquerade.o
CC drivers/gpu/drm/virtio/virtgpu_fence.o
CC crypto/jitterentropy.o
CC drivers/base/init.o
CC crypto/jitterentropy-kcapi.o
CC drivers/acpi/acpica/hwsleep.o
CC drivers/base/map.o
CC kernel/time/timecounter.o
CC net/ethtool/pse-pd.o
CC kernel/time/alarmtimer.o
AR kernel/futex/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_object.o
AR drivers/tty/built-in.a
CC kernel/trace/ring_buffer.o
CC net/ipv4/tcp_cong.o
CC mm/mmap_lock.o
CC drivers/dma-buf/sync_file.o
CC net/sysctl_net.o
CC sound/hda/intel-nhlt.o
CC drivers/acpi/acpica/hwvalid.o
CC drivers/base/devres.o
AR fs/unicode/built-in.a
CC drivers/acpi/acpica/hwxface.o
CC crypto/ghash-generic.o
CC drivers/base/attribute_container.o
CC net/sunrpc/svc.o
CC fs/lockd/host.o
CC net/ethtool/plca.o
CC net/mac80211/offchannel.o
CC net/ipv4/tcp_metrics.o
CC arch/x86/kernel/sys_ia32.o
CC drivers/gpu/drm/i915/intel_pcode.o
CC net/ipv6/mcast.o
CC net/ipv6/reassembly.o
CC crypto/hash_info.o
CC fs/ext4/inode.o
CC drivers/acpi/proc.o
CC net/core/tso.o
CC fs/autofs/init.o
CC fs/9p/vfs_super.o
CC drivers/acpi/acpica/hwxfsleep.o
AR drivers/dma-buf/built-in.a
AR fs/hostfs/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_debugfs.o
CC net/wireless/mesh.o
CC drivers/acpi/bus.o
CC sound/hda/intel-sdw-acpi.o
CC crypto/rsapubkey.asn1.o
CC crypto/rsaprivkey.asn1.o
AR crypto/built-in.a
CC fs/nfs/symlink.o
CC drivers/acpi/glue.o
CC fs/9p/vfs_inode.o
CC mm/highmem.o
CC mm/memory.o
CC net/sunrpc/svcsock.o
CC fs/autofs/inode.o
AR drivers/scsi/pcmcia/built-in.a
CC drivers/scsi/scsi.o
CC drivers/base/transport_class.o
CC net/wireless/ap.o
CC drivers/acpi/acpica/hwpci.o
CC kernel/time/posix-timers.o
CC net/netfilter/nf_nat_ftp.o
CC net/netfilter/nf_nat_irc.o
CC kernel/events/core.o
CC drivers/acpi/scan.o
CC mm/mincore.o
CC kernel/cgroup/cgroup-v1.o
CC arch/x86/kernel/ksysfs.o
AR sound/hda/built-in.a
AR sound/built-in.a
CC fs/ext4/ioctl.o
CC net/sunrpc/svcauth.o
CC net/ethtool/phy.o
CC drivers/gpu/drm/i915/intel_region_ttm.o
CC drivers/base/topology.o
CC fs/debugfs/inode.o
CC drivers/gpu/drm/virtio/virtgpu_plane.o
CC drivers/acpi/acpica/nsaccess.o
CC drivers/gpu/drm/i915/intel_runtime_pm.o
CC fs/tracefs/inode.o
CC net/mac80211/ht.o
CC fs/lockd/svc.o
CC net/ipv6/tcp_ipv6.o
CC drivers/scsi/hosts.o
CC net/netfilter/nf_nat_sip.o
CC net/wireless/trace.o
CC net/wireless/ocb.o
CC drivers/acpi/mipi-disco-img.o
CC fs/debugfs/file.o
CC fs/autofs/root.o
CC fs/nfs/unlink.o
CC lib/ratelimit.o
CC arch/x86/kernel/bootflag.o
CC drivers/acpi/acpica/nsalloc.o
CC net/ipv4/tcp_fastopen.o
CC fs/9p/vfs_inode_dotl.o
CC kernel/cgroup/freezer.o
AR drivers/nvme/common/built-in.a
CC drivers/acpi/acpica/nsarguments.o
AR drivers/nvme/host/built-in.a
AR drivers/nvme/target/built-in.a
CC lib/rbtree.o
AR drivers/nvme/built-in.a
CC net/netfilter/x_tables.o
CC drivers/ata/libata-core.o
CC drivers/base/container.o
AR drivers/net/phy/mediatek/built-in.a
AR drivers/net/phy/qcom/built-in.a
CC drivers/net/phy/mdio-boardinfo.o
CC drivers/ata/libata-scsi.o
CC drivers/gpu/drm/virtio/virtgpu_ioctl.o
CC arch/x86/kernel/e820.o
CC kernel/time/posix-cpu-timers.o
CC kernel/fork.o
AR kernel/bpf/built-in.a
CC net/ipv4/tcp_rate.o
CC fs/ext4/mballoc.o
CC fs/tracefs/event_inode.o
CC drivers/acpi/acpica/nsconvert.o
AR net/ethtool/built-in.a
CC lib/seq_buf.o
CC kernel/events/ring_buffer.o
CC drivers/base/property.o
CC drivers/ata/libata-eh.o
CC fs/lockd/svclock.o
CC net/sunrpc/svcauth_unix.o
CC drivers/scsi/scsi_ioctl.o
CC kernel/exec_domain.o
CC fs/9p/vfs_addr.o
CC fs/autofs/symlink.o
CC drivers/gpu/drm/i915/intel_sbi.o
CC net/wireless/pmsr.o
CC drivers/gpu/drm/i915/intel_step.o
CC kernel/trace/trace.o
CC drivers/acpi/acpica/nsdump.o
CC kernel/cgroup/legacy_freezer.o
CC drivers/gpu/drm/virtio/virtgpu_prime.o
AR fs/debugfs/built-in.a
AR drivers/gpu/drm/xlnx/built-in.a
CC drivers/gpu/drm/virtio/virtgpu_trace_points.o
CC kernel/time/posix-clock.o
CC drivers/net/phy/stubs.o
CC lib/siphash.o
CC drivers/gpu/drm/virtio/virtgpu_submit.o
CC [M] fs/efivarfs/inode.o
CC net/mac80211/agg-tx.o
CC drivers/acpi/acpica/nseval.o
CC kernel/trace/trace_output.o
CC net/sunrpc/addr.o
CC drivers/base/cacheinfo.o
CC fs/9p/vfs_file.o
CC fs/autofs/waitq.o
AR drivers/net/pse-pd/built-in.a
CC fs/ext4/migrate.o
CC drivers/firewire/init_ohci1394_dma.o
AR fs/tracefs/built-in.a
CC drivers/net/phy/mdio_devres.o
CC kernel/cgroup/pids.o
CC drivers/scsi/scsicam.o
AR drivers/gpu/drm/gud/built-in.a
CC arch/x86/kernel/pci-dma.o
CC drivers/net/phy/phy.o
CC lib/string.o
CC fs/open.o
CC drivers/acpi/acpica/nsinit.o
CC kernel/time/itimer.o
CC net/ipv4/tcp_recovery.o
CC fs/nfs/write.o
CC fs/lockd/svcshare.o
CC net/netfilter/xt_tcpudp.o
CC drivers/net/mdio/acpi_mdio.o
CC lib/timerqueue.o
CC fs/read_write.o
CC [M] fs/efivarfs/file.o
CC drivers/scsi/scsi_error.o
CC mm/mlock.o
CC drivers/gpu/drm/i915/intel_uncore.o
CC kernel/events/callchain.o
CC net/sunrpc/rpcb_clnt.o
CC lib/union_find.o
CC fs/ext4/mmp.o
CC lib/vsprintf.o
CC kernel/trace/trace_seq.o
AR drivers/gpu/drm/virtio/built-in.a
CC drivers/net/phy/phy-c45.o
CC drivers/acpi/acpica/nsload.o
CC drivers/net/phy/phy-core.o
CC kernel/cgroup/rdma.o
AR drivers/firewire/built-in.a
CC drivers/base/swnode.o
CC kernel/events/hw_breakpoint.o
CC fs/9p/vfs_dir.o
AR drivers/net/pcs/built-in.a
CC fs/autofs/expire.o
CC drivers/cdrom/cdrom.o
CC kernel/trace/trace_stat.o
CC arch/x86/kernel/quirks.o
CC fs/nfs/namespace.o
CC drivers/net/mdio/fwnode_mdio.o
CC net/ipv6/ping.o
CC drivers/acpi/acpica/nsnames.o
AR drivers/gpu/drm/solomon/built-in.a
CC lib/win_minmax.o
GEN net/wireless/shipped-certs.c
CC [M] fs/efivarfs/super.o
CC net/mac80211/agg-rx.o
CC fs/autofs/dev-ioctl.o
CC kernel/time/clockevents.o
CC drivers/acpi/acpica/nsobject.o
CC kernel/panic.o
CC net/core/sock_reuseport.o
CC fs/lockd/svcproc.o
CC net/sunrpc/timer.o
CC net/ipv4/tcp_ulp.o
CC kernel/cgroup/cpuset.o
CC drivers/acpi/resource.o
CC net/ipv6/exthdrs.o
CC [M] fs/efivarfs/vars.o
CC fs/9p/vfs_dentry.o
CC drivers/ata/libata-transport.o
CC [M] drivers/gpu/drm/scheduler/sched_main.o
CC net/netfilter/xt_CONNSECMARK.o
AR drivers/auxdisplay/built-in.a
CC kernel/time/tick-common.o
CC fs/file_table.o
CC arch/x86/kernel/kdebugfs.o
CC net/core/fib_notifier.o
CC drivers/acpi/acpica/nsparse.o
CC kernel/events/uprobes.o
CC drivers/base/auxiliary.o
CC mm/mmap.o
HOSTCC drivers/gpu/drm/xe/xe_gen_wa_oob
AR drivers/net/mdio/built-in.a
CC lib/xarray.o
CC fs/lockd/svcsubs.o
GEN xe_wa_oob.c xe_wa_oob.h
CC [M] drivers/gpu/drm/xe/xe_bb.o
CC net/mac80211/vht.o
CC arch/x86/kernel/alternative.o
CC drivers/scsi/scsi_lib.o
CC drivers/net/phy/phy_device.o
CC net/mac80211/he.o
CC arch/x86/kernel/i8253.o
CC drivers/base/devtmpfs.o
CC drivers/acpi/acpica/nspredef.o
CC fs/9p/v9fs.o
AR fs/autofs/built-in.a
CC net/ipv6/datagram.o
CC [M] drivers/gpu/drm/xe/xe_bo.o
CC fs/9p/fid.o
CC [M] drivers/gpu/drm/scheduler/sched_fence.o
CC kernel/time/tick-broadcast.o
CC lib/lockref.o
CC kernel/trace/trace_printk.o
LD [M] fs/efivarfs/efivarfs.o
CC kernel/time/tick-broadcast-hrtimer.o
CC arch/x86/kernel/hw_breakpoint.o
CC [M] drivers/gpu/drm/xe/xe_bo_evict.o
CC fs/lockd/mon.o
CC fs/ext4/move_extent.o
CC drivers/acpi/acpica/nsprepkg.o
CC drivers/gpu/drm/i915/intel_uncore_trace.o
CC net/ipv4/tcp_offload.o
CC drivers/gpu/drm/drm_atomic.o
CC drivers/gpu/drm/i915/intel_wakeref.o
CC fs/9p/xattr.o
AR drivers/cdrom/built-in.a
CC net/core/xdp.o
CC fs/lockd/trace.o
CC arch/x86/kernel/tsc.o
CC drivers/acpi/acpica/nsrepair.o
CC net/sunrpc/xdr.o
CC fs/ext4/namei.o
CC drivers/gpu/drm/i915/vlv_sideband.o
CC net/netfilter/xt_NFLOG.o
CC drivers/net/phy/linkmode.o
CC drivers/ata/libata-trace.o
CC kernel/cpu.o
CC [M] drivers/gpu/drm/scheduler/sched_entity.o
CC fs/nfs/mount_clnt.o
CC kernel/time/tick-oneshot.o
AR drivers/net/ethernet/3com/built-in.a
CC drivers/net/ethernet/8390/ne2k-pci.o
AR drivers/net/ethernet/adaptec/built-in.a
AR drivers/net/ethernet/agere/built-in.a
CC drivers/acpi/acpi_processor.o
CC kernel/trace/pid_list.o
CC drivers/base/module.o
CC drivers/base/auxiliary_sysfs.o
CC drivers/acpi/acpica/nsrepair2.o
CC [M] drivers/gpu/drm/xe/xe_devcoredump.o
CC drivers/gpu/drm/drm_atomic_uapi.o
CC net/ipv6/ip6_flowlabel.o
CC kernel/cgroup/misc.o
CC fs/super.o
CC net/ipv4/tcp_plb.o
CC drivers/ata/libata-sata.o
CC kernel/exit.o
CC net/netfilter/xt_SECMARK.o
CC kernel/time/tick-sched.o
AR fs/9p/built-in.a
CC drivers/gpu/drm/drm_auth.o
CC drivers/acpi/processor_core.o
CC mm/mmu_gather.o
CC fs/lockd/xdr.o
CC drivers/base/devcoredump.o
CC lib/bcd.o
CC drivers/scsi/constants.o
CC fs/char_dev.o
CC drivers/gpu/drm/drm_blend.o
CC lib/sort.o
CC [M] drivers/gpu/drm/xe/xe_device.o
CC drivers/net/ethernet/8390/8390.o
CC kernel/trace/trace_sched_switch.o
CC drivers/acpi/acpica/nssearch.o
CC drivers/scsi/scsi_lib_dma.o
CC lib/parser.o
LD [M] drivers/gpu/drm/scheduler/gpu-sched.o
CC arch/x86/kernel/tsc_msr.o
CC drivers/ata/libata-sff.o
CC [M] drivers/gpu/drm/xe/xe_device_sysfs.o
AR drivers/net/wireless/admtek/built-in.a
CC kernel/cgroup/debug.o
AR drivers/net/wireless/ath/built-in.a
CC drivers/gpu/drm/i915/vlv_suspend.o
AR drivers/net/wireless/atmel/built-in.a
CC drivers/acpi/processor_pdc.o
AR drivers/net/wireless/broadcom/built-in.a
AR drivers/net/wireless/intel/built-in.a
AR drivers/net/wireless/intersil/built-in.a
AR drivers/net/wireless/marvell/built-in.a
AR drivers/net/wireless/mediatek/built-in.a
AR drivers/net/wireless/microchip/built-in.a
AR drivers/net/wireless/purelifi/built-in.a
AR drivers/net/wireless/quantenna/built-in.a
AR drivers/net/wireless/ralink/built-in.a
AR drivers/net/ethernet/alacritech/built-in.a
AR drivers/net/wireless/realtek/built-in.a
CC drivers/ata/libata-pmp.o
AR drivers/net/wireless/rsi/built-in.a
AR drivers/net/wireless/silabs/built-in.a
CC drivers/gpu/drm/drm_bridge.o
AR drivers/net/wireless/st/built-in.a
AR drivers/net/wireless/ti/built-in.a
CC drivers/acpi/acpica/nsutils.o
CC drivers/net/phy/phy_link_topology.o
CC fs/stat.o
AR drivers/net/wireless/zydas/built-in.a
CC net/mac80211/s1g.o
AR drivers/net/wireless/virtual/built-in.a
CC lib/debug_locks.o
AR drivers/net/wireless/built-in.a
CC net/ipv6/inet6_connection_sock.o
CC lib/random32.o
CC net/sunrpc/sunrpc_syms.o
CC drivers/pcmcia/cs.o
AR drivers/net/ethernet/alteon/built-in.a
CC kernel/softirq.o
CC arch/x86/kernel/io_delay.o
CC arch/x86/kernel/rtc.o
CC fs/nfs/nfstrace.o
CC arch/x86/kernel/resource.o
CC net/core/flow_offload.o
CC drivers/base/platform-msi.o
CC drivers/usb/common/common.o
CC drivers/gpu/drm/i915/soc/intel_dram.o
CC net/core/gro.o
CC kernel/trace/trace_nop.o
CC drivers/scsi/scsi_scan.o
CC net/netfilter/xt_TCPMSS.o
CC kernel/resource.o
CC mm/mprotect.o
CC net/core/netdev-genl.o
AR drivers/net/ethernet/amazon/built-in.a
CC net/wireless/shipped-certs.o
AR kernel/events/built-in.a
CC net/mac80211/ibss.o
AS arch/x86/kernel/irqflags.o
CC lib/bust_spinlocks.o
CC net/mac80211/iface.o
CC net/ipv4/datagram.o
GEN drivers/scsi/scsi_devinfo_tbl.c
CC drivers/acpi/acpica/nswalk.o
CC drivers/input/serio/serio.o
CC drivers/gpu/drm/i915/soc/intel_gmch.o
CC drivers/usb/core/usb.o
CC fs/nfs/export.o
CC kernel/time/timer_migration.o
CC drivers/net/phy/mdio_bus.o
AR kernel/cgroup/built-in.a
CC drivers/net/phy/mdio_device.o
CC drivers/base/physical_location.o
CC net/sunrpc/cache.o
CC fs/lockd/clnt4xdr.o
AR drivers/net/ethernet/8390/built-in.a
AR drivers/net/ethernet/amd/built-in.a
AR drivers/net/ethernet/aquantia/built-in.a
AR drivers/net/ethernet/arc/built-in.a
AR drivers/net/ethernet/asix/built-in.a
AR drivers/net/ethernet/atheros/built-in.a
CC arch/x86/kernel/static_call.o
AR drivers/net/ethernet/cadence/built-in.a
CC drivers/net/ethernet/broadcom/bnx2.o
CC [M] drivers/gpu/drm/xe/xe_dma_buf.o
CC drivers/acpi/acpica/nsxfeval.o
CC net/mac80211/link.o
CC drivers/usb/core/hub.o
CC mm/mremap.o
CC drivers/base/trace.o
CC drivers/usb/common/debug.o
CC drivers/pcmcia/socket_sysfs.o
CC lib/kasprintf.o
CC drivers/scsi/scsi_devinfo.o
AR drivers/usb/common/built-in.a
CC net/core/netdev-genl-gen.o
CC fs/nfs/sysfs.o
CC kernel/trace/blktrace.o
CC fs/exec.o
CC drivers/input/serio/i8042.o
CC drivers/acpi/ec.o
CC kernel/sysctl.o
CC net/ipv6/udp_offload.o
CC kernel/time/vsyscall.o
CC arch/x86/kernel/process.o
CC drivers/acpi/acpica/nsxfname.o
CC lib/bitmap.o
CC kernel/time/timekeeping_debug.o
AR drivers/net/usb/built-in.a
CC fs/pipe.o
CC net/mac80211/rate.o
CC drivers/gpu/drm/i915/soc/intel_pch.o
CC fs/ext4/page-io.o
CC net/netfilter/xt_conntrack.o
CC fs/lockd/xdr4.o
CC drivers/acpi/dock.o
CC drivers/ata/libata-acpi.o
CC net/ipv4/raw.o
CC net/ipv6/seg6.o
CC drivers/ata/libata-pata-timings.o
CC arch/x86/kernel/ptrace.o
CC [M] drivers/gpu/drm/xe/xe_drm_client.o
AR drivers/net/ethernet/brocade/built-in.a
CC drivers/net/ethernet/broadcom/tg3.o
CC kernel/trace/trace_events.o
CC drivers/pcmcia/cardbus.o
AR drivers/base/built-in.a
CC net/core/gso.o
CC drivers/acpi/acpica/nsxfobj.o
CC fs/ext4/readpage.o
CC mm/msync.o
CC drivers/scsi/scsi_sysctl.o
CC drivers/gpu/drm/i915/soc/intel_rom.o
CC drivers/net/phy/swphy.o
CC drivers/net/phy/fixed_phy.o
CC mm/page_vma_mapped.o
AR drivers/net/ethernet/cavium/common/built-in.a
AR drivers/net/ethernet/cavium/thunder/built-in.a
AR drivers/net/ethernet/cavium/liquidio/built-in.a
CC net/mac80211/michael.o
AR drivers/net/ethernet/cavium/octeon/built-in.a
AR drivers/net/ethernet/cavium/built-in.a
CC net/netfilter/xt_policy.o
CC lib/scatterlist.o
CC kernel/trace/trace_export.o
CC net/sunrpc/rpc_pipe.o
CC drivers/acpi/acpica/psargs.o
CC kernel/time/namespace.o
CC drivers/pcmcia/ds.o
CC arch/x86/kernel/tls.o
CC net/mac80211/tkip.o
CC kernel/capability.o
CC arch/x86/kernel/step.o
CC net/ipv4/udp.o
CC drivers/input/serio/serport.o
CC fs/lockd/svc4proc.o
CC drivers/gpu/drm/drm_cache.o
CC net/netfilter/xt_state.o
CC drivers/scsi/scsi_proc.o
CC drivers/ata/ahci.o
CC [M] drivers/gpu/drm/xe/xe_exec.o
CC kernel/ptrace.o
CC kernel/user.o
CC drivers/usb/core/hcd.o
CC drivers/acpi/acpica/psloop.o
AR drivers/net/ethernet/chelsio/built-in.a
CC drivers/acpi/pci_root.o
CC net/ipv6/fib6_notifier.o
CC fs/ext4/resize.o
CC mm/pagewalk.o
CC drivers/gpu/drm/drm_color_mgmt.o
CC mm/pgtable-generic.o
CC net/core/net-sysfs.o
CC net/sunrpc/sysfs.o
CC drivers/gpu/drm/i915/i915_memcpy.o
CC drivers/net/mii.o
CC fs/nfs/fs_context.o
CC kernel/signal.o
AR kernel/time/built-in.a
CC drivers/scsi/scsi_debugfs.o
CC drivers/net/phy/realtek.o
CC arch/x86/kernel/i8237.o
CC drivers/input/keyboard/atkbd.o
CC drivers/gpu/drm/i915/i915_mm.o
CC lib/list_sort.o
AR drivers/usb/phy/built-in.a
CC lib/uuid.o
CC drivers/net/loopback.o
CC drivers/input/serio/libps2.o
CC lib/iov_iter.o
CC drivers/acpi/acpica/psobject.o
CC drivers/input/mouse/psmouse-base.o
AR drivers/input/joystick/built-in.a
CC mm/rmap.o
CC net/ipv4/udplite.o
CC drivers/rtc/lib.o
CC mm/vmalloc.o
CC drivers/i2c/algos/i2c-algo-bit.o
CC drivers/usb/core/urb.o
CC drivers/pcmcia/pcmcia_resource.o
CC drivers/gpu/drm/i915/i915_sw_fence.o
CC arch/x86/kernel/stacktrace.o
CC fs/ext4/super.o
CC [M] drivers/gpu/drm/xe/xe_execlist.o
CC [M] drivers/gpu/drm/xe/xe_exec_queue.o
AR drivers/input/tablet/built-in.a
CC net/ipv6/rpl.o
AR drivers/i3c/built-in.a
CC [M] net/netfilter/nf_log_syslog.o
CC fs/lockd/procfs.o
CC drivers/acpi/acpica/psopcode.o
CC drivers/acpi/acpica/psopinfo.o
CC drivers/pcmcia/cistpl.o
CC drivers/scsi/scsi_trace.o
CC mm/vma.o
CC net/core/hotdata.o
CC kernel/sys.o
CC lib/clz_ctz.o
CC net/ipv6/ioam6.o
CC kernel/trace/trace_event_perf.o
CC drivers/ata/libahci.o
CC drivers/net/netconsole.o
AR drivers/input/serio/built-in.a
CC drivers/rtc/class.o
CC drivers/rtc/interface.o
CC arch/x86/kernel/reboot.o
CC arch/x86/kernel/msr.o
CC drivers/acpi/acpica/psparse.o
CC drivers/ata/ata_piix.o
CC net/core/netdev_rx_queue.o
CC [M] net/netfilter/xt_mark.o
CC fs/nfs/nfsroot.o
CC net/sunrpc/svc_xprt.o
AR drivers/input/keyboard/built-in.a
CC fs/namei.o
CC drivers/gpu/drm/i915/i915_sw_fence_work.o
CC fs/ext4/symlink.o
CC [M] drivers/gpu/drm/xe/xe_force_wake.o
AR drivers/i2c/algos/built-in.a
CC drivers/i2c/busses/i2c-i801.o
AR drivers/net/phy/built-in.a
CC net/ipv4/udp_offload.o
CC drivers/usb/core/message.o
CC drivers/scsi/scsi_logging.o
CC drivers/input/mouse/synaptics.o
AR fs/lockd/built-in.a
CC net/mac80211/aes_cmac.o
CC net/sunrpc/xprtmultipath.o
CC drivers/gpu/drm/i915/i915_syncmap.o
CC drivers/usb/mon/mon_main.o
CC drivers/acpi/acpica/psscope.o
CC drivers/usb/class/usblp.o
CC drivers/usb/host/pci-quirks.o
CC kernel/umh.o
CC drivers/scsi/scsi_pm.o
CC drivers/ata/pata_amd.o
CC [M] net/netfilter/xt_nat.o
CC lib/bsearch.o
CC kernel/trace/trace_events_filter.o
AR drivers/input/touchscreen/built-in.a
CC drivers/acpi/pci_link.o
CC drivers/gpu/drm/i915/i915_user_extensions.o
CC arch/x86/kernel/cpuid.o
CC drivers/acpi/acpica/pstree.o
CC drivers/acpi/acpica/psutils.o
CC drivers/scsi/scsi_bsg.o
CC drivers/gpu/drm/drm_connector.o
AR net/wireless/built-in.a
CC net/ipv6/sysctl_net_ipv6.o
CC net/ipv4/arp.o
CC net/core/net-procfs.o
CC fs/ext4/sysfs.o
CC drivers/pcmcia/pcmcia_cis.o
CC net/core/netpoll.o
CC net/ipv4/icmp.o
CC [M] drivers/gpu/drm/xe/xe_ggtt.o
CC drivers/scsi/scsi_common.o
CC fs/fcntl.o
CC drivers/usb/mon/mon_stat.o
CC fs/nfs/sysctl.o
CC drivers/net/virtio_net.o
CC drivers/gpu/drm/i915/i915_debugfs.o
AR drivers/i2c/muxes/built-in.a
CC drivers/gpu/drm/i915/i915_debugfs_params.o
CC drivers/usb/core/driver.o
CC drivers/ata/pata_oldpiix.o
CC drivers/acpi/acpica/pswalk.o
AR drivers/media/i2c/built-in.a
AR drivers/media/tuners/built-in.a
CC net/mac80211/aes_gmac.o
AR drivers/media/rc/keymaps/built-in.a
AR drivers/media/rc/built-in.a
AR drivers/media/common/b2c2/built-in.a
AR drivers/media/common/saa7146/built-in.a
CC net/mac80211/fils_aead.o
CC net/mac80211/cfg.o
AR drivers/media/common/siano/built-in.a
CC lib/find_bit.o
CC drivers/rtc/nvmem.o
AR drivers/media/common/v4l2-tpg/built-in.a
AR drivers/usb/class/built-in.a
CC net/mac80211/ethtool.o
CC arch/x86/kernel/early-quirks.o
CC net/mac80211/rx.o
CC drivers/usb/host/ehci-hcd.o
AR drivers/media/common/videobuf2/built-in.a
AR drivers/media/common/built-in.a
CC drivers/rtc/dev.o
AR drivers/i2c/busses/built-in.a
AR drivers/media/platform/allegro-dvt/built-in.a
CC drivers/i2c/i2c-boardinfo.o
AR drivers/media/platform/amlogic/meson-ge2d/built-in.a
AR drivers/media/platform/amlogic/built-in.a
CC drivers/rtc/proc.o
CC lib/llist.o
AR drivers/media/platform/amphion/built-in.a
CC drivers/usb/core/config.o
AR drivers/media/platform/aspeed/built-in.a
AR drivers/media/platform/atmel/built-in.a
AR drivers/media/platform/broadcom/built-in.a
CC kernel/trace/trace_events_trigger.o
AR drivers/media/platform/cadence/built-in.a
CC drivers/input/mouse/focaltech.o
AR drivers/media/platform/chips-media/coda/built-in.a
AR drivers/media/platform/chips-media/wave5/built-in.a
AR drivers/media/platform/chips-media/built-in.a
CC drivers/acpi/acpica/psxface.o
CC drivers/gpu/drm/i915/i915_pmu.o
AR drivers/media/platform/imagination/built-in.a
CC drivers/usb/host/ehci-pci.o
AR drivers/media/platform/intel/built-in.a
AR drivers/media/platform/marvell/built-in.a
CC drivers/rtc/sysfs.o
AR drivers/media/platform/mediatek/jpeg/built-in.a
CC drivers/scsi/scsi_transport_spi.o
AR drivers/media/platform/mediatek/mdp/built-in.a
CC lib/lwq.o
AR drivers/media/platform/mediatek/vcodec/common/built-in.a
AR drivers/media/platform/mediatek/vcodec/encoder/built-in.a
AR drivers/media/platform/microchip/built-in.a
CC drivers/usb/mon/mon_text.o
AR drivers/media/platform/mediatek/vcodec/decoder/built-in.a
CC fs/nfs/nfs3super.o
AR drivers/media/platform/mediatek/vcodec/built-in.a
AR drivers/media/platform/mediatek/vpu/built-in.a
AR drivers/media/platform/mediatek/mdp3/built-in.a
CC net/core/fib_rules.o
AR drivers/media/platform/mediatek/built-in.a
AR drivers/media/platform/nuvoton/built-in.a
CC drivers/i2c/i2c-core-base.o
CC [M] net/netfilter/xt_LOG.o
AR drivers/media/platform/nvidia/tegra-vde/built-in.a
AR drivers/media/platform/nvidia/built-in.a
AR drivers/media/platform/nxp/dw100/built-in.a
AR drivers/media/platform/nxp/imx-jpeg/built-in.a
AR drivers/media/platform/nxp/imx8-isi/built-in.a
AR drivers/media/platform/nxp/built-in.a
CC drivers/gpu/drm/drm_crtc.o
AR drivers/media/platform/qcom/camss/built-in.a
AR drivers/media/platform/qcom/venus/built-in.a
CC lib/memweight.o
AR drivers/media/platform/qcom/built-in.a
AR drivers/media/platform/raspberrypi/pisp_be/built-in.a
AR drivers/media/platform/raspberrypi/rp1-cfe/built-in.a
AR drivers/media/platform/raspberrypi/built-in.a
AR drivers/media/platform/renesas/rcar-vin/built-in.a
AR drivers/media/platform/renesas/rzg2l-cru/built-in.a
AR drivers/media/platform/renesas/vsp1/built-in.a
AR drivers/media/platform/renesas/built-in.a
CC lib/kfifo.o
CC net/ipv6/xfrm6_policy.o
AR drivers/media/platform/rockchip/rga/built-in.a
CC drivers/i2c/i2c-core-smbus.o
CC drivers/acpi/acpica/rsaddr.o
AR drivers/media/platform/rockchip/rkisp1/built-in.a
CC drivers/pcmcia/rsrc_mgr.o
AR drivers/media/platform/rockchip/built-in.a
CC drivers/ata/pata_sch.o
AR drivers/media/platform/samsung/exynos-gsc/built-in.a
AR drivers/media/platform/samsung/exynos4-is/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gpu_scheduler.o
CC lib/percpu-refcount.o
AR drivers/media/platform/samsung/s3c-camif/built-in.a
AR drivers/media/platform/samsung/s5p-g2d/built-in.a
AR drivers/media/platform/samsung/s5p-jpeg/built-in.a
AR drivers/media/platform/samsung/s5p-mfc/built-in.a
AR drivers/media/platform/samsung/built-in.a
CC kernel/trace/trace_eprobe.o
AR drivers/media/platform/st/sti/bdisp/built-in.a
CC drivers/usb/storage/scsiglue.o
AR drivers/media/platform/st/sti/c8sectpfe/built-in.a
AR drivers/media/platform/st/sti/delta/built-in.a
CC [M] net/netfilter/xt_MASQUERADE.o
CC drivers/usb/mon/mon_bin.o
AR drivers/media/platform/st/sti/hva/built-in.a
AR drivers/media/platform/st/stm32/built-in.a
AR drivers/media/platform/st/built-in.a
CC net/sunrpc/stats.o
AR drivers/media/platform/sunxi/sun4i-csi/built-in.a
AR drivers/media/platform/sunxi/sun6i-csi/built-in.a
CC net/mac80211/spectmgmt.o
CC drivers/input/mouse/alps.o
AR drivers/media/platform/sunxi/sun6i-mipi-csi2/built-in.a
AR drivers/media/platform/sunxi/sun8i-a83t-mipi-csi2/built-in.a
CC drivers/pcmcia/rsrc_nonstatic.o
AR drivers/media/platform/sunxi/sun8i-di/built-in.a
AR drivers/media/platform/sunxi/sun8i-rotate/built-in.a
AR drivers/media/platform/sunxi/built-in.a
CC net/core/net-traces.o
CC drivers/rtc/rtc-mc146818-lib.o
AR drivers/media/platform/ti/am437x/built-in.a
AR drivers/media/platform/ti/cal/built-in.a
CC arch/x86/kernel/smp.o
AR drivers/media/platform/ti/vpe/built-in.a
CC mm/process_vm_access.o
AR drivers/media/platform/ti/davinci/built-in.a
AR drivers/media/platform/ti/j721e-csi2rx/built-in.a
CC drivers/acpi/acpica/rscalc.o
AR drivers/media/platform/verisilicon/built-in.a
CC net/core/selftests.o
AR drivers/media/platform/ti/omap/built-in.a
CC drivers/ata/pata_mpiix.o
CC net/ipv4/devinet.o
AR drivers/media/platform/ti/omap3isp/built-in.a
AR drivers/media/platform/ti/built-in.a
AR drivers/media/platform/via/built-in.a
AR drivers/media/platform/xilinx/built-in.a
AR drivers/media/platform/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc.o
AR drivers/media/pci/ttpci/built-in.a
AR drivers/media/pci/b2c2/built-in.a
AR drivers/media/pci/pluto2/built-in.a
AR drivers/media/pci/dm1105/built-in.a
AR drivers/media/pci/pt1/built-in.a
AR drivers/media/pci/pt3/built-in.a
AR drivers/media/pci/mantis/built-in.a
AR drivers/media/usb/b2c2/built-in.a
AR drivers/media/pci/ngene/built-in.a
AR drivers/media/pci/ddbridge/built-in.a
AR drivers/media/usb/dvb-usb/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gsc_debugfs.o
AR drivers/media/pci/saa7146/built-in.a
AR drivers/media/usb/dvb-usb-v2/built-in.a
AR drivers/input/misc/built-in.a
AR drivers/media/pci/smipcie/built-in.a
AR drivers/media/usb/s2255/built-in.a
AR drivers/media/usb/siano/built-in.a
AR drivers/media/pci/netup_unidvb/built-in.a
CC arch/x86/kernel/smpboot.o
AR drivers/media/usb/ttusb-budget/built-in.a
AR drivers/media/pci/intel/ipu3/built-in.a
AR drivers/media/usb/ttusb-dec/built-in.a
CC fs/ioctl.o
AR drivers/media/usb/built-in.a
AR drivers/media/pci/intel/ivsc/built-in.a
CC arch/x86/kernel/tsc_sync.o
AR drivers/media/pci/intel/built-in.a
CC arch/x86/kernel/setup_percpu.o
CC drivers/usb/storage/protocol.o
CC drivers/usb/core/file.o
AR drivers/media/pci/built-in.a
CC fs/readdir.o
AR drivers/media/mmc/siano/built-in.a
AR drivers/media/mmc/built-in.a
AR drivers/media/firewire/built-in.a
AR drivers/media/spi/built-in.a
CC fs/nfs/nfs3client.o
AR drivers/media/test-drivers/built-in.a
AR drivers/media/built-in.a
CC kernel/workqueue.o
CC kernel/pid.o
CC kernel/task_work.o
AR drivers/pps/clients/built-in.a
AR drivers/pps/generators/built-in.a
CC drivers/acpi/acpica/rscreate.o
CC drivers/pps/pps.o
CC drivers/ptp/ptp_clock.o
CC lib/rhashtable.o
CC drivers/power/supply/power_supply_core.o
CC drivers/gpu/drm/i915/gt/gen2_engine_cs.o
CC drivers/rtc/rtc-cmos.o
CC kernel/extable.o
CC [M] drivers/gpu/drm/xe/xe_gsc_proxy.o
CC drivers/ata/ata_generic.o
CC net/ipv6/xfrm6_state.o
CC mm/page_alloc.o
CC drivers/pcmcia/yenta_socket.o
CC drivers/usb/core/buffer.o
CC drivers/acpi/acpica/rsdumpinfo.o
CC [M] net/netfilter/xt_addrtype.o
CC drivers/scsi/virtio_scsi.o
AR drivers/usb/mon/built-in.a
CC fs/select.o
CC fs/nfs/nfs3proc.o
CC drivers/gpu/drm/drm_displayid.o
AR drivers/net/ethernet/cisco/built-in.a
CC drivers/gpu/drm/drm_drv.o
CC net/mac80211/tx.o
CC drivers/usb/storage/transport.o
CC drivers/usb/storage/usb.o
CC kernel/trace/trace_kprobe.o
CC kernel/params.o
CC drivers/pps/kapi.o
CC fs/ext4/xattr.o
CC drivers/power/supply/power_supply_sysfs.o
CC fs/nfs/nfs3xdr.o
AR drivers/usb/misc/built-in.a
CC lib/base64.o
CC drivers/acpi/acpica/rsinfo.o
CC drivers/usb/core/sysfs.o
CC net/ipv4/af_inet.o
CC net/mac80211/key.o
CC drivers/i2c/i2c-core-acpi.o
CC net/sunrpc/sysctl.o
CC drivers/acpi/pci_irq.o
CC drivers/power/supply/power_supply_leds.o
CC kernel/kthread.o
AR drivers/net/ethernet/cortina/built-in.a
CC drivers/input/mouse/byd.o
CC drivers/input/mouse/logips2pp.o
CC arch/x86/kernel/mpparse.o
CC drivers/ptp/ptp_chardev.o
CC lib/once.o
CC [M] drivers/gpu/drm/xe/xe_gsc_submit.o
CC drivers/acpi/acpica/rsio.o
CC kernel/sys_ni.o
AR drivers/ata/built-in.a
CC drivers/power/supply/power_supply_hwmon.o
CC drivers/acpi/acpi_apd.o
CC mm/page_frag_cache.o
CC mm/init-mm.o
AR drivers/rtc/built-in.a
CC drivers/scsi/sd.o
CC drivers/pps/sysfs.o
CC drivers/gpu/drm/i915/gt/gen6_engine_cs.o
CC drivers/usb/early/ehci-dbgp.o
CC net/ipv6/xfrm6_input.o
CC lib/refcount.o
CC drivers/acpi/acpica/rsirq.o
CC lib/rcuref.o
CC drivers/acpi/acpica/rslist.o
CC drivers/usb/host/ohci-hcd.o
CC net/ipv6/xfrm6_output.o
CC mm/memblock.o
CC drivers/hwmon/hwmon.o
CC drivers/usb/storage/initializers.o
AR drivers/pps/built-in.a
CC kernel/nsproxy.o
AR drivers/power/supply/built-in.a
AR drivers/net/ethernet/dec/tulip/built-in.a
AR drivers/net/ethernet/dlink/built-in.a
AR drivers/power/built-in.a
AR drivers/net/ethernet/emulex/built-in.a
AR drivers/net/ethernet/dec/built-in.a
CC drivers/ptp/ptp_sysfs.o
CC net/core/ptp_classifier.o
CC drivers/usb/storage/sierra_ms.o
CC kernel/trace/error_report-traces.o
AR drivers/pcmcia/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt.o
CC drivers/input/input.o
CC net/mac80211/util.o
CC fs/ext4/xattr_hurd.o
CC drivers/input/mouse/lifebook.o
CC lib/usercopy.o
AR net/netfilter/built-in.a
CC drivers/net/net_failover.o
CC drivers/i2c/i2c-smbus.o
CC drivers/usb/core/endpoint.o
CC lib/errseq.o
CC drivers/input/mouse/trackpoint.o
CC drivers/gpu/drm/i915/gt/gen6_ppgtt.o
CC drivers/acpi/acpica/rsmemory.o
CC arch/x86/kernel/trace_clock.o
CC drivers/usb/host/ohci-pci.o
CC drivers/gpu/drm/drm_dumb_buffers.o
AR net/sunrpc/built-in.a
CC fs/nfs/nfs3acl.o
CC net/ipv4/igmp.o
CC lib/bucket_locks.o
CC kernel/trace/power-traces.o
AR drivers/net/ethernet/engleder/built-in.a
CC fs/ext4/xattr_trusted.o
CC arch/x86/kernel/trace.o
CC arch/x86/kernel/rethook.o
CC drivers/acpi/acpica/rsmisc.o
CC drivers/input/input-compat.o
CC drivers/acpi/acpi_platform.o
AR drivers/usb/early/built-in.a
CC drivers/scsi/sr.o
CC drivers/input/mouse/cypress_ps2.o
CC drivers/usb/storage/option_ms.o
CC drivers/usb/core/devio.o
CC mm/slub.o
CC fs/nfs/nfs4proc.o
CC kernel/trace/rpm-traces.o
CC arch/x86/kernel/vmcore_info_32.o
CC drivers/ptp/ptp_vclock.o
AR drivers/i2c/built-in.a
CC drivers/input/mouse/psmouse-smbus.o
CC fs/dcache.o
CC net/ipv4/fib_frontend.o
CC lib/generic-radix-tree.o
CC drivers/acpi/acpi_pnp.o
CC drivers/acpi/acpica/rsserial.o
AR drivers/net/ethernet/ezchip/built-in.a
CC drivers/ptp/ptp_kvm_x86.o
CC arch/x86/kernel/machine_kexec_32.o
CC drivers/gpu/drm/i915/gt/gen7_renderclear.o
CC drivers/usb/storage/usual-tables.o
AR drivers/thermal/broadcom/built-in.a
AR drivers/thermal/renesas/built-in.a
AR drivers/thermal/samsung/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_ccs_mode.o
CC kernel/notifier.o
CC drivers/thermal/intel/intel_tcc.o
CC drivers/usb/core/notify.o
CC net/ipv6/xfrm6_protocol.o
CC drivers/gpu/drm/i915/gt/gen8_engine_cs.o
CC drivers/gpu/drm/i915/gt/gen8_ppgtt.o
AR drivers/watchdog/built-in.a
CC kernel/trace/trace_dynevent.o
CC drivers/md/md.o
AR drivers/hwmon/built-in.a
CC kernel/trace/trace_probe.o
CC drivers/gpu/drm/drm_edid.o
CC net/ipv4/fib_semantics.o
CC drivers/acpi/acpica/rsutils.o
CC net/core/netprio_cgroup.o
CC drivers/scsi/sr_ioctl.o
CC fs/nfs/nfs4xdr.o
CC lib/bitmap-str.o
CC drivers/thermal/intel/therm_throt.o
CC fs/inode.o
CC drivers/usb/core/generic.o
CC fs/attr.o
CC fs/ext4/xattr_user.o
CC drivers/gpu/drm/i915/gt/intel_breadcrumbs.o
CC drivers/usb/host/uhci-hcd.o
CC drivers/input/input-mt.o
CC mm/madvise.o
AR drivers/usb/storage/built-in.a
CC drivers/gpu/drm/drm_eld.o
AR drivers/input/mouse/built-in.a
CC net/ipv4/fib_trie.o
CC fs/ext4/fast_commit.o
CC lib/string_helpers.o
CC drivers/ptp/ptp_kvm_common.o
CC net/ipv4/fib_notifier.o
AS arch/x86/kernel/relocate_kernel_32.o
AR drivers/net/ethernet/broadcom/built-in.a
CC net/ipv4/inet_fragment.o
CC fs/ext4/orphan.o
AR drivers/net/ethernet/fujitsu/built-in.a
CC arch/x86/kernel/crash_dump_32.o
CC drivers/acpi/acpica/rsxface.o
AR drivers/net/ethernet/fungible/built-in.a
AR drivers/net/ethernet/google/built-in.a
AR drivers/net/ethernet/hisilicon/built-in.a
AR drivers/net/ethernet/huawei/built-in.a
CC fs/ext4/acl.o
AR drivers/net/ethernet/i825xx/built-in.a
CC drivers/net/ethernet/intel/e1000/e1000_main.o
CC net/core/netclassid_cgroup.o
CC [M] drivers/gpu/drm/xe/xe_gt_clock.o
CC kernel/ksysfs.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.o
CC fs/nfs/nfs4state.o
CC net/ipv4/ping.o
CC net/mac80211/parse.o
CC fs/ext4/xattr_security.o
CC drivers/input/input-poller.o
CC drivers/net/ethernet/intel/e1000/e1000_hw.o
CC drivers/acpi/acpica/tbdata.o
CC drivers/scsi/sr_vendor.o
CC drivers/gpu/drm/drm_encoder.o
CC net/ipv6/netfilter.o
CC drivers/acpi/power.o
CC drivers/usb/host/xhci.o
CC arch/x86/kernel/crash.o
CC [M] drivers/gpu/drm/xe/xe_gt_freq.o
AR drivers/ptp/built-in.a
CC drivers/net/ethernet/intel/e1000/e1000_ethtool.o
CC drivers/md/md-bitmap.o
CC drivers/input/ff-core.o
CC drivers/usb/core/quirks.o
CC drivers/acpi/event.o
CC lib/hexdump.o
CC net/ipv6/proc.o
CC net/mac80211/wme.o
CC kernel/trace/trace_uprobe.o
CC drivers/net/ethernet/intel/e1000e/82571.o
CC drivers/net/ethernet/intel/e100.o
CC kernel/cred.o
CC drivers/acpi/acpica/tbfadt.o
AR drivers/thermal/intel/built-in.a
CC drivers/net/ethernet/intel/e1000/e1000_param.o
AR drivers/thermal/st/built-in.a
AR drivers/thermal/qcom/built-in.a
AR drivers/thermal/tegra/built-in.a
CC lib/kstrtox.o
CC drivers/net/ethernet/intel/e1000e/ich8lan.o
AR drivers/thermal/mediatek/built-in.a
CC drivers/thermal/thermal_core.o
CC net/core/dst_cache.o
CC drivers/cpufreq/cpufreq.o
CC drivers/gpu/drm/i915/gt/intel_context.o
CC arch/x86/kernel/module.o
CC net/ipv6/syncookies.o
CC net/core/gro_cells.o
CC drivers/scsi/sg.o
CC [M] drivers/gpu/drm/xe/xe_gt_idle.o
CC arch/x86/kernel/doublefault_32.o
CC drivers/cpufreq/freq_table.o
CC drivers/acpi/acpica/tbfind.o
CC net/ipv4/ip_tunnel_core.o
CC drivers/input/touchscreen.o
CC kernel/trace/rethook.o
CC drivers/usb/core/devices.o
CC lib/iomap.o
CC net/mac80211/chan.o
CC drivers/usb/host/xhci-mem.o
CC net/ipv4/gre_offload.o
CC drivers/net/ethernet/intel/e1000e/80003es2lan.o
CC drivers/acpi/acpica/tbinstal.o
CC drivers/gpu/drm/i915/gt/intel_context_sseu.o
CC fs/bad_inode.o
CC net/core/failover.o
CC arch/x86/kernel/early_printk.o
CC drivers/cpuidle/governors/menu.o
CC drivers/gpu/drm/drm_file.o
CC drivers/input/ff-memless.o
CC drivers/cpuidle/cpuidle.o
CC fs/nfs/nfs4renewd.o
AR drivers/net/ethernet/microsoft/built-in.a
CC fs/file.o
CC mm/page_io.o
CC drivers/usb/host/xhci-ext-caps.o
CC lib/iomap_copy.o
CC drivers/acpi/acpica/tbprint.o
CC [M] drivers/gpu/drm/xe/xe_gt_mcr.o
CC drivers/usb/core/phy.o
CC drivers/usb/host/xhci-ring.o
CC drivers/gpu/drm/drm_fourcc.o
AR fs/ext4/built-in.a
CC lib/devres.o
CC [M] drivers/gpu/drm/xe/xe_gt_pagefault.o
CC drivers/gpu/drm/i915/gt/intel_engine_cs.o
CC drivers/cpuidle/governors/haltpoll.o
CC drivers/md/md-autodetect.o
CC drivers/gpu/drm/i915/gt/intel_engine_heartbeat.o
CC drivers/thermal/thermal_sysfs.o
CC arch/x86/kernel/hpet.o
CC drivers/cpufreq/cpufreq_performance.o
CC net/ipv6/calipso.o
CC drivers/input/sparse-keymap.o
CC drivers/input/vivaldi-fmap.o
AR drivers/net/ethernet/litex/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_sysfs.o
CC drivers/acpi/evged.o
CC net/ipv4/metrics.o
CC drivers/acpi/acpica/tbutils.o
CC arch/x86/kernel/amd_nb.o
CC net/ipv6/ah6.o
CC kernel/reboot.o
CC drivers/scsi/scsi_sysfs.o
CC lib/check_signature.o
AR kernel/trace/built-in.a
CC drivers/acpi/acpica/tbxface.o
CC drivers/acpi/acpica/tbxfload.o
CC drivers/cpufreq/cpufreq_userspace.o
AR drivers/net/ethernet/marvell/octeon_ep/built-in.a
AR drivers/net/ethernet/marvell/octeon_ep_vf/built-in.a
AR drivers/net/ethernet/marvell/octeontx2/built-in.a
CC drivers/net/ethernet/intel/e1000e/mac.o
CC drivers/net/ethernet/marvell/sky2.o
AR drivers/net/ethernet/marvell/prestera/built-in.a
CC drivers/usb/host/xhci-hub.o
CC fs/filesystems.o
AR net/core/built-in.a
CC kernel/async.o
CC net/mac80211/trace.o
CC lib/interval_tree.o
CC drivers/usb/core/port.o
CC drivers/gpu/drm/drm_framebuffer.o
CC drivers/thermal/thermal_trip.o
CC drivers/md/dm.o
CC arch/x86/kernel/kvm.o
CC net/ipv6/esp6.o
AR drivers/net/ethernet/intel/e1000/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_throttle.o
CC drivers/net/ethernet/intel/e1000e/manage.o
CC drivers/gpu/drm/i915/gt/intel_engine_pm.o
CC drivers/input/input-leds.o
CC drivers/input/evdev.o
CC drivers/acpi/sysfs.o
AR drivers/net/ethernet/mellanox/built-in.a
CC [M] drivers/gpu/drm/xe/xe_gt_tlb_invalidation.o
CC drivers/usb/core/hcd-pci.o
CC mm/swap_state.o
CC lib/assoc_array.o
CC net/ipv6/sit.o
CC drivers/md/dm-table.o
CC drivers/acpi/acpica/tbxfroot.o
CC drivers/usb/host/xhci-dbg.o
CC drivers/cpufreq/cpufreq_ondemand.o
CC drivers/gpu/drm/i915/gt/intel_engine_user.o
AR drivers/cpuidle/governors/built-in.a
AR drivers/mmc/built-in.a
CC net/mac80211/mlme.o
CC drivers/cpuidle/driver.o
CC drivers/net/ethernet/intel/e1000e/nvm.o
CC net/ipv6/addrconf_core.o
CC fs/nfs/nfs4super.o
CC drivers/thermal/thermal_helpers.o
CC fs/namespace.o
CC fs/nfs/nfs4file.o
CC drivers/usb/host/xhci-trace.o
CC net/mac80211/tdls.o
CC drivers/acpi/acpica/utaddress.o
CC drivers/acpi/acpica/utalloc.o
CC drivers/net/ethernet/intel/e1000e/phy.o
CC drivers/cpufreq/cpufreq_governor.o
CC fs/nfs/delegation.o
CC fs/seq_file.o
CC kernel/range.o
CC net/ipv4/netlink.o
CC mm/swapfile.o
CC arch/x86/kernel/kvmclock.o
CC drivers/md/dm-target.o
CC drivers/cpuidle/governor.o
CC kernel/smpboot.o
CC drivers/thermal/thermal_thresholds.o
AR drivers/ufs/built-in.a
CC drivers/thermal/thermal_hwmon.o
CC lib/bitrev.o
CC drivers/usb/core/usb-acpi.o
AR drivers/scsi/built-in.a
CC arch/x86/kernel/paravirt.o
CC arch/x86/kernel/pvclock.o
AR drivers/firmware/arm_ffa/built-in.a
CC drivers/acpi/acpica/utascii.o
AR drivers/firmware/arm_scmi/built-in.a
AR drivers/firmware/broadcom/built-in.a
AR drivers/firmware/cirrus/built-in.a
CC net/mac80211/ocb.o
AR drivers/firmware/meson/built-in.a
CC net/mac80211/airtime.o
CC net/ipv4/nexthop.o
AR drivers/firmware/microchip/built-in.a
CC mm/swap_slots.o
AR drivers/input/built-in.a
AR drivers/net/ethernet/meta/built-in.a
CC drivers/md/dm-linear.o
CC drivers/firmware/efi/libstub/efi-stub-helper.o
CC drivers/gpu/drm/drm_gem.o
CC drivers/thermal/gov_step_wise.o
CC drivers/cpuidle/sysfs.o
CC [M] drivers/gpu/drm/xe/xe_gt_topology.o
CC lib/crc-ccitt.o
CC arch/x86/kernel/pcspeaker.o
CC drivers/firmware/efi/efi-bgrt.o
CC drivers/cpufreq/cpufreq_governor_attr_set.o
CC drivers/acpi/acpica/utbuffer.o
CC net/ipv4/udp_tunnel_stub.o
CC net/ipv6/exthdrs_core.o
CC kernel/ucount.o
CC drivers/md/dm-stripe.o
CC drivers/gpu/drm/i915/gt/intel_execlists_submission.o
CC net/mac80211/eht.o
CC fs/xattr.o
CC mm/dmapool.o
CC fs/nfs/nfs4idmap.o
CC kernel/regset.o
CC kernel/ksyms_common.o
CC drivers/cpuidle/poll_state.o
CC mm/hugetlb.o
CC drivers/net/ethernet/intel/e1000e/param.o
CC drivers/thermal/gov_user_space.o
CC lib/crc16.o
AR drivers/crypto/stm32/built-in.a
CC drivers/cpufreq/acpi-cpufreq.o
CC net/ipv6/ip6_checksum.o
AR drivers/crypto/xilinx/built-in.a
CC drivers/net/ethernet/intel/e1000e/ethtool.o
AR drivers/crypto/hisilicon/built-in.a
AR drivers/usb/core/built-in.a
CC drivers/acpi/property.o
CC drivers/md/dm-ioctl.o
AR drivers/crypto/intel/keembay/built-in.a
CC drivers/acpi/acpica/utcksum.o
CC arch/x86/kernel/check.o
AR drivers/crypto/intel/ixp4xx/built-in.a
AR drivers/crypto/intel/built-in.a
AR drivers/crypto/starfive/built-in.a
AR drivers/crypto/built-in.a
CC drivers/clocksource/acpi_pm.o
CC drivers/firmware/efi/efi.o
CC drivers/firmware/efi/libstub/gop.o
HOSTCC lib/gen_crc32table
CC lib/xxhash.o
AR drivers/net/ethernet/micrel/built-in.a
CC drivers/gpu/drm/i915/gt/intel_ggtt.o
CC drivers/cpuidle/cpuidle-haltpoll.o
CC drivers/clocksource/i8253.o
CC mm/mmu_notifier.o
CC fs/libfs.o
AR drivers/net/ethernet/microchip/built-in.a
CC fs/fs-writeback.o
CC drivers/hid/usbhid/hid-core.o
CC arch/x86/kernel/uprobes.o
CC drivers/acpi/debugfs.o
CC fs/nfs/callback.o
AR drivers/thermal/built-in.a
CC fs/pnode.o
CC [M] drivers/gpu/drm/xe/xe_guc.o
CC drivers/acpi/acpica/utcopy.o
CC drivers/hid/usbhid/hiddev.o
CC net/mac80211/led.o
CC kernel/groups.o
CC drivers/gpu/drm/drm_ioctl.o
AR drivers/firmware/imx/built-in.a
CC drivers/gpu/drm/drm_lease.o
CC [M] drivers/gpu/drm/xe/xe_guc_ads.o
AR drivers/cpuidle/built-in.a
CC arch/x86/kernel/perf_regs.o
CC drivers/md/dm-io.o
CC drivers/md/dm-kcopyd.o
CC drivers/hid/usbhid/hid-pidff.o
CC net/mac80211/pm.o
CC lib/genalloc.o
AR drivers/clocksource/built-in.a
CC drivers/usb/host/xhci-debugfs.o
CC drivers/cpufreq/amd-pstate.o
CC drivers/firmware/efi/vars.o
CC drivers/firmware/efi/libstub/secureboot.o
CC drivers/acpi/acpica/utexcep.o
CC drivers/gpu/drm/drm_managed.o
CC fs/nfs/callback_xdr.o
CC drivers/firmware/efi/libstub/tpm.o
AR drivers/net/ethernet/marvell/built-in.a
CC net/ipv6/ip6_icmp.o
AR drivers/firmware/psci/built-in.a
CC drivers/firmware/efi/libstub/file.o
CC net/ipv6/output_core.o
CC drivers/cpufreq/amd-pstate-trace.o
AR drivers/platform/x86/amd/built-in.a
CC net/ipv4/ip_tunnel.o
AR drivers/platform/x86/intel/built-in.a
CC net/ipv4/sysctl_net_ipv4.o
CC drivers/platform/x86/wmi.o
CC net/mac80211/rc80211_minstrel_ht.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_fencing.o
CC drivers/acpi/acpica/utdebug.o
CC drivers/net/ethernet/intel/e1000e/netdev.o
CC kernel/kcmp.o
CC arch/x86/kernel/tracepoint.o
CC fs/nfs/callback_proc.o
CC lib/percpu_counter.o
CC drivers/firmware/efi/libstub/mem.o
CC [M] drivers/gpu/drm/xe/xe_guc_capture.o
CC drivers/md/dm-sysfs.o
CC kernel/freezer.o
AR drivers/firmware/qcom/built-in.a
AR drivers/platform/surface/built-in.a
CC fs/splice.o
CC drivers/cpufreq/intel_pstate.o
CC drivers/md/dm-stats.o
CC drivers/gpu/drm/i915/gt/intel_gt.o
CC net/ipv6/protocol.o
CC drivers/acpi/acpica/utdecode.o
CC drivers/gpu/drm/drm_mm.o
CC drivers/net/ethernet/intel/e1000e/ptp.o
CC fs/nfs/nfs4namespace.o
CC fs/nfs/nfs4getroot.o
CC [M] drivers/gpu/drm/xe/xe_guc_ct.o
CC mm/migrate.o
CC arch/x86/kernel/itmt.o
CC kernel/profile.o
CC fs/sync.o
CC drivers/usb/host/xhci-pci.o
AR drivers/firmware/smccc/built-in.a
AR drivers/net/ethernet/mscc/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.o
CC mm/page_counter.o
CC net/ipv6/ip6_offload.o
CC drivers/acpi/acpica/utdelete.o
CC drivers/mailbox/mailbox.o
CC kernel/stacktrace.o
AR drivers/hid/usbhid/built-in.a
CC drivers/hid/hid-core.o
CC lib/audit.o
CC drivers/gpu/drm/i915/gt/intel_gt_ccs_mode.o
CC drivers/hid/hid-input.o
CC arch/x86/kernel/umip.o
AR drivers/net/ethernet/myricom/built-in.a
CC drivers/platform/x86/wmi-bmof.o
CC drivers/gpu/drm/i915/gt/intel_gt_clock_utils.o
CC drivers/firmware/efi/libstub/random.o
CC drivers/gpu/drm/drm_mode_config.o
CC mm/hugetlb_cgroup.o
CC drivers/mailbox/pcc.o
CC lib/syscall.o
CC drivers/acpi/acpi_lpat.o
CC fs/nfs/nfs4client.o
CC drivers/acpi/acpica/uterror.o
CC drivers/firmware/efi/reboot.o
CC drivers/hid/hid-quirks.o
AR drivers/firmware/tegra/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_db_mgr.o
CC drivers/platform/x86/eeepc-laptop.o
CC net/ipv4/proc.o
CC net/ipv4/fib_rules.o
CC kernel/dma.o
CC mm/early_ioremap.o
CC net/ipv6/tcpv6_offload.o
CC drivers/acpi/acpi_pcc.o
CC drivers/acpi/ac.o
CC drivers/gpu/drm/drm_mode_object.o
CC [M] drivers/gpu/drm/xe/xe_guc_hwconfig.o
CC drivers/gpu/drm/i915/gt/intel_gt_debugfs.o
AR drivers/net/ethernet/natsemi/built-in.a
CC kernel/smp.o
CC drivers/acpi/acpica/uteval.o
CC drivers/firmware/efi/libstub/randomalloc.o
CC net/mac80211/wbrf.o
CC lib/errname.o
CC net/ipv6/exthdrs_offload.o
AR drivers/mailbox/built-in.a
CC drivers/hid/hid-debug.o
CC lib/nlattr.o
CC arch/x86/kernel/unwind_frame.o
CC drivers/firmware/efi/libstub/pci.o
CC drivers/hid/hidraw.o
AR drivers/perf/built-in.a
CC fs/utimes.o
CC drivers/md/dm-rq.o
CC fs/d_path.o
CC drivers/firmware/efi/libstub/skip_spaces.o
CC kernel/uid16.o
AR drivers/firmware/xilinx/built-in.a
CC drivers/acpi/acpica/utglobal.o
CC lib/cpu_rmap.o
CC net/ipv6/inet6_hashtables.o
CC drivers/hid/hid-generic.o
CC fs/nfs/nfs4session.o
CC drivers/hid/hid-a4tech.o
CC drivers/firmware/efi/memattr.o
CC net/ipv6/mcast_snoop.o
AR drivers/hwtracing/intel_th/built-in.a
CC drivers/hid/hid-apple.o
CC drivers/firmware/efi/libstub/lib-cmdline.o
CC drivers/firmware/efi/tpm.o
CC drivers/firmware/efi/memmap.o
CC drivers/gpu/drm/drm_modes.o
CC fs/stack.o
AR drivers/net/ethernet/neterion/built-in.a
AR drivers/net/ethernet/netronome/built-in.a
CC fs/nfs/dns_resolve.o
CC kernel/kallsyms.o
AR drivers/usb/host/built-in.a
AR drivers/usb/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_engines_debugfs.o
CC mm/secretmem.o
CC drivers/acpi/button.o
CC drivers/firmware/efi/capsule.o
CC drivers/acpi/acpica/uthex.o
CC net/ipv4/ipmr.o
CC drivers/platform/x86/p2sb.o
CC drivers/gpu/drm/drm_modeset_lock.o
CC [M] drivers/gpu/drm/xe/xe_guc_id_mgr.o
AR drivers/net/ethernet/ni/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_klv_helpers.o
AR arch/x86/kernel/built-in.a
CC drivers/firmware/efi/libstub/lib-ctype.o
AR drivers/cpufreq/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gt_irq.o
CC fs/nfs/nfs4trace.o
AR arch/x86/built-in.a
CC drivers/firmware/efi/libstub/alignedmem.o
CC drivers/hid/hid-belkin.o
CC drivers/firmware/dmi_scan.o
CC fs/nfs/nfs4sysctl.o
CC drivers/hid/hid-cherry.o
CC drivers/acpi/fan_core.o
CC drivers/firmware/efi/esrt.o
CC mm/hmm.o
CC drivers/acpi/acpica/utids.o
CC drivers/md/dm-io-rewind.o
CC [M] drivers/gpu/drm/xe/xe_guc_log.o
CC fs/fs_struct.o
CC drivers/firmware/efi/runtime-wrappers.o
CC lib/dynamic_queue_limits.o
CC drivers/gpu/drm/i915/gt/intel_gt_mcr.o
CC drivers/hid/hid-chicony.o
CC mm/memfd.o
CC mm/ptdump.o
CC drivers/md/dm-builtin.o
CC lib/glob.o
CC drivers/firmware/efi/libstub/relocate.o
CC net/ipv4/ipmr_base.o
CC drivers/net/ethernet/nvidia/forcedeth.o
CC drivers/firmware/dmi-id.o
CC drivers/hid/hid-cypress.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm.o
CC drivers/firmware/efi/capsule-loader.o
CC drivers/firmware/efi/libstub/printk.o
CC drivers/md/dm-raid1.o
CC drivers/firmware/efi/earlycon.o
AR drivers/platform/x86/built-in.a
AR drivers/platform/built-in.a
CC fs/statfs.o
CC drivers/acpi/acpica/utinit.o
AR drivers/net/ethernet/oki-semi/built-in.a
CC [M] drivers/gpu/drm/xe/xe_guc_pc.o
AR drivers/net/ethernet/packetengines/built-in.a
CC net/ipv4/syncookies.o
CC net/ipv4/tunnel4.o
CC fs/fs_pin.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_debugfs.o
CC drivers/md/dm-log.o
CC drivers/acpi/fan_attr.o
CC drivers/gpu/drm/drm_plane.o
AR drivers/net/ethernet/qlogic/built-in.a
CC mm/execmem.o
CC drivers/firmware/memmap.o
CC drivers/hid/hid-ezkey.o
CC net/ipv4/ipconfig.o
CC net/ipv4/netfilter.o
CC drivers/acpi/acpica/utlock.o
CC kernel/acct.o
CC drivers/md/dm-region-hash.o
AR net/ipv6/built-in.a
CC lib/strncpy_from_user.o
CC drivers/acpi/acpica/utmath.o
CC kernel/vmcore_info.o
CC drivers/gpu/drm/i915/gt/intel_gt_pm_irq.o
AR drivers/net/ethernet/qualcomm/emac/built-in.a
AR drivers/net/ethernet/qualcomm/built-in.a
CC drivers/gpu/drm/drm_prime.o
CC drivers/firmware/efi/libstub/vsprintf.o
CC lib/strnlen_user.o
CC drivers/acpi/acpica/utmisc.o
CC fs/nsfs.o
AR drivers/android/built-in.a
CC fs/fs_types.o
CC net/ipv4/tcp_cubic.o
CC drivers/gpu/drm/drm_print.o
CC drivers/acpi/fan_hwmon.o
CC drivers/md/dm-zero.o
CC [M] drivers/gpu/drm/xe/xe_guc_submit.o
CC fs/fs_context.o
CC drivers/acpi/acpica/utmutex.o
CC net/ipv4/tcp_sigpool.o
CC drivers/firmware/efi/libstub/x86-stub.o
AR drivers/nvmem/layouts/built-in.a
CC drivers/nvmem/core.o
CC lib/net_utils.o
CC drivers/acpi/acpi_video.o
CC [M] drivers/gpu/drm/xe/xe_heci_gsc.o
CC kernel/elfcorehdr.o
CC fs/fs_parser.o
CC net/ipv4/cipso_ipv4.o
CC drivers/gpu/drm/i915/gt/intel_gt_requests.o
CC lib/sg_pool.o
CC drivers/acpi/video_detect.o
CC kernel/crash_reserve.o
CC drivers/net/ethernet/realtek/8139too.o
AR mm/built-in.a
CC drivers/hid/hid-gyration.o
CC lib/stackdepot.o
CC drivers/firmware/efi/libstub/smbios.o
CC drivers/acpi/acpica/utnonansi.o
AR drivers/net/ethernet/renesas/built-in.a
CC net/ipv4/xfrm4_policy.o
CC net/ipv4/xfrm4_state.o
CC net/ipv4/xfrm4_input.o
CC kernel/kexec_core.o
CC drivers/net/ethernet/realtek/r8169_main.o
CC kernel/crash_core.o
CC drivers/hid/hid-ite.o
CC net/ipv4/xfrm4_output.o
AR drivers/firmware/efi/built-in.a
STUBCPY drivers/firmware/efi/libstub/alignedmem.stub.o
STUBCPY drivers/firmware/efi/libstub/efi-stub-helper.stub.o
CC drivers/acpi/acpica/utobject.o
CC drivers/acpi/acpica/utosi.o
CC drivers/hid/hid-kensington.o
AR drivers/md/built-in.a
CC drivers/gpu/drm/drm_property.o
CC kernel/kexec.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs.o
CC drivers/gpu/drm/drm_rect.o
CC drivers/net/ethernet/realtek/r8169_firmware.o
CC drivers/acpi/processor_driver.o
CC drivers/gpu/drm/i915/gt/intel_gt_sysfs_pm.o
AR drivers/net/ethernet/rdc/built-in.a
CC drivers/gpu/drm/i915/gt/intel_gtt.o
AR drivers/net/ethernet/rocker/built-in.a
CC drivers/acpi/processor_thermal.o
CC drivers/acpi/acpica/utownerid.o
CC drivers/gpu/drm/drm_syncobj.o
CC drivers/hid/hid-lg.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine.o
CC drivers/net/ethernet/realtek/r8169_phy_config.o
CC kernel/utsname.o
CC kernel/pid_namespace.o
CC net/ipv4/xfrm4_protocol.o
STUBCPY drivers/firmware/efi/libstub/file.stub.o
STUBCPY drivers/firmware/efi/libstub/gop.stub.o
STUBCPY drivers/firmware/efi/libstub/lib-cmdline.stub.o
CC kernel/stop_machine.o
STUBCPY drivers/firmware/efi/libstub/lib-ctype.stub.o
AR drivers/net/ethernet/samsung/built-in.a
STUBCPY drivers/firmware/efi/libstub/mem.stub.o
CC [M] drivers/gpu/drm/xe/xe_hw_engine_class_sysfs.o
CC fs/fsopen.o
AR drivers/net/ethernet/seeq/built-in.a
STUBCPY drivers/firmware/efi/libstub/pci.stub.o
CC kernel/audit.o
STUBCPY drivers/firmware/efi/libstub/printk.stub.o
STUBCPY drivers/firmware/efi/libstub/random.stub.o
CC drivers/hid/hid-lgff.o
CC drivers/gpu/drm/i915/gt/intel_llc.o
STUBCPY drivers/firmware/efi/libstub/randomalloc.stub.o
STUBCPY drivers/firmware/efi/libstub/relocate.stub.o
CC lib/asn1_decoder.o
STUBCPY drivers/firmware/efi/libstub/secureboot.stub.o
STUBCPY drivers/firmware/efi/libstub/skip_spaces.stub.o
STUBCPY drivers/firmware/efi/libstub/smbios.stub.o
STUBCPY drivers/firmware/efi/libstub/tpm.stub.o
AR drivers/net/ethernet/intel/e1000e/built-in.a
STUBCPY drivers/firmware/efi/libstub/vsprintf.stub.o
STUBCPY drivers/firmware/efi/libstub/x86-stub.stub.o
AR drivers/net/ethernet/intel/built-in.a
CC [M] drivers/gpu/drm/xe/xe_hw_engine_group.o
CC kernel/auditfilter.o
CC fs/init.o
AR drivers/firmware/efi/libstub/lib.a
CC drivers/acpi/acpica/utpredef.o
AR drivers/firmware/built-in.a
CC drivers/gpu/drm/i915/gt/intel_lrc.o
AR drivers/nvmem/built-in.a
CC drivers/hid/hid-lg4ff.o
CC [M] drivers/gpu/drm/xe/xe_hw_fence.o
CC drivers/hid/hid-lg-g15.o
CC drivers/acpi/acpica/utresdecode.o
CC fs/kernel_read_file.o
AR drivers/net/ethernet/silan/built-in.a
CC drivers/acpi/acpica/utresrc.o
CC kernel/auditsc.o
CC drivers/gpu/drm/i915/gt/intel_migrate.o
CC drivers/gpu/drm/drm_sysfs.o
GEN lib/oid_registry_data.c
CC [M] drivers/gpu/drm/xe/xe_huc.o
CC drivers/acpi/acpica/utstate.o
AR drivers/net/ethernet/sis/built-in.a
CC [M] drivers/gpu/drm/xe/xe_irq.o
CC drivers/acpi/acpica/utstring.o
CC lib/ucs2_string.o
CC drivers/acpi/acpica/utstrsuppt.o
CC drivers/gpu/drm/drm_trace_points.o
CC kernel/audit_watch.o
AR net/mac80211/built-in.a
CC fs/mnt_idmapping.o
CC kernel/audit_fsnotify.o
CC drivers/gpu/drm/i915/gt/intel_mocs.o
AR drivers/net/ethernet/sfc/built-in.a
CC [M] drivers/gpu/drm/xe/xe_lrc.o
CC drivers/hid/hid-microsoft.o
CC drivers/hid/hid-monterey.o
CC drivers/gpu/drm/drm_vblank.o
CC kernel/audit_tree.o
CC drivers/acpi/processor_idle.o
CC drivers/hid/hid-ntrig.o
CC lib/sbitmap.o
CC drivers/acpi/acpica/utstrtoul64.o
CC kernel/kprobes.o
CC drivers/gpu/drm/drm_vblank_work.o
CC drivers/acpi/processor_throttling.o
CC fs/remap_range.o
CC [M] drivers/gpu/drm/xe/xe_migrate.o
CC drivers/acpi/acpica/utxface.o
CC drivers/gpu/drm/drm_vma_manager.o
CC [M] drivers/gpu/drm/xe/xe_mmio.o
CC fs/pidfs.o
CC kernel/seccomp.o
CC drivers/gpu/drm/i915/gt/intel_ppgtt.o
CC drivers/acpi/processor_perflib.o
CC drivers/acpi/acpica/utxfinit.o
CC drivers/gpu/drm/i915/gt/intel_rc6.o
AR fs/nfs/built-in.a
CC drivers/gpu/drm/drm_writeback.o
CC fs/buffer.o
AR drivers/net/ethernet/smsc/built-in.a
AR net/ipv4/built-in.a
CC fs/mpage.o
AR drivers/net/ethernet/nvidia/built-in.a
CC drivers/hid/hid-pl.o
CC drivers/acpi/container.o
AR net/built-in.a
CC fs/proc_namespace.o
CC drivers/acpi/thermal_lib.o
CC kernel/relay.o
CC drivers/hid/hid-petalynx.o
CC drivers/acpi/thermal.o
CC lib/group_cpus.o
AR drivers/net/ethernet/socionext/built-in.a
CC drivers/acpi/nhlt.o
CC drivers/hid/hid-redragon.o
CC lib/fw_table.o
CC kernel/utsname_sysctl.o
CC drivers/gpu/drm/drm_panel.o
CC fs/direct-io.o
CC drivers/acpi/acpica/utxferror.o
AR drivers/net/ethernet/stmicro/built-in.a
CC drivers/gpu/drm/i915/gt/intel_region_lmem.o
CC kernel/delayacct.o
CC drivers/acpi/acpi_memhotplug.o
CC drivers/acpi/ioapic.o
CC fs/eventpoll.o
CC kernel/taskstats.o
CC drivers/hid/hid-samsung.o
CC drivers/acpi/acpica/utxfmutex.o
CC drivers/acpi/battery.o
AR lib/lib.a
CC drivers/hid/hid-sony.o
AR drivers/net/ethernet/sun/built-in.a
CC fs/anon_inodes.o
CC drivers/gpu/drm/i915/gt/intel_renderstate.o
GEN lib/crc32table.h
CC [M] drivers/gpu/drm/xe/xe_mocs.o
CC drivers/hid/hid-sunplus.o
CC drivers/gpu/drm/drm_pci.o
CC lib/oid_registry.o
CC kernel/tsacct.o
CC drivers/gpu/drm/i915/gt/intel_reset.o
CC kernel/tracepoint.o
AR drivers/net/ethernet/tehuti/built-in.a
CC [M] drivers/gpu/drm/xe/xe_module.o
CC drivers/gpu/drm/i915/gt/intel_ring.o
AR drivers/net/ethernet/ti/built-in.a
CC [M] drivers/gpu/drm/xe/xe_oa.o
CC drivers/gpu/drm/i915/gt/intel_ring_submission.o
AR drivers/net/ethernet/vertexcom/built-in.a
CC kernel/irq_work.o
CC drivers/gpu/drm/i915/gt/intel_rps.o
CC lib/crc32.o
CC drivers/hid/hid-topseed.o
CC [M] drivers/gpu/drm/xe/xe_observation.o
AR drivers/net/ethernet/via/built-in.a
CC drivers/gpu/drm/drm_debugfs.o
CC kernel/static_call.o
CC drivers/gpu/drm/drm_debugfs_crc.o
AR drivers/acpi/acpica/built-in.a
CC drivers/gpu/drm/i915/gt/intel_sa_media.o
CC [M] drivers/gpu/drm/xe/xe_pat.o
CC drivers/gpu/drm/drm_panel_orientation_quirks.o
AR drivers/net/ethernet/wangxun/built-in.a
CC [M] drivers/gpu/drm/xe/xe_pci.o
CC drivers/acpi/bgrt.o
CC fs/signalfd.o
CC drivers/gpu/drm/i915/gt/intel_sseu.o
CC kernel/padata.o
CC drivers/gpu/drm/drm_buddy.o
CC kernel/jump_label.o
AR drivers/net/ethernet/wiznet/built-in.a
CC kernel/context_tracking.o
CC drivers/acpi/spcr.o
CC fs/timerfd.o
CC drivers/gpu/drm/i915/gt/intel_sseu_debugfs.o
CC drivers/gpu/drm/drm_gem_shmem_helper.o
CC drivers/gpu/drm/i915/gt/intel_timeline.o
AR drivers/net/ethernet/xilinx/built-in.a
CC kernel/iomem.o
CC drivers/gpu/drm/drm_atomic_helper.o
CC kernel/rseq.o
CC fs/eventfd.o
AR lib/built-in.a
AR drivers/net/ethernet/xircom/built-in.a
CC drivers/gpu/drm/drm_atomic_state_helper.o
CC drivers/gpu/drm/i915/gt/intel_tlb.o
CC [M] drivers/gpu/drm/xe/xe_pcode.o
CC fs/aio.o
CC drivers/gpu/drm/drm_crtc_helper.o
CC drivers/gpu/drm/drm_damage_helper.o
CC fs/locks.o
AR drivers/net/ethernet/synopsys/built-in.a
CC drivers/gpu/drm/i915/gt/intel_wopcm.o
CC [M] drivers/gpu/drm/xe/xe_pm.o
AR drivers/net/ethernet/pensando/built-in.a
CC drivers/gpu/drm/drm_flip_work.o
AR drivers/net/ethernet/realtek/built-in.a
AR drivers/net/ethernet/built-in.a
CC fs/binfmt_misc.o
CC [M] drivers/gpu/drm/xe/xe_preempt_fence.o
CC drivers/gpu/drm/drm_format_helper.o
CC fs/binfmt_script.o
AR drivers/net/built-in.a
CC fs/binfmt_elf.o
CC fs/mbcache.o
CC drivers/gpu/drm/i915/gt/intel_workarounds.o
CC drivers/gpu/drm/drm_gem_atomic_helper.o
AR drivers/hid/built-in.a
CC [M] drivers/gpu/drm/xe/xe_pt.o
CC drivers/gpu/drm/drm_gem_framebuffer_helper.o
AR drivers/acpi/built-in.a
CC fs/posix_acl.o
CC drivers/gpu/drm/i915/gt/shmem_utils.o
CC fs/coredump.o
CC [M] drivers/gpu/drm/xe/xe_pt_walk.o
CC drivers/gpu/drm/drm_kms_helper_common.o
CC fs/drop_caches.o
CC drivers/gpu/drm/i915/gt/sysfs_engines.o
CC [M] drivers/gpu/drm/xe/xe_query.o
CC fs/sysctls.o
CC drivers/gpu/drm/drm_modeset_helper.o
CC drivers/gpu/drm/i915/gt/intel_ggtt_gmch.o
CC drivers/gpu/drm/i915/gt/gen6_renderstate.o
CC fs/fhandle.o
CC drivers/gpu/drm/drm_plane_helper.o
CC drivers/gpu/drm/i915/gt/gen7_renderstate.o
CC [M] drivers/gpu/drm/xe/xe_range_fence.o
CC drivers/gpu/drm/drm_probe_helper.o
CC drivers/gpu/drm/i915/gt/gen8_renderstate.o
CC drivers/gpu/drm/i915/gt/gen9_renderstate.o
CC drivers/gpu/drm/drm_self_refresh_helper.o
CC [M] drivers/gpu/drm/xe/xe_reg_sr.o
CC drivers/gpu/drm/i915/gem/i915_gem_busy.o
CC drivers/gpu/drm/i915/gem/i915_gem_clflush.o
CC drivers/gpu/drm/i915/gem/i915_gem_context.o
AR kernel/built-in.a
CC [M] drivers/gpu/drm/xe/xe_reg_whitelist.o
CC drivers/gpu/drm/drm_simple_kms_helper.o
CC [M] drivers/gpu/drm/xe/xe_rtp.o
CC drivers/gpu/drm/bridge/panel.o
CC drivers/gpu/drm/i915/gem/i915_gem_create.o
CC [M] drivers/gpu/drm/xe/xe_ring_ops.o
CC drivers/gpu/drm/drm_mipi_dsi.o
CC drivers/gpu/drm/i915/gem/i915_gem_dmabuf.o
CC [M] drivers/gpu/drm/xe/xe_sa.o
CC [M] drivers/gpu/drm/xe/xe_sched_job.o
CC drivers/gpu/drm/i915/gem/i915_gem_domain.o
CC [M] drivers/gpu/drm/drm_exec.o
CC drivers/gpu/drm/i915/gem/i915_gem_execbuffer.o
CC [M] drivers/gpu/drm/drm_gpuvm.o
CC drivers/gpu/drm/i915/gem/i915_gem_internal.o
CC [M] drivers/gpu/drm/xe/xe_step.o
CC drivers/gpu/drm/i915/gem/i915_gem_lmem.o
CC [M] drivers/gpu/drm/xe/xe_sync.o
CC drivers/gpu/drm/i915/gem/i915_gem_mman.o
CC [M] drivers/gpu/drm/drm_suballoc.o
CC drivers/gpu/drm/i915/gem/i915_gem_object.o
CC [M] drivers/gpu/drm/xe/xe_tile.o
CC [M] drivers/gpu/drm/xe/xe_tile_sysfs.o
CC [M] drivers/gpu/drm/xe/xe_trace.o
CC [M] drivers/gpu/drm/drm_gem_ttm_helper.o
CC drivers/gpu/drm/i915/gem/i915_gem_pages.o
CC drivers/gpu/drm/i915/gem/i915_gem_phys.o
CC drivers/gpu/drm/i915/gem/i915_gem_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_region.o
CC [M] drivers/gpu/drm/xe/xe_trace_bo.o
CC drivers/gpu/drm/i915/gem/i915_gem_shmem.o
CC [M] drivers/gpu/drm/xe/xe_trace_guc.o
CC drivers/gpu/drm/i915/gem/i915_gem_shrinker.o
CC [M] drivers/gpu/drm/xe/xe_trace_lrc.o
CC drivers/gpu/drm/i915/gem/i915_gem_stolen.o
CC [M] drivers/gpu/drm/xe/xe_ttm_sys_mgr.o
CC drivers/gpu/drm/i915/gem/i915_gem_throttle.o
CC drivers/gpu/drm/i915/gem/i915_gem_tiling.o
CC [M] drivers/gpu/drm/xe/xe_ttm_stolen_mgr.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm.o
CC [M] drivers/gpu/drm/xe/xe_ttm_vram_mgr.o
LD [M] drivers/gpu/drm/drm_suballoc_helper.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_move.o
CC [M] drivers/gpu/drm/xe/xe_tuning.o
CC [M] drivers/gpu/drm/xe/xe_uc.o
CC drivers/gpu/drm/i915/gem/i915_gem_ttm_pm.o
CC drivers/gpu/drm/i915/gem/i915_gem_userptr.o
CC [M] drivers/gpu/drm/xe/xe_uc_fw.o
CC [M] drivers/gpu/drm/xe/xe_vm.o
CC drivers/gpu/drm/i915/gem/i915_gem_wait.o
CC drivers/gpu/drm/i915/gem/i915_gemfs.o
CC drivers/gpu/drm/i915/i915_active.o
CC [M] drivers/gpu/drm/xe/xe_vram.o
CC [M] drivers/gpu/drm/xe/xe_vram_freq.o
CC [M] drivers/gpu/drm/xe/xe_vsec.o
LD [M] drivers/gpu/drm/drm_ttm_helper.o
CC drivers/gpu/drm/i915/i915_cmd_parser.o
CC [M] drivers/gpu/drm/xe/xe_wait_user_fence.o
CC [M] drivers/gpu/drm/xe/xe_wa.o
CC drivers/gpu/drm/i915/i915_deps.o
CC drivers/gpu/drm/i915/i915_gem.o
CC [M] drivers/gpu/drm/xe/xe_wopcm.o
CC drivers/gpu/drm/i915/i915_gem_evict.o
AR fs/built-in.a
CC drivers/gpu/drm/i915/i915_gem_gtt.o
CC drivers/gpu/drm/i915/i915_gem_ww.o
CC [M] drivers/gpu/drm/xe/xe_hmm.o
CC [M] drivers/gpu/drm/xe/xe_hwmon.o
CC drivers/gpu/drm/i915/i915_query.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf.o
CC [M] drivers/gpu/drm/xe/xe_guc_relay.o
CC drivers/gpu/drm/i915/i915_request.o
CC drivers/gpu/drm/i915/i915_scheduler.o
CC [M] drivers/gpu/drm/xe/xe_memirq.o
CC [M] drivers/gpu/drm/xe/xe_sriov.o
CC [M] drivers/gpu/drm/xe/xe_sriov_vf.o
CC drivers/gpu/drm/i915/i915_trace_points.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_irq.o
CC drivers/gpu/drm/i915/i915_ttm_buddy_manager.o
CC drivers/gpu/drm/i915/i915_vma.o
CC drivers/gpu/drm/i915/i915_vma_resource.o
CC [M] drivers/gpu/drm/xe/display/ext/i915_utils.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.o
CC [M] drivers/gpu/drm/xe/display/intel_bo.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_proxy.o
CC [M] drivers/gpu/drm/xe/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_debugfs.o
CC [M] drivers/gpu/drm/xe/display/intel_fbdev_fb.o
CC drivers/gpu/drm/i915/gt/uc/intel_gsc_uc_heci_cmd_submit.o
CC [M] drivers/gpu/drm/xe/display/xe_display.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc.o
CC [M] drivers/gpu/drm/xe/display/xe_display_misc.o
CC [M] drivers/gpu/drm/xe/display/xe_display_rps.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ads.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_capture.o
CC [M] drivers/gpu/drm/xe/display/xe_display_wa.o
CC [M] drivers/gpu/drm/xe/display/xe_dsb_buffer.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_ct.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_debugfs.o
CC [M] drivers/gpu/drm/xe/display/xe_fb_pin.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_fw.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_hwconfig.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_log_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_rc.o
CC [M] drivers/gpu/drm/xe/display/xe_hdcp_gsc.o
CC [M] drivers/gpu/drm/xe/display/xe_plane_initial.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.o
CC drivers/gpu/drm/i915/gt/uc/intel_guc_submission.o
CC [M] drivers/gpu/drm/xe/display/xe_tdf.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_dram.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_pch.o
CC [M] drivers/gpu/drm/xe/i915-soc/intel_rom.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc.o
CC [M] drivers/gpu/drm/xe/i915-display/icl_dsi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_alpm.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_debugfs.o
CC drivers/gpu/drm/i915/gt/uc/intel_huc_fw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_atomic_plane.o
CC drivers/gpu/drm/i915/gt/uc/intel_uc_fw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_audio.o
CC drivers/gpu/drm/i915/gt/intel_gsc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_backlight.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_bios.o
CC drivers/gpu/drm/i915/i915_hwmon.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_bw.o
CC drivers/gpu/drm/i915/display/hsw_ips.o
CC drivers/gpu/drm/i915/display/i9xx_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cdclk.o
CC drivers/gpu/drm/i915/display/i9xx_display_sr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_color.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_combo_phy.o
CC drivers/gpu/drm/i915/display/i9xx_wm.o
CC drivers/gpu/drm/i915/display/intel_alpm.o
CC drivers/gpu/drm/i915/display/intel_atomic.o
CC drivers/gpu/drm/i915/display/intel_atomic_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_connector.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc.o
CC drivers/gpu/drm/i915/display/intel_audio.o
CC drivers/gpu/drm/i915/display/intel_bios.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/display/intel_bo.o
CC drivers/gpu/drm/i915/display/intel_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cursor.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_cx0_phy.o
CC drivers/gpu/drm/i915/display/intel_cdclk.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi.o
CC drivers/gpu/drm/i915/display/intel_color.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_ddi_buf_trans.o
CC drivers/gpu/drm/i915/display/intel_combo_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display.o
CC drivers/gpu/drm/i915/display/intel_connector.o
CC drivers/gpu/drm/i915/display/intel_crtc.o
CC drivers/gpu/drm/i915/display/intel_crtc_state_dump.o
CC drivers/gpu/drm/i915/display/intel_cursor.o
CC drivers/gpu/drm/i915/display/intel_display.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_conversion.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_device.o
CC drivers/gpu/drm/i915/display/intel_display_conversion.o
CC drivers/gpu/drm/i915/display/intel_display_driver.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_driver.o
CC drivers/gpu/drm/i915/display/intel_display_irq.o
CC drivers/gpu/drm/i915/display/intel_display_params.o
CC drivers/gpu/drm/i915/display/intel_display_power.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_irq.o
CC drivers/gpu/drm/i915/display/intel_display_power_map.o
CC drivers/gpu/drm/i915/display/intel_display_power_well.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_params.o
CC drivers/gpu/drm/i915/display/intel_display_reset.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power.o
CC drivers/gpu/drm/i915/display/intel_display_rps.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_map.o
CC drivers/gpu/drm/i915/display/intel_display_snapshot.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_power_well.o
CC drivers/gpu/drm/i915/display/intel_display_wa.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_trace.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_wa.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/display/intel_dmc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc.o
CC drivers/gpu/drm/i915/display/intel_dmc_wl.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/display/intel_dpio_phy.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/display/intel_dpll.o
CC drivers/gpu/drm/i915/display/intel_dpll_mgr.o
CC drivers/gpu/drm/i915/display/intel_dpt.o
CC drivers/gpu/drm/i915/display/intel_dpt_common.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_link_training.o
CC drivers/gpu/drm/i915/display/intel_drrs.o
CC drivers/gpu/drm/i915/display/intel_dsb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_mst.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/intel_dsb_buffer.o
CC drivers/gpu/drm/i915/display/intel_fb.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll.o
CC drivers/gpu/drm/i915/display/intel_fb_bo.o
CC drivers/gpu/drm/i915/display/intel_fb_pin.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpll_mgr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dpt_common.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_drrs.o
CC drivers/gpu/drm/i915/display/intel_fbc.o
CC drivers/gpu/drm/i915/display/intel_fdi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsb.o
CC drivers/gpu/drm/i915/display/intel_fifo_underrun.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi.o
CC drivers/gpu/drm/i915/display/intel_frontbuffer.o
CC drivers/gpu/drm/i915/display/intel_global_state.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_dcs_backlight.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_hdcp.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_hdcp_gsc_message.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fb.o
CC drivers/gpu/drm/i915/display/intel_hotplug.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fbc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fdi.o
CC drivers/gpu/drm/i915/display/intel_hotplug_irq.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_fifo_underrun.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_frontbuffer.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_global_state.o
CC drivers/gpu/drm/i915/display/intel_hti.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_link_bw.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdcp_gsc_message.o
CC drivers/gpu/drm/i915/display/intel_load_detect.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_lpe_audio.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug.o
CC drivers/gpu/drm/i915/display/intel_modeset_lock.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hotplug_irq.o
CC drivers/gpu/drm/i915/display/intel_modeset_setup.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_hti.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_link_bw.o
CC drivers/gpu/drm/i915/display/intel_modeset_verify.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_lspcon.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_lock.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_setup.o
CC drivers/gpu/drm/i915/display/intel_overlay.o
CC drivers/gpu/drm/i915/display/intel_pch_display.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_modeset_verify.o
CC drivers/gpu/drm/i915/display/intel_pch_refclk.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_plane_initial.o
CC drivers/gpu/drm/i915/display/intel_pmdemand.o
CC drivers/gpu/drm/i915/display/intel_psr.o
CC drivers/gpu/drm/i915/display/intel_quirks.o
CC drivers/gpu/drm/i915/display/intel_sprite.o
CC drivers/gpu/drm/i915/display/intel_sprite_uapi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_tc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pmdemand.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_vblank.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_psr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_vga.o
CC drivers/gpu/drm/i915/display/intel_wm.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_quirks.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_snps_phy.o
CC drivers/gpu/drm/i915/display/skl_scaler.o
CC drivers/gpu/drm/i915/display/skl_universal_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_tc.o
CC drivers/gpu/drm/i915/display/skl_watermark.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vblank.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vdsc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vga.o
CC drivers/gpu/drm/i915/display/intel_acpi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_vrr.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_dmc_wl.o
CC drivers/gpu/drm/i915/display/intel_opregion.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_wm.o
CC drivers/gpu/drm/i915/display/intel_display_debugfs_params.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_scaler.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_universal_plane.o
CC [M] drivers/gpu/drm/xe/i915-display/skl_watermark.o
CC drivers/gpu/drm/i915/display/intel_pipe_crc.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_acpi.o
CC drivers/gpu/drm/i915/display/dvo_ch7017.o
CC drivers/gpu/drm/i915/display/dvo_ch7xxx.o
CC drivers/gpu/drm/i915/display/dvo_ivch.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_opregion.o
CC drivers/gpu/drm/i915/display/dvo_ns2501.o
CC drivers/gpu/drm/i915/display/dvo_sil164.o
CC [M] drivers/gpu/drm/xe/xe_debugfs.o
CC drivers/gpu/drm/i915/display/dvo_tfp410.o
CC [M] drivers/gpu/drm/xe/xe_gt_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_gt_sriov_vf_debugfs.o
CC drivers/gpu/drm/i915/display/g4x_dp.o
CC drivers/gpu/drm/i915/display/g4x_hdmi.o
CC [M] drivers/gpu/drm/xe/xe_gt_stats.o
CC [M] drivers/gpu/drm/xe/xe_guc_debugfs.o
CC drivers/gpu/drm/i915/display/icl_dsi.o
CC [M] drivers/gpu/drm/xe/xe_huc_debugfs.o
CC [M] drivers/gpu/drm/xe/xe_uc_debugfs.o
CC drivers/gpu/drm/i915/display/intel_backlight.o
CC drivers/gpu/drm/i915/display/intel_crt.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs.o
CC drivers/gpu/drm/i915/display/intel_cx0_phy.o
CC drivers/gpu/drm/i915/display/intel_ddi.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_display_debugfs_params.o
CC drivers/gpu/drm/i915/display/intel_ddi_buf_trans.o
CC drivers/gpu/drm/i915/display/intel_display_device.o
CC [M] drivers/gpu/drm/xe/i915-display/intel_pipe_crc.o
CC drivers/gpu/drm/i915/display/intel_display_trace.o
CC drivers/gpu/drm/i915/display/intel_dkl_phy.o
CC drivers/gpu/drm/i915/display/intel_dp.o
CC drivers/gpu/drm/i915/display/intel_dp_aux.o
CC drivers/gpu/drm/i915/display/intel_dp_aux_backlight.o
CC drivers/gpu/drm/i915/display/intel_dp_hdcp.o
CC drivers/gpu/drm/i915/display/intel_dp_link_training.o
CC drivers/gpu/drm/i915/display/intel_dp_mst.o
CC drivers/gpu/drm/i915/display/intel_dp_test.o
CC drivers/gpu/drm/i915/display/intel_dsi.o
CC drivers/gpu/drm/i915/display/intel_dsi_dcs_backlight.o
CC drivers/gpu/drm/i915/display/intel_dsi_vbt.o
CC drivers/gpu/drm/i915/display/intel_dvo.o
CC drivers/gpu/drm/i915/display/intel_encoder.o
CC drivers/gpu/drm/i915/display/intel_gmbus.o
CC drivers/gpu/drm/i915/display/intel_hdmi.o
CC drivers/gpu/drm/i915/display/intel_lspcon.o
CC drivers/gpu/drm/i915/display/intel_lvds.o
CC drivers/gpu/drm/i915/display/intel_panel.o
CC drivers/gpu/drm/i915/display/intel_pfit.o
CC drivers/gpu/drm/i915/display/intel_pps.o
CC drivers/gpu/drm/i915/display/intel_qp_tables.o
CC drivers/gpu/drm/i915/display/intel_sdvo.o
CC drivers/gpu/drm/i915/display/intel_snps_phy.o
CC drivers/gpu/drm/i915/display/intel_tv.o
CC drivers/gpu/drm/i915/display/intel_vdsc.o
CC drivers/gpu/drm/i915/display/intel_vrr.o
CC drivers/gpu/drm/i915/display/vlv_dsi.o
CC drivers/gpu/drm/i915/display/vlv_dsi_pll.o
CC drivers/gpu/drm/i915/i915_perf.o
CC drivers/gpu/drm/i915/pxp/intel_pxp.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_huc.o
CC drivers/gpu/drm/i915/pxp/intel_pxp_tee.o
CC drivers/gpu/drm/i915/i915_gpu_error.o
CC drivers/gpu/drm/i915/i915_vgpu.o
LD [M] drivers/gpu/drm/xe/xe.o
AR drivers/gpu/drm/i915/built-in.a
AR drivers/gpu/drm/built-in.a
AR drivers/gpu/built-in.a
AR drivers/built-in.a
AR built-in.a
AR vmlinux.a
LD vmlinux.o
OBJCOPY modules.builtin.modinfo
GEN modules.builtin
MODPOST Module.symvers
CC .vmlinux.export.o
CC [M] fs/efivarfs/efivarfs.mod.o
CC [M] .module-common.o
CC [M] drivers/gpu/drm/drm_exec.mod.o
CC [M] drivers/gpu/drm/drm_gpuvm.mod.o
CC [M] drivers/gpu/drm/drm_suballoc_helper.mod.o
CC [M] drivers/gpu/drm/drm_ttm_helper.mod.o
CC [M] drivers/gpu/drm/scheduler/gpu-sched.mod.o
CC [M] drivers/gpu/drm/xe/xe.mod.o
CC [M] drivers/thermal/intel/x86_pkg_temp_thermal.mod.o
CC [M] net/netfilter/nf_log_syslog.mod.o
CC [M] net/netfilter/xt_mark.mod.o
CC [M] net/netfilter/xt_nat.mod.o
CC [M] net/netfilter/xt_LOG.mod.o
CC [M] net/netfilter/xt_MASQUERADE.mod.o
CC [M] net/netfilter/xt_addrtype.mod.o
CC [M] net/ipv4/netfilter/iptable_nat.mod.o
LD [M] drivers/gpu/drm/drm_exec.ko
LD [M] drivers/gpu/drm/drm_gpuvm.ko
LD [M] net/netfilter/xt_mark.ko
LD [M] drivers/gpu/drm/drm_suballoc_helper.ko
LD [M] drivers/gpu/drm/scheduler/gpu-sched.ko
LD [M] net/netfilter/xt_nat.ko
LD [M] net/netfilter/xt_MASQUERADE.ko
LD [M] net/netfilter/nf_log_syslog.ko
LD [M] net/ipv4/netfilter/iptable_nat.ko
LD [M] drivers/gpu/drm/xe/xe.ko
LD [M] net/netfilter/xt_addrtype.ko
LD [M] net/netfilter/xt_LOG.ko
LD [M] fs/efivarfs/efivarfs.ko
LD [M] drivers/thermal/intel/x86_pkg_temp_thermal.ko
LD [M] drivers/gpu/drm/drm_ttm_helper.ko
UPD include/generated/utsversion.h
CC init/version-timestamp.o
KSYMS .tmp_vmlinux0.kallsyms.S
AS .tmp_vmlinux0.kallsyms.o
LD .tmp_vmlinux1
NM .tmp_vmlinux1.syms
KSYMS .tmp_vmlinux1.kallsyms.S
AS .tmp_vmlinux1.kallsyms.o
LD .tmp_vmlinux2
NM .tmp_vmlinux2.syms
KSYMS .tmp_vmlinux2.kallsyms.S
AS .tmp_vmlinux2.kallsyms.o
LD vmlinux
NM System.map
SORTTAB vmlinux
RELOCS arch/x86/boot/compressed/vmlinux.relocs
RSTRIP vmlinux
CC arch/x86/boot/a20.o
AS arch/x86/boot/bioscall.o
CC arch/x86/boot/cmdline.o
AS arch/x86/boot/copy.o
HOSTCC arch/x86/boot/mkcpustr
CC arch/x86/boot/cpuflags.o
CC arch/x86/boot/cpucheck.o
CC arch/x86/boot/early_serial_console.o
CC arch/x86/boot/edd.o
CC arch/x86/boot/main.o
CC arch/x86/boot/memory.o
CC arch/x86/boot/pm.o
AS arch/x86/boot/pmjump.o
CC arch/x86/boot/printf.o
CC arch/x86/boot/regs.o
CC arch/x86/boot/string.o
CC arch/x86/boot/tty.o
CC arch/x86/boot/video.o
CC arch/x86/boot/video-mode.o
CC arch/x86/boot/version.o
CC arch/x86/boot/video-vga.o
CC arch/x86/boot/video-vesa.o
CC arch/x86/boot/video-bios.o
HOSTCC arch/x86/boot/tools/build
CPUSTR arch/x86/boot/cpustr.h
LDS arch/x86/boot/compressed/vmlinux.lds
AS arch/x86/boot/compressed/kernel_info.o
AS arch/x86/boot/compressed/head_32.o
VOFFSET arch/x86/boot/compressed/../voffset.h
CC arch/x86/boot/cpu.o
CC arch/x86/boot/compressed/string.o
CC arch/x86/boot/compressed/cmdline.o
CC arch/x86/boot/compressed/error.o
OBJCOPY arch/x86/boot/compressed/vmlinux.bin
HOSTCC arch/x86/boot/compressed/mkpiggy
CC arch/x86/boot/compressed/cpuflags.o
CC arch/x86/boot/compressed/early_serial_console.o
CC arch/x86/boot/compressed/kaslr.o
CC arch/x86/boot/compressed/acpi.o
CC arch/x86/boot/compressed/efi.o
GZIP arch/x86/boot/compressed/vmlinux.bin.gz
CC arch/x86/boot/compressed/misc.o
MKPIGGY arch/x86/boot/compressed/piggy.S
AS arch/x86/boot/compressed/piggy.o
LD arch/x86/boot/compressed/vmlinux
ZOFFSET arch/x86/boot/zoffset.h
OBJCOPY arch/x86/boot/vmlinux.bin
AS arch/x86/boot/header.o
LD arch/x86/boot/setup.elf
OBJCOPY arch/x86/boot/setup.bin
BUILD arch/x86/boot/bzImage
Kernel: arch/x86/boot/bzImage is ready (#1)
run-parts: executing /workspace/ci/hooks/20-kernel-doc
+ SRC_DIR=/workspace/kernel
+ cd /workspace/kernel
+ find drivers/gpu/drm/xe/ -name '*.[ch]' -not -path 'drivers/gpu/drm/xe/display/*'
+ xargs ./scripts/kernel-doc -Werror -none include/uapi/drm/xe_drm.h
All hooks done
^ permalink raw reply [flat|nested] 36+ messages in thread
* ✗ CI.checksparse: warning for Expose modifiers/formats supported by async flips (rev2)
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (8 preceding siblings ...)
2025-01-08 6:20 ` ✓ CI.Hooks: " Patchwork
@ 2025-01-08 6:22 ` Patchwork
2025-01-08 6:49 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-01-09 22:08 ` ✗ Xe.CI.Full: " Patchwork
11 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-01-08 6:22 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
== Series Details ==
Series: Expose modifiers/formats supported by async flips (rev2)
URL : https://patchwork.freedesktop.org/series/140934/
State : warning
== Summary ==
+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Fast mode used, each commit won't be checked separately.
-
+drivers/gpu/drm/drm_drv.c:446:6: warning: context imbalance in 'drm_dev_enter' - different lock contexts for basic block
+drivers/gpu/drm/drm_drv.c: note: in included file (through include/linux/notifier.h, arch/x86/include/asm/uprobes.h, include/linux/uprobes.h, include/linux/mm_types.h, include/linux/mmzone.h, include/linux/gfp.h, ...):
+drivers/gpu/drm/i915/display/intel_cdclk.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_ddi.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1963:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_display_types.h:1976:24: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/display/intel_hdcp.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_pps.c: note: in included file:
+drivers/gpu/drm/i915/display/intel_psr.c: note: in included file:
+drivers/gpu/drm/i915/gt/intel_reset.c:1544:12: warning: context imbalance in '_intel_gt_reset_lock' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_active.c:1063:16: warning: context imbalance in '__i915_active_fence_set' - different lock contexts for basic block
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: error: incompatible types in comparison expression (different address spaces):
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: expected struct list_head const *list
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: got struct list_head [noderef] __rcu *pos
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: struct list_head [noderef] __rcu *
+drivers/gpu/drm/i915/i915_drm_client.c:92:9: warning: incorrect type in argument 1 (different address spaces)
+drivers/gpu/drm/i915/i915_irq.c:451:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:451:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:459:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:459:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:464:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:464:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:464:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:501:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:501:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:509:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:509:16: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:514:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:514:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:514:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:557:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:557:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:560:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:560:15: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:564:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:564:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:571:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:571:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:571:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/i915_irq.c:571:9: warning: unreplaced symbol '<noident>'
+drivers/gpu/drm/i915/intel_uncore.c:1925:1: warning: context imbalance in 'fwtable_read8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1926:1: warning: context imbalance in 'fwtable_read16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1927:1: warning: context imbalance in 'fwtable_read32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1928:1: warning: context imbalance in 'fwtable_read64' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1993:1: warning: context imbalance in 'gen6_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1994:1: warning: context imbalance in 'gen6_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:1995:1: warning: context imbalance in 'gen6_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2015:1: warning: context imbalance in 'fwtable_write8' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2016:1: warning: context imbalance in 'fwtable_write16' - unexpected unlock
+drivers/gpu/drm/i915/intel_uncore.c:2017:1: warning: context imbalance in 'fwtable_write32' - unexpected unlock
+drivers/gpu/drm/i915/intel_wakeref.c:145:19: warning: context imbalance in 'wakeref_auto_timeout' - unexpected unlock
+./include/linux/srcu.h:350:9: warning: context imbalance in 'drm_dev_exit' - unexpected unlock
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 36+ messages in thread
* ✗ Xe.CI.BAT: failure for Expose modifiers/formats supported by async flips (rev2)
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (9 preceding siblings ...)
2025-01-08 6:22 ` ✗ CI.checksparse: warning " Patchwork
@ 2025-01-08 6:49 ` Patchwork
2025-01-09 22:08 ` ✗ Xe.CI.Full: " Patchwork
11 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-01-08 6:49 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 4268 bytes --]
== Series Details ==
Series: Expose modifiers/formats supported by async flips (rev2)
URL : https://patchwork.freedesktop.org/series/140934/
State : failure
== Summary ==
CI Bug Log - changes from xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5_BAT -> xe-pw-140934v2_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-140934v2_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-140934v2_BAT, 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.
Participating hosts (9 -> 8)
------------------------------
Missing (1): bat-adlp-vm
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-140934v2_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@kms_addfb_basic@addfb25-4-tiled:
- bat-bmg-2: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-bmg-2/igt@kms_addfb_basic@addfb25-4-tiled.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-bmg-2/igt@kms_addfb_basic@addfb25-4-tiled.html
- bat-lnl-2: [PASS][3] -> [ABORT][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-lnl-2/igt@kms_addfb_basic@addfb25-4-tiled.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-lnl-2/igt@kms_addfb_basic@addfb25-4-tiled.html
* igt@runner@aborted:
- bat-pvc-2: NOTRUN -> [FAIL][5]
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-pvc-2/igt@runner@aborted.html
- bat-atsm-2: NOTRUN -> [FAIL][6]
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-atsm-2/igt@runner@aborted.html
* igt@xe_module_load@load:
- bat-dg2-oem2: [PASS][7] -> [ABORT][8]
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-dg2-oem2/igt@xe_module_load@load.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-dg2-oem2/igt@xe_module_load@load.html
- bat-adlp-vf: [PASS][9] -> [DMESG-WARN][10]
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-adlp-vf/igt@xe_module_load@load.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-adlp-vf/igt@xe_module_load@load.html
- bat-lnl-1: [PASS][11] -> [ABORT][12]
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-lnl-1/igt@xe_module_load@load.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-lnl-1/igt@xe_module_load@load.html
- bat-bmg-2: [PASS][13] -> [DMESG-WARN][14]
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-bmg-2/igt@xe_module_load@load.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-bmg-2/igt@xe_module_load@load.html
- bat-bmg-1: [PASS][15] -> [ABORT][16]
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-bmg-1/igt@xe_module_load@load.html
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-bmg-1/igt@xe_module_load@load.html
- bat-lnl-2: [PASS][17] -> [DMESG-WARN][18]
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/bat-lnl-2/igt@xe_module_load@load.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/bat-lnl-2/igt@xe_module_load@load.html
Build changes
-------------
* Linux: xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5 -> xe-pw-140934v2
IGT_8179: 183b33f81365dd4a57fe3100a13d3fb13788d158 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5: 8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5
xe-pw-140934v2: 140934v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/index.html
[-- Attachment #2: Type: text/html, Size: 4962 bytes --]
^ permalink raw reply [flat|nested] 36+ messages in thread
* ✗ Xe.CI.Full: failure for Expose modifiers/formats supported by async flips (rev2)
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
` (10 preceding siblings ...)
2025-01-08 6:49 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2025-01-09 22:08 ` Patchwork
11 siblings, 0 replies; 36+ messages in thread
From: Patchwork @ 2025-01-09 22:08 UTC (permalink / raw)
To: Arun R Murthy; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 22544 bytes --]
== Series Details ==
Series: Expose modifiers/formats supported by async flips (rev2)
URL : https://patchwork.freedesktop.org/series/140934/
State : failure
== Summary ==
CI Bug Log - changes from xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5_full -> xe-pw-140934v2_full
====================================================
Summary
-------
**WARNING**
Minor unknown changes coming with xe-pw-140934v2_full need to be verified
manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-140934v2_full, 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.
Participating hosts (4 -> 4)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-140934v2_full:
### IGT changes ###
#### Warnings ####
* igt@xe_module_load@load:
- shard-lnl: ([PASS][1], [PASS][2], [PASS][3], [PASS][4], [PASS][5], [PASS][6], [PASS][7], [PASS][8], [PASS][9], [PASS][10], [PASS][11], [PASS][12], [PASS][13], [PASS][14], [PASS][15], [PASS][16], [PASS][17], [PASS][18], [PASS][19], [PASS][20], [PASS][21], [PASS][22], [PASS][23], [SKIP][24], [PASS][25], [PASS][26]) ([Intel XE#378]) -> ([ABORT][27], [ABORT][28], [ABORT][29], [ABORT][30], [ABORT][31], [ABORT][32], [ABORT][33], [ABORT][34], [ABORT][35], [ABORT][36], [ABORT][37], [ABORT][38], [ABORT][39], [ABORT][40], [ABORT][41], [ABORT][42], [ABORT][43], [ABORT][44], [ABORT][45], [ABORT][46], [ABORT][47], [ABORT][48], [ABORT][49], [ABORT][50])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-6/igt@xe_module_load@load.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-8/igt@xe_module_load@load.html
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-6/igt@xe_module_load@load.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-8/igt@xe_module_load@load.html
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-5/igt@xe_module_load@load.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-8/igt@xe_module_load@load.html
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-4/igt@xe_module_load@load.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-6/igt@xe_module_load@load.html
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-5/igt@xe_module_load@load.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-5/igt@xe_module_load@load.html
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-8/igt@xe_module_load@load.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-6/igt@xe_module_load@load.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-8/igt@xe_module_load@load.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-5/igt@xe_module_load@load.html
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-5/igt@xe_module_load@load.html
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-4/igt@xe_module_load@load.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-1/igt@xe_module_load@load.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-6/igt@xe_module_load@load.html
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-4/igt@xe_module_load@load.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-4/igt@xe_module_load@load.html
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-3/igt@xe_module_load@load.html
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-4/igt@xe_module_load@load.html
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-4/igt@xe_module_load@load.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-3/igt@xe_module_load@load.html
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-6/igt@xe_module_load@load.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-lnl-5/igt@xe_module_load@load.html
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-5/igt@xe_module_load@load.html
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-5/igt@xe_module_load@load.html
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-5/igt@xe_module_load@load.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-8/igt@xe_module_load@load.html
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-8/igt@xe_module_load@load.html
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-8/igt@xe_module_load@load.html
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-8/igt@xe_module_load@load.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-8/igt@xe_module_load@load.html
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-8/igt@xe_module_load@load.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-4/igt@xe_module_load@load.html
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-4/igt@xe_module_load@load.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-4/igt@xe_module_load@load.html
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-4/igt@xe_module_load@load.html
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-4/igt@xe_module_load@load.html
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-4/igt@xe_module_load@load.html
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-5/igt@xe_module_load@load.html
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-6/igt@xe_module_load@load.html
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-5/igt@xe_module_load@load.html
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-6/igt@xe_module_load@load.html
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-6/igt@xe_module_load@load.html
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-5/igt@xe_module_load@load.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-6/igt@xe_module_load@load.html
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-6/igt@xe_module_load@load.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-lnl-6/igt@xe_module_load@load.html
- shard-adlp: ([PASS][51], [PASS][52], [PASS][53], [PASS][54], [PASS][55], [PASS][56], [PASS][57], [PASS][58], [PASS][59], [PASS][60], [PASS][61], [PASS][62], [PASS][63], [PASS][64], [PASS][65], [SKIP][66], [PASS][67], [PASS][68], [PASS][69], [PASS][70], [PASS][71], [PASS][72], [PASS][73], [PASS][74], [PASS][75], [PASS][76]) ([Intel XE#378]) -> ([ABORT][77], [ABORT][78], [ABORT][79], [ABORT][80], [ABORT][81], [ABORT][82], [ABORT][83], [ABORT][84], [ABORT][85], [ABORT][86], [ABORT][87], [ABORT][88], [ABORT][89], [ABORT][90], [ABORT][91], [ABORT][92], [ABORT][93], [ABORT][94], [ABORT][95], [ABORT][96], [ABORT][97], [ABORT][98], [ABORT][99], [ABORT][100])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-9/igt@xe_module_load@load.html
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-1/igt@xe_module_load@load.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-2/igt@xe_module_load@load.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-2/igt@xe_module_load@load.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-3/igt@xe_module_load@load.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-3/igt@xe_module_load@load.html
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-8/igt@xe_module_load@load.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-8/igt@xe_module_load@load.html
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-9/igt@xe_module_load@load.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-2/igt@xe_module_load@load.html
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-2/igt@xe_module_load@load.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-4/igt@xe_module_load@load.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-8/igt@xe_module_load@load.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-4/igt@xe_module_load@load.html
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-1/igt@xe_module_load@load.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-4/igt@xe_module_load@load.html
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-1/igt@xe_module_load@load.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-6/igt@xe_module_load@load.html
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-9/igt@xe_module_load@load.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-4/igt@xe_module_load@load.html
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-3/igt@xe_module_load@load.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-6/igt@xe_module_load@load.html
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-6/igt@xe_module_load@load.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-6/igt@xe_module_load@load.html
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-1/igt@xe_module_load@load.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-adlp-4/igt@xe_module_load@load.html
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-6/igt@xe_module_load@load.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-6/igt@xe_module_load@load.html
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-6/igt@xe_module_load@load.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-6/igt@xe_module_load@load.html
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-9/igt@xe_module_load@load.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-9/igt@xe_module_load@load.html
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-9/igt@xe_module_load@load.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-9/igt@xe_module_load@load.html
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-8/igt@xe_module_load@load.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-8/igt@xe_module_load@load.html
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-8/igt@xe_module_load@load.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-1/igt@xe_module_load@load.html
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-1/igt@xe_module_load@load.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-1/igt@xe_module_load@load.html
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-4/igt@xe_module_load@load.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-4/igt@xe_module_load@load.html
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-4/igt@xe_module_load@load.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-3/igt@xe_module_load@load.html
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-3/igt@xe_module_load@load.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-3/igt@xe_module_load@load.html
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-3/igt@xe_module_load@load.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-2/igt@xe_module_load@load.html
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-2/igt@xe_module_load@load.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-adlp-2/igt@xe_module_load@load.html
- shard-dg2-set2: ([PASS][101], [PASS][102], [SKIP][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109], [PASS][110], [PASS][111], [PASS][112], [PASS][113], [PASS][114], [PASS][115], [PASS][116], [PASS][117], [PASS][118], [PASS][119], [PASS][120], [PASS][121], [PASS][122], [PASS][123], [PASS][124], [PASS][125], [PASS][126]) ([Intel XE#378]) -> ([DMESG-WARN][127], [ABORT][128], [ABORT][129], [ABORT][130], [ABORT][131], [DMESG-WARN][132], [DMESG-WARN][133], [DMESG-WARN][134], [DMESG-WARN][135], [DMESG-WARN][136], [DMESG-WARN][137], [DMESG-WARN][138], [DMESG-WARN][139], [DMESG-WARN][140], [ABORT][141], [ABORT][142], [ABORT][143], [ABORT][144], [ABORT][145], [ABORT][146], [ABORT][147], [ABORT][148], [ABORT][149], [ABORT][150])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-435/igt@xe_module_load@load.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-434/igt@xe_module_load@load.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-435/igt@xe_module_load@load.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-436/igt@xe_module_load@load.html
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-436/igt@xe_module_load@load.html
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-435/igt@xe_module_load@load.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-435/igt@xe_module_load@load.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-434/igt@xe_module_load@load.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-434/igt@xe_module_load@load.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-436/igt@xe_module_load@load.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-436/igt@xe_module_load@load.html
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-434/igt@xe_module_load@load.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-435/igt@xe_module_load@load.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-434/igt@xe_module_load@load.html
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-466/igt@xe_module_load@load.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5/shard-dg2-435/igt@xe_module_load@load.html
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-435/igt@xe_module_load@load.html
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-435/igt@xe_module_load@load.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-435/igt@xe_module_load@load.html
[131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-435/igt@xe_module_load@load.html
[132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[140]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-466/igt@xe_module_load@load.html
[141]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-434/igt@xe_module_load@load.html
[142]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-434/igt@xe_module_load@load.html
[143]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-434/igt@xe_module_load@load.html
[144]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-434/igt@xe_module_load@load.html
[145]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-434/igt@xe_module_load@load.html
[146]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-436/igt@xe_module_load@load.html
[147]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-436/igt@xe_module_load@load.html
[148]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-436/igt@xe_module_load@load.html
[149]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-436/igt@xe_module_load@load.html
[150]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/shard-dg2-436/igt@xe_module_load@load.html
[Intel XE#378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/378
Build changes
-------------
* Linux: xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5 -> xe-pw-140934v2
IGT_8179: 183b33f81365dd4a57fe3100a13d3fb13788d158 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-2452-8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5: 8f14ac27d7b0ff9ff973fa44a67cc9a0ff3acad5
xe-pw-140934v2: 140934v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-140934v2/index.html
[-- Attachment #2: Type: text/html, Size: 23091 bytes --]
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC
2025-01-08 5:38 ` [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
@ 2025-01-12 7:59 ` Borah, Chaitanya Kumar
2025-01-13 8:22 ` Murthy, Arun R
0 siblings, 1 reply; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-12 7:59 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Murthy, Arun R
> -----Original Message-----
> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> Arun R Murthy
> Sent: Wednesday, January 8, 2025 11:09 AM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v3 1/5] drm/plane: Add new plane property
> IN_FORMATS_ASYNC
>
> 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.
s/done/do
s/unsupported/supported
s/flips/flip
> Add a new function pointer similar to format_mod_supported specifically for
> asynchronous flips.
>
> v2: Remove async variable from drm_plane (Ville)
> v3: Add new function pointer for async (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 ++++++
> include/drm/drm_plane.h | 20 ++++++++++++++++++++
> 4 files changed, 39 insertions(+)
>
> diff --git a/drivers/gpu/drm/drm_mode_config.c
> b/drivers/gpu/drm/drm_mode_config.c
> index
> 8642a2fb25a90116dab975aa0ab6b51deafb4b96..dbbef20753f834a85ae9ded
> 748cff2b3f0e85043 100644
> --- a/drivers/gpu/drm/drm_mode_config.c
> +++ b/drivers/gpu/drm/drm_mode_config.c
> @@ -388,6 +388,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
> a28b22fdd7a41aca82d097d42237851da9a0a79b..416818e54ccffcf3d3aada27
> 23e96ce8ccf1dd97 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.
> + *
I think we should mention here that the absence of this property would mean that all format modifier pair in IN_FORMATS are also supported for async flips.
That way the uAPI remains backward compatible.
> * 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
> 271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c0f0
> 97fce2d719f43844 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
> dd718c62ac31bf16606f3ee9f025a5b171cd1e67..e8749e6fc3bc0acfc73bbd840
> 1f85c3126e86759 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -549,6 +549,26 @@ struct drm_plane_funcs {
> */
> bool (*format_mod_supported)(struct drm_plane *plane, uint32_t
> format,
> uint64_t modifier);
> + /**
> + * @format_mod_supported_async:
> + *
> + * This optional hook is used for the DRM to determine if for
> + * asychronous flip the given format/modifier combination is valid for
> + * the plane. This allows the DRM to generate the correct format
> + * bitmask (which formats apply to which modifier), and to validate
> + * modifiers at atomic_check time.
> + *
> + * If not present, then any modifier in the plane's modifier
> + * list is allowed with any of the plane's formats.
> + *
We still have to honor the IN_FORMATS property, right?
> + * Returns:
> + *
> + * True if the given modifier is valid for that format on the plane.
> + * False otherwise.
> + */
> + bool (*format_mod_supported_async)(struct drm_plane *plane,
> + uint32_t format, uint64_t modifier);
> +
> };
>
Some thoughts after going through all the patches. There is a bit of ambiguity how a driver can handle the IN_FORMATS_ASYNC property in cases where there are no specific restrictions in format modifier pairs for async.
Two approaches here.
1. The driver should not expose the property at all.
2. The driver should fill up IN_FORMATS_ASYNC blob that indicates that all format modifier pair supported for sync are also supported for async flips.
Approach 1 seems to be better for backward compatibility. If we follow approach 2, we do not need to expose the function create_in_formats_blob() and it can be handled through the format_mod_supported_async() function internally during plane initialization.
Either way the documentation should be made clear what we expect from the userspace.
Regards
Chaitanya
> /**
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-08 5:39 ` [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob Arun R Murthy
@ 2025-01-12 8:00 ` Borah, Chaitanya Kumar
2025-01-13 8:22 ` Murthy, Arun R
2025-01-20 20:42 ` Ville Syrjälä
1 sibling, 1 reply; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-12 8:00 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Murthy, Arun R
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Arun
> R Murthy
> Sent: Wednesday, January 8, 2025 11:09 AM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier
> blob
>
> 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
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a90
> 68b31c0563a4c0 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)
We can retain the original arguments (dev, plane) here. As I understand, plane->formats[] and plane->modifiers[] are populated with all the formats and modifiers supported by the platform, respectively.
The goal is to establish a mapping between the two using the callbacks format_mod_supported() or format_mod_supported_async().
Since these arrays represent a superset of all the formats and modifiers the platform supports, we have sufficient information within drm_plane to decide how to pair them here.
> {
> 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 ||
This patch looks incomplete because the implementation for async is split between this and [1]. It might be a good idea to have both the patch squashed.
[1] https://patchwork.freedesktop.org/patch/631261/?series=140935&rev=2
Regards
Chaitanya
> + !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
> e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> 369894a5657cd45 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -1008,5 +1008,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 [flat|nested] 36+ messages in thread
* RE: [PATCH v3 3/5] drm/plane: Function to check async supported modifier/format
2025-01-08 5:39 ` [PATCH v3 3/5] drm/plane: Function to check async supported modifier/format Arun R Murthy
@ 2025-01-12 8:01 ` Borah, Chaitanya Kumar
0 siblings, 0 replies; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-12 8:01 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Murthy, Arun R
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Arun
> R Murthy
> Sent: Wednesday, January 8, 2025 11:09 AM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v3 3/5] drm/plane: Function to check async supported
> modifier/format
>
> Seperate function for async flips is to be called in order to check the provided
> format/modifier support.
> At present the flag for async flip is stored in crtc_state as async flip is
> supported on only one plane for a given crtc. The same is being used over
> here to decide the async function pointer.
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/drm_plane.c | 30 ++++++++++++++++++++++--------
> 1 file changed, 22 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_plane.c b/drivers/gpu/drm/drm_plane.c
> index
> 4f35eec2b7770fcc90c3e07a9068b31c0563a4c0..9e08ba4318cf0c07fa0701023
> 659986855e0e98a 100644
> --- a/drivers/gpu/drm/drm_plane.c
> +++ b/drivers/gpu/drm/drm_plane.c
> @@ -238,12 +238,21 @@ int drm_plane_create_format_blob(struct
> drm_device *dev,
> mod = modifiers_ptr(blob_data);
> 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,
> - formats[j],
> - modifiers[i])) {
> - mod->formats |= 1ULL << j;
> + if (is_async) {
> + if (!plane->funcs-
> >format_mod_supported_async ||
> + plane->funcs-
> >format_mod_supported_async(plane,
> +
> formats[j],
> +
> modifiers[i])) {
> + mod->formats |= 1ULL << j;
> + }
> +
> + } else {
> + if (!plane->funcs->format_mod_supported ||
> + plane->funcs-
> >format_mod_supported(plane,
> + formats[j],
> +
> modifiers[i])) {
> + mod->formats |= 1ULL << j;
> + }
> }
> }
>
> @@ -910,6 +919,7 @@ bool drm_plane_has_format(struct drm_plane
> *plane,
> u32 format, u64 modifier)
> {
> unsigned int i;
> + bool is_async = plane->crtc->state->async_flip;
>
> for (i = 0; i < plane->format_count; i++) {
> if (format == plane->format_types[i]) @@ -918,8 +928,12 @@
> bool drm_plane_has_format(struct drm_plane *plane,
> if (i == plane->format_count)
> return false;
>
> - if (plane->funcs->format_mod_supported) {
> - if (!plane->funcs->format_mod_supported(plane, format,
> modifier))
> + if (is_async ? plane->funcs->format_mod_supported_async :
> + plane->funcs->format_mod_supported) {
> + if (!(is_async ? plane->funcs->format_mod_supported_async(
> + plane, format, modifier) :
> + plane->funcs-
> >format_mod_supported(
> + plane, format, modifier)))
Since we are bringing this check here. Should the check be removed from the i915 code?
We also need to account for the fact that some drivers will not have the format_mod_supported_async() implemented.
Regards
Chaitanya
> return false;
> } else {
> if (!plane->modifier_count)
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers
2025-01-08 5:39 ` [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
@ 2025-01-12 8:02 ` Borah, Chaitanya Kumar
2025-01-20 20:47 ` Ville Syrjälä
1 sibling, 0 replies; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-12 8:02 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Murthy, Arun R
> -----Original Message-----
> From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of Arun
> R Murthy
> Sent: Wednesday, January 8, 2025 11:09 AM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v3 4/5] drm/i915/display: Populate list of async supported
> formats/modifiers
>
> Populate the list of formats/modifiers supported by async flip. Register a
> async property and expose the same to user through blob.
s/a/an
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/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
> ff9764cac1e71959e56283f61b5192ea261cec7a..e5e47f2219dae62e76cbde2e
> fb40266b047ab2b2 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[] = {
/s/asn/async
> + 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,
> +};
There are platforms which also support packed YUV formats for async flip. We should consider them as well.
However, we need not maintain these arrays like this. See below and comments on [2]
> +
> int skl_format_to_fourcc(int format, bool rgb_order, bool alpha) {
> switch (format) {
> @@ -2613,6 +2651,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;
> @@ -2715,6 +2754,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);
As discussed in [1], we need not pass a filtered array to drm_plane_create_format_blob(). The function should filter out what format modifier pair is supported from the superset of all formats and modifiers which actually is being done in [2]
[1] https://patchwork.freedesktop.org/patch/631260/?series=140935&rev=2
[2] https://patchwork.freedesktop.org/patch/631267/?series=140935&rev=2
Regards
Chaitanya
> +
> if (DISPLAY_VER(dev_priv) >= 13)
> supported_rotations = DRM_MODE_ROTATE_0 |
> DRM_MODE_ROTATE_180;
> else
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 5/5] drm/i915/display: Add function for format_mod_supported_async
2025-01-08 5:39 ` [PATCH v3 5/5] drm/i915/display: Add function for format_mod_supported_async Arun R Murthy
@ 2025-01-12 8:02 ` Borah, Chaitanya Kumar
0 siblings, 0 replies; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-12 8:02 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Murthy, Arun R
> -----Original Message-----
> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> Arun R Murthy
> Sent: Wednesday, January 8, 2025 11:09 AM
> To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> Subject: [PATCH v3 5/5] drm/i915/display: Add function for
> format_mod_supported_async
>
> Add driver specific function definition for the plane->funcs
> format_mod_supported_async to check if the provided format/modifier is
> supported for asynchronous flip.
>
> Signed-off-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> drivers/gpu/drm/i915/display/skl_universal_plane.c | 62 ++++++++++++++++-
> -----
> 1 file changed, 47 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> index
> e5e47f2219dae62e76cbde2efb40266b047ab2b2..00aa254a3b4e992268c9159
> bc15687e54718dc43 100644
> --- a/drivers/gpu/drm/i915/display/skl_universal_plane.c
> +++ b/drivers/gpu/drm/i915/display/skl_universal_plane.c
> @@ -2526,30 +2526,62 @@ static bool
> tgl_plane_format_mod_supported(struct drm_plane *_plane,
> }
> }
>
> +static bool intel_plane_format_mod_supported_async(struct drm_plane
> *_plane,
> + u32 format, u64 modifier)
> +{
> + struct intel_plane *plane = to_intel_plane(_plane);
> + struct intel_display *display = to_intel_display(plane);
> + int i, found = false;
> + u64 *async_modifiers;
> +
> + if (plane->id != 1)
> + return false;
> +
> + if (DISPLAY_VER(display) >= 12)
> + async_modifiers = tgl_asyn_modifiers;
> + else if (DISPLAY_VER(display) == 11)
> + async_modifiers = icl_async_modifiers;
> + else
> + async_modifiers = skl_async_modifiers;
> +
> + for (i = 0; i < sizeof(async_modifiers); i++) {
Array size check is incorrect.
> + if (modifier == async_modifiers[i])
> + found = true;
> + }
> + if (!found)
> + return false;
> +
> + /* Async flip supported only on RGB formats */
> + for (i = 0; i < sizeof(intel_async_formats); i++) {
Array size check is incorrect.
> + if (format == intel_async_formats[i])
> + return true;
> + }
> + return false;
> +}
> +
It is better to implement this function in the switch case format that XXX_plane_format_mod_supported() functions are implemented.
Imagine a scenario where a modifier is supported for some formats but not others. This function won't be able to make the distinction.
Regards
Chaitanya
> +#define INTEL_PLANE_FUNCS \
> + .update_plane = drm_atomic_helper_update_plane, \
> + .disable_plane = drm_atomic_helper_disable_plane, \
> + .destroy = intel_plane_destroy, \
> + .atomic_duplicate_state = intel_plane_duplicate_state, \
> + .atomic_destroy_state = intel_plane_destroy_state, \
> + .format_mod_supported_async =
> intel_plane_format_mod_supported_async
> +
> static const struct drm_plane_funcs skl_plane_funcs = {
> - .update_plane = drm_atomic_helper_update_plane,
> - .disable_plane = drm_atomic_helper_disable_plane,
> - .destroy = intel_plane_destroy,
> - .atomic_duplicate_state = intel_plane_duplicate_state,
> - .atomic_destroy_state = intel_plane_destroy_state,
> + INTEL_PLANE_FUNCS,
> +
> .format_mod_supported = skl_plane_format_mod_supported, };
>
> static const struct drm_plane_funcs icl_plane_funcs = {
> - .update_plane = drm_atomic_helper_update_plane,
> - .disable_plane = drm_atomic_helper_disable_plane,
> - .destroy = intel_plane_destroy,
> - .atomic_duplicate_state = intel_plane_duplicate_state,
> - .atomic_destroy_state = intel_plane_destroy_state,
> + INTEL_PLANE_FUNCS,
> +
> .format_mod_supported = icl_plane_format_mod_supported, };
>
> static const struct drm_plane_funcs tgl_plane_funcs = {
> - .update_plane = drm_atomic_helper_update_plane,
> - .disable_plane = drm_atomic_helper_disable_plane,
> - .destroy = intel_plane_destroy,
> - .atomic_duplicate_state = intel_plane_duplicate_state,
> - .atomic_destroy_state = intel_plane_destroy_state,
> + INTEL_PLANE_FUNCS,
> +
> .format_mod_supported = tgl_plane_format_mod_supported, };
>
>
> --
> 2.25.1
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-12 8:00 ` Borah, Chaitanya Kumar
@ 2025-01-13 8:22 ` Murthy, Arun R
2025-01-13 18:44 ` Borah, Chaitanya Kumar
0 siblings, 1 reply; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-13 8:22 UTC (permalink / raw)
To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
> > -----Original Message-----
> > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf Of
> > Arun R Murthy
> > Sent: Wednesday, January 8, 2025 11:09 AM
> > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> > intel- xe@lists.freedesktop.org
> > Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> > Subject: [PATCH v3 2/5] drm/plane: Expose function to create
> > format/modifier blob
> >
> > 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
> >
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a90
> > 68b31c0563a4c0 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)
>
> We can retain the original arguments (dev, plane) here. As I understand, plane-
> >formats[] and plane->modifiers[] are populated with all the formats and
> modifiers supported by the platform, respectively.
>
> The goal is to establish a mapping between the two using the callbacks
> format_mod_supported() or format_mod_supported_async().
> Since these arrays represent a superset of all the formats and modifiers the
> platform supports, we have sufficient information within drm_plane to decide
> how to pair them here.
>
Plane->format_types and plane->modifiers is the list of formats and modifiers supported by the plane. (This is true for sync flips only.) For each modifier all the formats listed in plane->format_types may not be supported but all of the formats mentioned in plane->format_types is supported by sync flips. In order to get the list of formats supported for each modifier a bit mask is created by the func pointer format_mod_supported.
The element format_offset in struct drm_format_modifier_blob is plane->format_types. So this is list of formats supported by this plane and holds good for only sync flips and may not support async flips. We need to get the subset of formats for async from the superset of formats from sync flips. For this we need a separate list of formats supported by async flip.
Please let me know if my understanding is wrong!
So with this understand we need pass 2 separate list of formats/modifiers for sync and async hence making it a parameter to this function.
> > {
> > 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 ||
>
> This patch looks incomplete because the implementation for async is split
> between this and [1]. It might be a good idea to have both the patch squashed.
>
>
> [1] https://patchwork.freedesktop.org/patch/631261/?series=140935&rev=2
>
In the 1st patch property is created and this 2nd patch trying to fetch the data to be exposed by the property created in 1st patch. I can squash both the patch in my next version if it makes sense to have both of these in a single patch.
Thanks and Regards,
Arun R Murthy
--------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC
2025-01-12 7:59 ` Borah, Chaitanya Kumar
@ 2025-01-13 8:22 ` Murthy, Arun R
2025-01-13 17:38 ` Borah, Chaitanya Kumar
0 siblings, 1 reply; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-13 8:22 UTC (permalink / raw)
To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
> > -----Original Message-----
> > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of
> > Arun R Murthy
> > Sent: Wednesday, January 8, 2025 11:09 AM
> > To: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org;
> > intel- xe@lists.freedesktop.org
> > Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> > Subject: [PATCH v3 1/5] drm/plane: Add new plane property
> > IN_FORMATS_ASYNC
> >
> > 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.
>
> s/done/do
> s/unsupported/supported
> s/flips/flip
>
Done!
> > Add a new function pointer similar to format_mod_supported
> > specifically for asynchronous flips.
> >
> > v2: Remove async variable from drm_plane (Ville)
> > v3: Add new function pointer for async (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 ++++++
> > include/drm/drm_plane.h | 20 ++++++++++++++++++++
> > 4 files changed, 39 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/drm_mode_config.c
> > b/drivers/gpu/drm/drm_mode_config.c
> > index
> >
> 8642a2fb25a90116dab975aa0ab6b51deafb4b96..dbbef20753f834a85ae9ded
> > 748cff2b3f0e85043 100644
> > --- a/drivers/gpu/drm/drm_mode_config.c
> > +++ b/drivers/gpu/drm/drm_mode_config.c
> > @@ -388,6 +388,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
> >
> a28b22fdd7a41aca82d097d42237851da9a0a79b..416818e54ccffcf3d3aada27
> > 23e96ce8ccf1dd97 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.
> > + *
>
> I think we should mention here that the absence of this property would mean
> that all format modifier pair in IN_FORMATS are also supported for async flips.
> That way the uAPI remains backward compatible.
>
I think this is clear with the above documentation. Anyway will
reframe to be more specific.
> > * 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
> >
> 271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c0f0
> > 97fce2d719f43844 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
> >
> dd718c62ac31bf16606f3ee9f025a5b171cd1e67..e8749e6fc3bc0acfc73bbd840
> > 1f85c3126e86759 100644
> > --- a/include/drm/drm_plane.h
> > +++ b/include/drm/drm_plane.h
> > @@ -549,6 +549,26 @@ struct drm_plane_funcs {
> > */
> > bool (*format_mod_supported)(struct drm_plane *plane, uint32_t
> > format,
> > uint64_t modifier);
> > + /**
> > + * @format_mod_supported_async:
> > + *
> > + * This optional hook is used for the DRM to determine if for
> > + * asychronous flip the given format/modifier combination is valid for
> > + * the plane. This allows the DRM to generate the correct format
> > + * bitmask (which formats apply to which modifier), and to validate
> > + * modifiers at atomic_check time.
> > + *
> > + * If not present, then any modifier in the plane's modifier
> > + * list is allowed with any of the plane's formats.
> > + *
>
> We still have to honor the IN_FORMATS property, right?
Sorry didn’t get it, this new property is in parallel to the existing
IN_FORMATS. We have retained it as is and added new property for async.
Anyway will reframe to be more clear.
>
> > + * Returns:
> > + *
> > + * True if the given modifier is valid for that format on the plane.
> > + * False otherwise.
> > + */
> > + bool (*format_mod_supported_async)(struct drm_plane *plane,
> > + uint32_t format, uint64_t modifier);
> > +
> > };
> >
>
> Some thoughts after going through all the patches. There is a bit of ambiguity
> how a driver can handle the IN_FORMATS_ASYNC property in cases where
> there are no specific restrictions in format modifier pairs for async.
>
> Two approaches here.
>
> 1. The driver should not expose the property at all.
> 2. The driver should fill up IN_FORMATS_ASYNC blob that indicates that all
> format modifier pair supported for sync are also supported for async flips.
>
> Approach 1 seems to be better for backward compatibility. If we follow
> approach 2, we do not need to expose the function create_in_formats_blob()
> and it can be handled through the format_mod_supported_async() function
> internally during plane initialization.
>
> Either way the documentation should be made clear what we expect from the
> userspace.
>
Documentation added says this is an optional property to convey the user with the list for formats/modifiers supported by the plane for async flips.
Compatibility wise this is a new property which is in parallel to IN_FORMATS and hence should not break anything.
Anyway will reframe and be more specific.
Thanks and Regards,
Arun R Murthy
--------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC
2025-01-13 8:22 ` Murthy, Arun R
@ 2025-01-13 17:38 ` Borah, Chaitanya Kumar
2025-01-16 9:54 ` Murthy, Arun R
0 siblings, 1 reply; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-13 17:38 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Kumar, Naveen1
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Monday, January 13, 2025 1:52 PM
> To: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>; dri-
> devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Subject: RE: [PATCH v3 1/5] drm/plane: Add new plane property
> IN_FORMATS_ASYNC
>
> > > -----Original Message-----
> > > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf
> > > Of Arun R Murthy
> > > Sent: Wednesday, January 8, 2025 11:09 AM
> > > To: dri-devel@lists.freedesktop.org;
> > > intel-gfx@lists.freedesktop.org;
> > > intel- xe@lists.freedesktop.org
> > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> > > Subject: [PATCH v3 1/5] drm/plane: Add new plane property
> > > IN_FORMATS_ASYNC
> > >
> > > 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.
> >
> > s/done/do
> > s/unsupported/supported
> > s/flips/flip
> >
> Done!
>
> > > Add a new function pointer similar to format_mod_supported
> > > specifically for asynchronous flips.
> > >
> > > v2: Remove async variable from drm_plane (Ville)
> > > v3: Add new function pointer for async (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 ++++++
> > > include/drm/drm_plane.h | 20 ++++++++++++++++++++
> > > 4 files changed, 39 insertions(+)
> > >
> > > diff --git a/drivers/gpu/drm/drm_mode_config.c
> > > b/drivers/gpu/drm/drm_mode_config.c
> > > index
> > >
> >
> 8642a2fb25a90116dab975aa0ab6b51deafb4b96..dbbef20753f834a85ae9ded
> > > 748cff2b3f0e85043 100644
> > > --- a/drivers/gpu/drm/drm_mode_config.c
> > > +++ b/drivers/gpu/drm/drm_mode_config.c
> > > @@ -388,6 +388,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
> > >
> >
> a28b22fdd7a41aca82d097d42237851da9a0a79b..416818e54ccffcf3d3aada27
> > > 23e96ce8ccf1dd97 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.
> > > + *
> >
> > I think we should mention here that the absence of this property would
> > mean that all format modifier pair in IN_FORMATS are also supported for
> async flips.
> > That way the uAPI remains backward compatible.
> >
> I think this is clear with the above documentation. Anyway will reframe to be
> more specific.
>
The line "Without this property the plane doesn't support buffers with modifiers " indicates that if this property is not present then no modifiers are supported for async.
This can't be true because all drivers currently do not have this property but they surely support modifiers in async flip. More on this below.
> > > * 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
> > >
> >
> 271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c0f0
> > > 97fce2d719f43844 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
> > >
> >
> dd718c62ac31bf16606f3ee9f025a5b171cd1e67..e8749e6fc3bc0acfc73bbd840
> > > 1f85c3126e86759 100644
> > > --- a/include/drm/drm_plane.h
> > > +++ b/include/drm/drm_plane.h
> > > @@ -549,6 +549,26 @@ struct drm_plane_funcs {
> > > */
> > > bool (*format_mod_supported)(struct drm_plane *plane, uint32_t
> > > format,
> > > uint64_t modifier);
> > > + /**
> > > + * @format_mod_supported_async:
> > > + *
> > > + * This optional hook is used for the DRM to determine if for
> > > + * asychronous flip the given format/modifier combination is valid for
> > > + * the plane. This allows the DRM to generate the correct format
> > > + * bitmask (which formats apply to which modifier), and to validate
> > > + * modifiers at atomic_check time.
> > > + *
> > > + * If not present, then any modifier in the plane's modifier
> > > + * list is allowed with any of the plane's formats.
> > > + *
> >
> > We still have to honor the IN_FORMATS property, right?
> Sorry didn’t get it, this new property is in parallel to the existing IN_FORMATS.
> We have retained it as is and added new property for async.
> Anyway will reframe to be more clear.
>
...
> >
> > > + * Returns:
> > > + *
> > > + * True if the given modifier is valid for that format on the plane.
> > > + * False otherwise.
> > > + */
> > > + bool (*format_mod_supported_async)(struct drm_plane *plane,
> > > + uint32_t format, uint64_t modifier);
> > > +
> > > };
> > >
> >
> > Some thoughts after going through all the patches. There is a bit of
> > ambiguity how a driver can handle the IN_FORMATS_ASYNC property in
> > cases where there are no specific restrictions in format modifier pairs for
> async.
> >
> > Two approaches here.
> >
> > 1. The driver should not expose the property at all.
> > 2. The driver should fill up IN_FORMATS_ASYNC blob that indicates that
> > all format modifier pair supported for sync are also supported for async
> flips.
> >
> > Approach 1 seems to be better for backward compatibility. If we follow
> > approach 2, we do not need to expose the function
> > create_in_formats_blob() and it can be handled through the
> > format_mod_supported_async() function internally during plane
> initialization.
> >
> > Either way the documentation should be made clear what we expect from
> > the userspace.
> >
> Documentation added says this is an optional property to convey the user
> with the list for formats/modifiers supported by the plane for async flips.
> Compatibility wise this is a new property which is in parallel to IN_FORMATS
> and hence should not break anything.
> Anyway will reframe and be more specific.
>
Yes, they are different properties however we have to clearly define the policy for the property. For example, with the current
implementation the policy should be something like this.
1. Userspace checks if IN_FORMATS_ASYNC property is present. If present check if current format and modifier pair is supported.
2. If property the IN_FORMATS_ASYNC is *not* present, we have two options
a. The user space decides that no modifier is supported. We *cannot* go by this because IN_FORMAT_ASYNC is an optional property
and many drivers might not implement it. Because all the format modifier pair supported for sync are also supported for async.
b. The user space will check if the frame modifier pair is present in IN_FORMAT_SYNC. This should be explicitly called out in the documentation.
If no format modifier pair is found after these two steps then we can conclude that no modifier is supported.
It is important to call it out because if you see the code proposed by Naveen in comments in the MR[1]
if (meta_onscreen_native_is_tearing_enabled (onscreen_native))
crtc_mods = meta_kms_plane_get_tearing_modifiers_for_format (plane, format);
else
crtc_mods = meta_kms_plane_get_modifiers_for_format (plane, format);
This makes the property IN_FORMAT_ASYNC non-optional. That is the absence of the property will lead to no format modifier
pair supported even though the driver did not intend it that way.
[1] https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063/diffs?commit_id=c21a47175d7ec0f48414335cd2de010ae9670626#f4e112542f79a68679333911002f2f66d032fbf6
Regards
Chaitanya
> Thanks and Regards,
> Arun R Murthy
> --------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-13 8:22 ` Murthy, Arun R
@ 2025-01-13 18:44 ` Borah, Chaitanya Kumar
2025-01-16 9:54 ` Murthy, Arun R
0 siblings, 1 reply; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-13 18:44 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
> -----Original Message-----
> From: Murthy, Arun R <arun.r.murthy@intel.com>
> Sent: Monday, January 13, 2025 1:52 PM
> To: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>; dri-
> devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Subject: RE: [PATCH v3 2/5] drm/plane: Expose function to create
> format/modifier blob
>
> > > -----Original Message-----
> > > From: Intel-gfx <intel-gfx-bounces@lists.freedesktop.org> On Behalf
> > > Of Arun R Murthy
> > > Sent: Wednesday, January 8, 2025 11:09 AM
> > > To: dri-devel@lists.freedesktop.org;
> > > intel-gfx@lists.freedesktop.org;
> > > intel- xe@lists.freedesktop.org
> > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> > > Subject: [PATCH v3 2/5] drm/plane: Expose function to create
> > > format/modifier blob
> > >
> > > 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
> > >
> >
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a90
> > > 68b31c0563a4c0 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)
> >
> > We can retain the original arguments (dev, plane) here. As I
> > understand, plane-
> > >formats[] and plane->modifiers[] are populated with all the formats
> > >and
> > modifiers supported by the platform, respectively.
> >
> > The goal is to establish a mapping between the two using the callbacks
> > format_mod_supported() or format_mod_supported_async().
> > Since these arrays represent a superset of all the formats and
> > modifiers the platform supports, we have sufficient information within
> > drm_plane to decide how to pair them here.
> >
> Plane->format_types and plane->modifiers is the list of formats and modifiers
> supported by the plane. (This is true for sync flips only.) For each modifier all
> the formats listed in plane->format_types may not be supported but all of the
> formats mentioned in plane->format_types is supported by sync flips. In
> order to get the list of formats supported for each modifier a bit mask is
> created by the func pointer format_mod_supported.
> The element format_offset in struct drm_format_modifier_blob is plane-
> >format_types. So this is list of formats supported by this plane and holds
> good for only sync flips and may not support async flips. We need to get the
> subset of formats for async from the superset of formats from sync flips. For
> this we need a separate list of formats supported by async flip.
>
> Please let me know if my understanding is wrong!
>
> So with this understand we need pass 2 separate list of formats/modifiers for
> sync and async hence making it a parameter to this function.
Your understanding is correct however from pure coding perspective it will still work even if we don't pass different parameters for async and sync.
I am making an assumption here (please correct me if I am wrong) that all the formats and modifiers supported for async are a subset of
all the formats and modifiers supported for sync flips.
In cases where none of the formats are supported for a modifier (or a format is not supported at all)
the bit field will end up with all "Zero"s
if (!plane->funcs->format_mod_supported_async ||
plane->funcs->format_mod_supported_async(plane,
formats[j],
modifiers[i])) {
mod->formats |= 1ULL << j;
}
And if you look in the proposed mutter code[1] for example, it will lead to a NULL entry in the hash table for that particular format indicating that it is not supported.
However, I do see merits in your implementation because it will avoid creation of unnecessary entries both in the blob and the hash table in user space.
On the flip side, it creates more static arrays that we need to maintain for different platforms. (Though we can perhaps avoid it by some smart re-use of intel_modifiers[] which IRC you had implemented in a previous patch).
So as far exposing the arguments I leave it to you. You can weigh in both the options.
[1] https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063/diffs?commit_id=c21a47175d7ec0f48414335cd2de010ae9670626#0806c68597f9e25c110c6597ae0c9e69d9c0c5a8_378_448
>
> > > {
> > > 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 ||
> >
> > This patch looks incomplete because the implementation for async is
> > split between this and [1]. It might be a good idea to have both the patch
> squashed.
> >
> >
> > [1]
> > https://patchwork.freedesktop.org/patch/631261/?series=140935&rev=2
> >
> In the 1st patch property is created and this 2nd patch trying to fetch the data
> to be exposed by the property created in 1st patch. I can squash both the
> patch in my next version if it makes sense to have both of these in a single
> patch.
>
If at all it should be made other way around. First fill up the data and then expose the property.
Also the patch has some remnants of the previous version which do not fit well with the current version.
For example the part,
+ if (is_async ||
+ !plane->funcs->format_mod_supported ||
Making it one patch should be good enough.
Regards
Chaitanya
> Thanks and Regards,
> Arun R Murthy
> --------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC
2025-01-13 17:38 ` Borah, Chaitanya Kumar
@ 2025-01-16 9:54 ` Murthy, Arun R
2025-02-17 6:30 ` Kumar, Naveen1
0 siblings, 1 reply; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-16 9:54 UTC (permalink / raw)
To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Kumar, Naveen1
> > > > -----Original Message-----
> > > > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On
> > > > Behalf Of Arun R Murthy
> > > > Sent: Wednesday, January 8, 2025 11:09 AM
> > > > To: dri-devel@lists.freedesktop.org;
> > > > intel-gfx@lists.freedesktop.org;
> > > > intel- xe@lists.freedesktop.org
> > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>
> > > > Subject: [PATCH v3 1/5] drm/plane: Add new plane property
> > > > IN_FORMATS_ASYNC
> > > >
> > > > 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.
> > >
> > > s/done/do
> > > s/unsupported/supported
> > > s/flips/flip
> > >
> > Done!
> >
> > > > Add a new function pointer similar to format_mod_supported
> > > > specifically for asynchronous flips.
> > > >
> > > > v2: Remove async variable from drm_plane (Ville)
> > > > v3: Add new function pointer for async (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 ++++++
> > > > include/drm/drm_plane.h | 20 ++++++++++++++++++++
> > > > 4 files changed, 39 insertions(+)
> > > >
> > > > diff --git a/drivers/gpu/drm/drm_mode_config.c
> > > > b/drivers/gpu/drm/drm_mode_config.c
> > > > index
> > > >
> > >
> >
> 8642a2fb25a90116dab975aa0ab6b51deafb4b96..dbbef20753f834a85ae9ded
> > > > 748cff2b3f0e85043 100644
> > > > --- a/drivers/gpu/drm/drm_mode_config.c
> > > > +++ b/drivers/gpu/drm/drm_mode_config.c
> > > > @@ -388,6 +388,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
> > > >
> > >
> >
> a28b22fdd7a41aca82d097d42237851da9a0a79b..416818e54ccffcf3d3aada27
> > > > 23e96ce8ccf1dd97 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.
> > > > + *
> > >
> > > I think we should mention here that the absence of this property
> > > would mean that all format modifier pair in IN_FORMATS are also
> > > supported for
> > async flips.
> > > That way the uAPI remains backward compatible.
> > >
> > I think this is clear with the above documentation. Anyway will
> > reframe to be more specific.
> >
>
> The line "Without this property the plane doesn't support buffers with
> modifiers " indicates that if this property is not present then no modifiers are
> supported for async.
> This can't be true because all drivers currently do not have this property but
> they surely support modifiers in async flip. More on this below.
>
As documented this an optional property with this property user will have the
feasibility to check for supported one and if not might end up with failure commit
due to unsupported formats.
Will reframe this to avoid confusion!
> > > > * 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
> > > >
> > >
> >
> 271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c0f0
> > > > 97fce2d719f43844 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
> > > >
> > >
> >
> dd718c62ac31bf16606f3ee9f025a5b171cd1e67..e8749e6fc3bc0acfc73bbd840
> > > > 1f85c3126e86759 100644
> > > > --- a/include/drm/drm_plane.h
> > > > +++ b/include/drm/drm_plane.h
> > > > @@ -549,6 +549,26 @@ struct drm_plane_funcs {
> > > > */
> > > > bool (*format_mod_supported)(struct drm_plane *plane, uint32_t
> > > > format,
> > > > uint64_t modifier);
> > > > + /**
> > > > + * @format_mod_supported_async:
> > > > + *
> > > > + * This optional hook is used for the DRM to determine if for
> > > > + * asychronous flip the given format/modifier combination is valid for
> > > > + * the plane. This allows the DRM to generate the correct format
> > > > + * bitmask (which formats apply to which modifier), and to validate
> > > > + * modifiers at atomic_check time.
> > > > + *
> > > > + * If not present, then any modifier in the plane's modifier
> > > > + * list is allowed with any of the plane's formats.
> > > > + *
> > >
> > > We still have to honor the IN_FORMATS property, right?
> > Sorry didn’t get it, this new property is in parallel to the existing
> IN_FORMATS.
> > We have retained it as is and added new property for async.
> > Anyway will reframe to be more clear.
> >
>
> ...
>
> > >
> > > > + * Returns:
> > > > + *
> > > > + * True if the given modifier is valid for that format on the plane.
> > > > + * False otherwise.
> > > > + */
> > > > + bool (*format_mod_supported_async)(struct drm_plane *plane,
> > > > + uint32_t format, uint64_t modifier);
> > > > +
> > > > };
> > > >
> > >
> > > Some thoughts after going through all the patches. There is a bit of
> > > ambiguity how a driver can handle the IN_FORMATS_ASYNC property in
> > > cases where there are no specific restrictions in format modifier
> > > pairs for
> > async.
> > >
> > > Two approaches here.
> > >
> > > 1. The driver should not expose the property at all.
> > > 2. The driver should fill up IN_FORMATS_ASYNC blob that indicates
> > > that all format modifier pair supported for sync are also supported
> > > for async
> > flips.
> > >
> > > Approach 1 seems to be better for backward compatibility. If we
> > > follow approach 2, we do not need to expose the function
> > > create_in_formats_blob() and it can be handled through the
> > > format_mod_supported_async() function internally during plane
> > initialization.
> > >
> > > Either way the documentation should be made clear what we expect
> > > from the userspace.
> > >
> > Documentation added says this is an optional property to convey the
> > user with the list for formats/modifiers supported by the plane for async flips.
> > Compatibility wise this is a new property which is in parallel to
> > IN_FORMATS and hence should not break anything.
> > Anyway will reframe and be more specific.
> >
>
> Yes, they are different properties however we have to clearly define the policy
> for the property. For example, with the current implementation the policy
> should be something like this.
>
> 1. Userspace checks if IN_FORMATS_ASYNC property is present. If present check
> if current format and modifier pair is supported.
> 2. If property the IN_FORMATS_ASYNC is *not* present, we have two options
>
> a. The user space decides that no modifier is supported. We
> *cannot* go by this because IN_FORMAT_ASYNC is an optional property
> and many drivers might not implement it. Because all the format
> modifier pair supported for sync are also supported for async.
>
> b. The user space will check if the frame modifier pair is present in
> IN_FORMAT_SYNC. This should be explicitly called out in the documentation.
>
Ok sure will be more specific.
> If no format modifier pair is found after these two steps then we can conclude
> that no modifier is supported.
>
> It is important to call it out because if you see the code proposed by Naveen in
> comments in the MR[1]
>
> if (meta_onscreen_native_is_tearing_enabled (onscreen_native))
> crtc_mods = meta_kms_plane_get_tearing_modifiers_for_format (plane,
> format); else
> crtc_mods = meta_kms_plane_get_modifiers_for_format (plane, format);
>
> This makes the property IN_FORMAT_ASYNC non-optional. That is the absence
> of the property will lead to no format modifier pair supported even though the
> driver did not intend it that way.
>
That cannot be the case, as this is an optional and not that all the drivers will
have this property. This is a good to have to avoid failure due to unsupported
format/modifier.
Thanks and Regards,
Arun R Murthy
-------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-13 18:44 ` Borah, Chaitanya Kumar
@ 2025-01-16 9:54 ` Murthy, Arun R
0 siblings, 0 replies; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-16 9:54 UTC (permalink / raw)
To: Borah, Chaitanya Kumar, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
> > > > 68b31c0563a4c0 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)
> > >
> > > We can retain the original arguments (dev, plane) here. As I
> > > understand, plane-
> > > >formats[] and plane->modifiers[] are populated with all the formats
> > > >and
> > > modifiers supported by the platform, respectively.
> > >
> > > The goal is to establish a mapping between the two using the
> > > callbacks
> > > format_mod_supported() or format_mod_supported_async().
> > > Since these arrays represent a superset of all the formats and
> > > modifiers the platform supports, we have sufficient information
> > > within drm_plane to decide how to pair them here.
> > >
> > Plane->format_types and plane->modifiers is the list of formats and
> > Plane->modifiers
> > supported by the plane. (This is true for sync flips only.) For each
> > modifier all the formats listed in plane->format_types may not be
> > supported but all of the formats mentioned in plane->format_types is
> > supported by sync flips. In order to get the list of formats supported
> > for each modifier a bit mask is created by the func pointer
> format_mod_supported.
> > The element format_offset in struct drm_format_modifier_blob is plane-
> > >format_types. So this is list of formats supported by this plane and
> > >holds
> > good for only sync flips and may not support async flips. We need to
> > get the subset of formats for async from the superset of formats from
> > sync flips. For this we need a separate list of formats supported by async flip.
> >
> > Please let me know if my understanding is wrong!
> >
> > So with this understand we need pass 2 separate list of
> > formats/modifiers for sync and async hence making it a parameter to this
> function.
>
> Your understanding is correct however from pure coding perspective it will still
> work even if we don't pass different parameters for async and sync.
> I am making an assumption here (please correct me if I am wrong) that all the
> formats and modifiers supported for async are a subset of all the formats and
> modifiers supported for sync flips.
>
Yes this assumption is correct.
> In cases where none of the formats are supported for a modifier (or a format is
> not supported at all) the bit field will end up with all "Zero"s
>
Yes, that’s right.
> if (!plane->funcs-
> >format_mod_supported_async ||
> plane->funcs-
> >format_mod_supported_async(plane,
>
> formats[j],
>
> modifiers[i])) {
> mod->formats |= 1ULL << j;
> }
>
> And if you look in the proposed mutter code[1] for example, it will lead to a
> NULL entry in the hash table for that particular format indicating that it is not
> supported.
>
In the structure that is exposed to the user, struct drm_format_modifier_blob the
element formats_offset holds the list of formats that hardware supports.
In order to get this list we will have to maintain the supported list between sync
and async separately.
> However, I do see merits in your implementation because it will avoid creation
> of unnecessary entries both in the blob and the hash table in user space.
>
> On the flip side, it creates more static arrays that we need to maintain for
> different platforms. (Though we can perhaps avoid it by some smart re-use of
> intel_modifiers[] which IRC you had implemented in a previous patch).
>
Yes somewhere in the driver we will have to have this statically either in a list
or in the format_mod_supported_async().
> So as far exposing the arguments I leave it to you. You can weigh in both the
> options.
>
> [1] https://gitlab.gnome.org/GNOME/mutter/-
> /merge_requests/4063/diffs?commit_id=c21a47175d7ec0f48414335cd2de010
> ae9670626#0806c68597f9e25c110c6597ae0c9e69d9c0c5a8_378_448
>
> >
> > > > {
> > > > 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 ||
> > >
> > > This patch looks incomplete because the implementation for async is
> > > split between this and [1]. It might be a good idea to have both the
> > > patch
> > squashed.
> > >
> > >
> > > [1]
> > > https://patchwork.freedesktop.org/patch/631261/?series=140935&rev=2
> > >
> > In the 1st patch property is created and this 2nd patch trying to
> > fetch the data to be exposed by the property created in 1st patch. I
> > can squash both the patch in my next version if it makes sense to have
> > both of these in a single patch.
> >
>
> If at all it should be made other way around. First fill up the data and then
> expose the property.
> Also the patch has some remnants of the previous version which do not fit well
> with the current version.
> For example the part,
>
> + if (is_async ||
> + !plane->funcs->format_mod_supported ||
>
> Making it one patch should be good enough.
Ok, Done!
Thanks and Regards,
Arun R Murthy
-------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-08 5:39 ` [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob Arun R Murthy
2025-01-12 8:00 ` Borah, Chaitanya Kumar
@ 2025-01-20 20:42 ` Ville Syrjälä
2025-01-22 9:27 ` Murthy, Arun R
1 sibling, 1 reply; 36+ messages in thread
From: Ville Syrjälä @ 2025-01-20 20:42 UTC (permalink / raw)
To: Arun R Murthy; +Cc: dri-devel, intel-gfx, intel-xe
On Wed, Jan 08, 2025 at 11:09:00AM +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 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a9068b31c0563a4c0 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);
IMO the function should only create the blob. Leave it to the caller to
attach it.
The 'is_async' parameter could also be replaced with with a function
pointer to the appropriate format_mod_supported() function. That
makes the implementation entirely generic.
>
> 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 e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf369894a5657cd45 100644
> --- a/include/drm/drm_plane.h
> +++ b/include/drm/drm_plane.h
> @@ -1008,5 +1008,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);
I don't think this needs to be exposed to anyone.
__drm_universal_plane_init() should just populate both
the normal blob, and and the async blob (iff
.format_mod_supported_async() is provided).
>
> #endif
>
> --
> 2.25.1
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers
2025-01-08 5:39 ` [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
2025-01-12 8:02 ` Borah, Chaitanya Kumar
@ 2025-01-20 20:47 ` Ville Syrjälä
2025-01-21 3:34 ` Murthy, Arun R
1 sibling, 1 reply; 36+ messages in thread
From: Ville Syrjälä @ 2025-01-20 20:47 UTC (permalink / raw)
To: Arun R Murthy; +Cc: dri-devel, intel-gfx, intel-xe
On Wed, Jan 08, 2025 at 11:09:02AM +0530, Arun R Murthy wrote:
> 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>
> ---
> drivers/gpu/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 ff9764cac1e71959e56283f61b5192ea261cec7a..e5e47f2219dae62e76cbde2efb40266b047ab2b2 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,
> +};
I've just pushed my .can_async_flip() thing. I'm thinking with
that all this can just disappear and we can have a completely
generic implementation. Eg something like:
intel_plane_format_mod_supported_async()
{
// some generic checks here (eg. reject planar formats)
return plane->format_mod_supported() &&
plane->can_async_flip();
}
> +
> int skl_format_to_fourcc(int format, bool rgb_order, bool alpha)
> {
> switch (format) {
> @@ -2613,6 +2651,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;
> @@ -2715,6 +2754,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
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers
2025-01-20 20:47 ` Ville Syrjälä
@ 2025-01-21 3:34 ` Murthy, Arun R
2025-01-21 13:40 ` Ville Syrjälä
0 siblings, 1 reply; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-21 3:34 UTC (permalink / raw)
To: Ville Syrjälä
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
> On Wed, Jan 08, 2025 at 11:09:02AM +0530, Arun R Murthy wrote:
> > 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>
> > ---
> > drivers/gpu/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
> >
> ff9764cac1e71959e56283f61b5192ea261cec7a..e5e47f2219dae62e76cbde2e
> fb40
> > 266b047ab2b2 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,
> > +};
>
> I've just pushed my .can_async_flip() thing. I'm thinking with that all this can
> just disappear and we can have a completely generic implementation. Eg
> something like:
>
Thanks, will rebase and push!
Thanks and Regards,
Arun R Murthy
--------------------
> intel_plane_format_mod_supported_async()
> {
> // some generic checks here (eg. reject planar formats)
>
> return plane->format_mod_supported() &&
> plane->can_async_flip();
> }
>
> > +
> > int skl_format_to_fourcc(int format, bool rgb_order, bool alpha) {
> > switch (format) {
> > @@ -2613,6 +2651,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;
> > @@ -2715,6 +2754,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
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers
2025-01-21 3:34 ` Murthy, Arun R
@ 2025-01-21 13:40 ` Ville Syrjälä
0 siblings, 0 replies; 36+ messages in thread
From: Ville Syrjälä @ 2025-01-21 13:40 UTC (permalink / raw)
To: Murthy, Arun R
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
On Tue, Jan 21, 2025 at 03:34:20AM +0000, Murthy, Arun R wrote:
> > On Wed, Jan 08, 2025 at 11:09:02AM +0530, Arun R Murthy wrote:
> > > 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>
> > > ---
> > > drivers/gpu/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
> > >
> > ff9764cac1e71959e56283f61b5192ea261cec7a..e5e47f2219dae62e76cbde2e
> > fb40
> > > 266b047ab2b2 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,
> > > +};
> >
> > I've just pushed my .can_async_flip() thing. I'm thinking with that all this can
> > just disappear and we can have a completely generic implementation. Eg
> > something like:
> >
> Thanks, will rebase and push!
>
> Thanks and Regards,
> Arun R Murthy
> --------------------
> > intel_plane_format_mod_supported_async()
> > {
> > // some generic checks here (eg. reject planar formats)
> >
> > return plane->format_mod_supported() &&
> > plane->can_async_flip();
> > }
Actually for this one I think it'd probably make sense to call the
normal format_mod_supported() before doing any other checks, just
in case we ever get situations where the parameters come directly
from userspace. It's better to filter out completely bogus values
as early as possible, and the normal format_mod_supported() already
has to be prepared for garbage values.
> >
> > > +
> > > int skl_format_to_fourcc(int format, bool rgb_order, bool alpha) {
> > > switch (format) {
> > > @@ -2613,6 +2651,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;
> > > @@ -2715,6 +2754,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
> >
> > --
> > Ville Syrjälä
> > Intel
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-20 20:42 ` Ville Syrjälä
@ 2025-01-22 9:27 ` Murthy, Arun R
2025-01-23 7:47 ` Murthy, Arun R
0 siblings, 1 reply; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-22 9:27 UTC (permalink / raw)
To: Ville Syrjälä
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
> On Wed, Jan 08, 2025 at 11:09:00AM +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
> >
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a906
> 8
> > b31c0563a4c0 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);
>
> IMO the function should only create the blob. Leave it to the caller to attach it.
>
Prior to this change for sync formats/modifiers the property attach was also done in the same function. So retained it as it.
> The 'is_async' parameter could also be replaced with with a function pointer to
> the appropriate format_mod_supported() function. That makes the
> implementation entirely generic.
>
If the list of formats/modifiers for sync and async is passed to this function, then based on the list the corresponding function pointer can be called.
This was done in the earlier patchset.
> >
> > 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
> >
> e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> 369
> > 894a5657cd45 100644
> > --- a/include/drm/drm_plane.h
> > +++ b/include/drm/drm_plane.h
> > @@ -1008,5 +1008,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);
>
> I don't think this needs to be exposed to anyone.
> __drm_universal_plane_init() should just populate both the normal blob, and
> and the async blob (iff
> .format_mod_supported_async() is provided).
>
Ok!
Thanks and Regards,
Arun R Murthy
--------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-22 9:27 ` Murthy, Arun R
@ 2025-01-23 7:47 ` Murthy, Arun R
2025-01-24 11:25 ` Ville Syrjälä
0 siblings, 1 reply; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-23 7:47 UTC (permalink / raw)
To: Ville Syrjälä
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
> > On Wed, Jan 08, 2025 at 11:09:00AM +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
> > >
> >
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a906
> > 8
> > > b31c0563a4c0 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);
> >
> > IMO the function should only create the blob. Leave it to the caller to attach
> it.
> >
> Prior to this change for sync formats/modifiers the property attach was also
> done in the same function. So retained it as it.
>
> > The 'is_async' parameter could also be replaced with with a function
> > pointer to the appropriate format_mod_supported() function. That makes
> > the implementation entirely generic.
> >
> If the list of formats/modifiers for sync and async is passed to this function, then
> based on the list the corresponding function pointer can be called.
> This was done in the earlier patchset.
>
> > >
> > > 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
> > >
> >
> e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> > 369
> > > 894a5657cd45 100644
> > > --- a/include/drm/drm_plane.h
> > > +++ b/include/drm/drm_plane.h
> > > @@ -1008,5 +1008,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);
> >
> > I don't think this needs to be exposed to anyone.
> > __drm_universal_plane_init() should just populate both the normal
> > blob, and and the async blob (iff
> > .format_mod_supported_async() is provided).
> >
> Ok!
>
For __drm_universal_plane_init() to have both the sync/async format/modifiers list we will have to add new elements to struct drm_plane to hold the async formats/modifiers.
Then upon adding new elements in struct drm_plane we may not need to pass a function pointer instead of is_async as commented above as well as this new elements added in the struct drm_plane helps out over here.
New elements to be added to the struct drm_plane
Struct drm_plane {
U32 * formats_async;
U32 format_async_count;
U64 *async_modifiers,
U32 async_modifier_count
}
Then the functionwith below changes it will be generic and no exporting of the func would be required
create_format_blob()
{
If(plane->format_count)
/* Create blob for sync and call the format_mod_supported() */
If(plane->format_async_count)
/* Create blob for async and call the format_mod_async_supported() */
}
Is my understanding correct?
Thanks and Regards,
Arun R Murthy
--------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-23 7:47 ` Murthy, Arun R
@ 2025-01-24 11:25 ` Ville Syrjälä
2025-01-25 6:55 ` Murthy, Arun R
0 siblings, 1 reply; 36+ messages in thread
From: Ville Syrjälä @ 2025-01-24 11:25 UTC (permalink / raw)
To: Murthy, Arun R
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
On Thu, Jan 23, 2025 at 07:47:14AM +0000, Murthy, Arun R wrote:
> > > On Wed, Jan 08, 2025 at 11:09:00AM +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
> > > >
> > >
> > 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a906
> > > 8
> > > > b31c0563a4c0 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);
> > >
> > > IMO the function should only create the blob. Leave it to the caller to attach
> > it.
> > >
> > Prior to this change for sync formats/modifiers the property attach was also
> > done in the same function. So retained it as it.
> >
> > > The 'is_async' parameter could also be replaced with with a function
> > > pointer to the appropriate format_mod_supported() function. That makes
> > > the implementation entirely generic.
> > >
> > If the list of formats/modifiers for sync and async is passed to this function, then
> > based on the list the corresponding function pointer can be called.
> > This was done in the earlier patchset.
> >
> > > >
> > > > 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
> > > >
> > >
> > e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> > > 369
> > > > 894a5657cd45 100644
> > > > --- a/include/drm/drm_plane.h
> > > > +++ b/include/drm/drm_plane.h
> > > > @@ -1008,5 +1008,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);
> > >
> > > I don't think this needs to be exposed to anyone.
> > > __drm_universal_plane_init() should just populate both the normal
> > > blob, and and the async blob (iff
> > > .format_mod_supported_async() is provided).
> > >
> > Ok!
> >
> For __drm_universal_plane_init() to have both the sync/async format/modifiers list we will have to add new elements to struct drm_plane to hold the async formats/modifiers.
No, you can just use the already existing format/modifier lists.
.format_mod_supported_async() will filter out what's not wanted.
> Then upon adding new elements in struct drm_plane we may not need to pass a function pointer instead of is_async as commented above as well as this new elements added in the struct drm_plane helps out over here.
>
> New elements to be added to the struct drm_plane
> Struct drm_plane {
> U32 * formats_async;
> U32 format_async_count;
> U64 *async_modifiers,
> U32 async_modifier_count
> }
>
> Then the functionwith below changes it will be generic and no exporting of the func would be required
> create_format_blob()
> {
> If(plane->format_count)
> /* Create blob for sync and call the format_mod_supported() */
>
> If(plane->format_async_count)
> /* Create blob for async and call the format_mod_async_supported() */
> }
>
> Is my understanding correct?
>
> Thanks and Regards,
> Arun R Murthy
> --------------------
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-24 11:25 ` Ville Syrjälä
@ 2025-01-25 6:55 ` Murthy, Arun R
2025-01-27 7:25 ` Borah, Chaitanya Kumar
0 siblings, 1 reply; 36+ messages in thread
From: Murthy, Arun R @ 2025-01-25 6:55 UTC (permalink / raw)
To: Ville Syrjälä
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
> On Thu, Jan 23, 2025 at 07:47:14AM +0000, Murthy, Arun R wrote:
> > > > On Wed, Jan 08, 2025 at 11:09:00AM +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
> > > > >
> > > >
> > >
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a90
> > > 6
> > > > 8
> > > > > b31c0563a4c0 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);
> > > >
> > > > IMO the function should only create the blob. Leave it to the
> > > > caller to attach
> > > it.
> > > >
> > > Prior to this change for sync formats/modifiers the property attach
> > > was also done in the same function. So retained it as it.
> > >
> > > > The 'is_async' parameter could also be replaced with with a
> > > > function pointer to the appropriate format_mod_supported()
> > > > function. That makes the implementation entirely generic.
> > > >
> > > If the list of formats/modifiers for sync and async is passed to
> > > this function, then based on the list the corresponding function pointer can
> be called.
> > > This was done in the earlier patchset.
> > >
> > > > >
> > > > > 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
> > > > >
> > > >
> > >
> e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> > > > 369
> > > > > 894a5657cd45 100644
> > > > > --- a/include/drm/drm_plane.h
> > > > > +++ b/include/drm/drm_plane.h
> > > > > @@ -1008,5 +1008,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);
> > > >
> > > > I don't think this needs to be exposed to anyone.
> > > > __drm_universal_plane_init() should just populate both the normal
> > > > blob, and and the async blob (iff
> > > > .format_mod_supported_async() is provided).
> > > >
> > > Ok!
> > >
> > For __drm_universal_plane_init() to have both the sync/async
> format/modifiers list we will have to add new elements to struct drm_plane to
> hold the async formats/modifiers.
>
> No, you can just use the already existing format/modifier lists.
> .format_mod_supported_async() will filter out what's not wanted.
>
Agree, to populate the struct drm_format_modifier .format_mod_supported_async along with the existing formats/modifier list should be sufficient.
In case of async for the struct drm_format_modifier_blob the elements format_offset includes the list of formats supported by async only. For this we will need to have the static list. So can passing this list be done by adding new elements in drm_plane specifically for async.
Thanks and Regards,
Arun R Murthy
-------------------
> > Then upon adding new elements in struct drm_plane we may not need to
> pass a function pointer instead of is_async as commented above as well as this
> new elements added in the struct drm_plane helps out over here.
> >
> > New elements to be added to the struct drm_plane Struct drm_plane {
> > U32 * formats_async;
> > U32 format_async_count;
> > U64 *async_modifiers,
> > U32 async_modifier_count
> > }
> >
> > Then the functionwith below changes it will be generic and no
> > exporting of the func would be required
> > create_format_blob()
> > {
> > If(plane->format_count)
> > /* Create blob for sync and call the format_mod_supported()
> */
> >
> > If(plane->format_async_count)
> > /* Create blob for async and call the
> format_mod_async_supported()
> > */ }
> >
> > Is my understanding correct?
> >
> > Thanks and Regards,
> > Arun R Murthy
> > --------------------
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-25 6:55 ` Murthy, Arun R
@ 2025-01-27 7:25 ` Borah, Chaitanya Kumar
2025-01-27 19:13 ` Ville Syrjälä
0 siblings, 1 reply; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-27 7:25 UTC (permalink / raw)
To: Murthy, Arun R, Ville Syrjälä
Cc: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
intel-xe@lists.freedesktop.org
Hello Ville,
> -----Original Message-----
> From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Murthy,
> Arun R
> Sent: Saturday, January 25, 2025 12:25 PM
> To: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Subject: RE: [PATCH v3 2/5] drm/plane: Expose function to create
> format/modifier blob
>
> > On Thu, Jan 23, 2025 at 07:47:14AM +0000, Murthy, Arun R wrote:
> > > > > On Wed, Jan 08, 2025 at 11:09:00AM +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
> > > > > >
> > > > >
> > > >
> >
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a90
> > > > 6
> > > > > 8
> > > > > > b31c0563a4c0 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);
> > > > >
> > > > > IMO the function should only create the blob. Leave it to the
> > > > > caller to attach
> > > > it.
> > > > >
> > > > Prior to this change for sync formats/modifiers the property
> > > > attach was also done in the same function. So retained it as it.
> > > >
> > > > > The 'is_async' parameter could also be replaced with with a
> > > > > function pointer to the appropriate format_mod_supported()
> > > > > function. That makes the implementation entirely generic.
> > > > >
> > > > If the list of formats/modifiers for sync and async is passed to
> > > > this function, then based on the list the corresponding function
> > > > pointer can
> > be called.
> > > > This was done in the earlier patchset.
> > > >
> > > > > >
> > > > > > 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
> > > > > >
> > > > >
> > > >
> >
> e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> > > > > 369
> > > > > > 894a5657cd45 100644
> > > > > > --- a/include/drm/drm_plane.h
> > > > > > +++ b/include/drm/drm_plane.h
> > > > > > @@ -1008,5 +1008,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);
> > > > >
> > > > > I don't think this needs to be exposed to anyone.
> > > > > __drm_universal_plane_init() should just populate both the
> > > > > normal blob, and and the async blob (iff
> > > > > .format_mod_supported_async() is provided).
> > > > >
> > > > Ok!
> > > >
> > > For __drm_universal_plane_init() to have both the sync/async
> > format/modifiers list we will have to add new elements to struct
> > drm_plane to hold the async formats/modifiers.
> >
> > No, you can just use the already existing format/modifier lists.
> > .format_mod_supported_async() will filter out what's not wanted.
> >
> Agree, to populate the struct drm_format_modifier
> .format_mod_supported_async along with the existing formats/modifier list
> should be sufficient.
> In case of async for the struct drm_format_modifier_blob the elements
> format_offset includes the list of formats supported by async only. For this we
> will need to have the static list. So can passing this list be done by adding new
> elements in drm_plane specifically for async.
Just to add to Arun's point. We had this discussion on thread [1].
If we populate struct drm_format_modifier_blob for async using just the existing format/modifier lists in struct drm_plane,
We will be mis-representing the following members of the structure to the user space
struct drm_format_modifier_blob {
/* Number of fourcc formats supported */
__u32 count_formats;
/* Number of drm_format_modifiers */
__u32 count_modifiers;
};
However, as you correctly point out, it should still work because of the format-modifier bit mask.
But it leaves the overall blob unnecessarily bloated (for example, with unnecessary entries in the format list).
We could however change the function in such a way that the loop
for (i = 0; i < modifier_count; i++) {
for (j = 0; j < format_count; j++)
runs before filling up these members.
I am not sure how much juggling that would take but it could be a solution.
Anything you would suggest?
[1] https://lore.kernel.org/intel-gfx/SJ1PR11MB6129F7B51AD33A31D6A07B95B91F2@SJ1PR11MB6129.namprd11.prod.outlook.com/
Regards
Chaitanya
>
> Thanks and Regards,
> Arun R Murthy
> -------------------
> > > Then upon adding new elements in struct drm_plane we may not need to
> > pass a function pointer instead of is_async as commented above as well
> > as this new elements added in the struct drm_plane helps out over here.
> > >
> > > New elements to be added to the struct drm_plane Struct drm_plane {
> > > U32 * formats_async;
> > > U32 format_async_count;
> > > U64 *async_modifiers,
> > > U32 async_modifier_count
> > > }
> > >
> > > Then the functionwith below changes it will be generic and no
> > > exporting of the func would be required
> > > create_format_blob()
> > > {
> > > If(plane->format_count)
> > > /* Create blob for sync and call the format_mod_supported()
> > */
> > >
> > > If(plane->format_async_count)
> > > /* Create blob for async and call the
> > format_mod_async_supported()
> > > */ }
> > >
> > > Is my understanding correct?
> > >
> > > Thanks and Regards,
> > > Arun R Murthy
> > > --------------------
> >
> > --
> > Ville Syrjälä
> > Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* Re: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-27 7:25 ` Borah, Chaitanya Kumar
@ 2025-01-27 19:13 ` Ville Syrjälä
2025-01-28 5:32 ` Borah, Chaitanya Kumar
0 siblings, 1 reply; 36+ messages in thread
From: Ville Syrjälä @ 2025-01-27 19:13 UTC (permalink / raw)
To: Borah, Chaitanya Kumar
Cc: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
On Mon, Jan 27, 2025 at 07:25:31AM +0000, Borah, Chaitanya Kumar wrote:
> Hello Ville,
>
> > -----Original Message-----
> > From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of Murthy,
> > Arun R
> > Sent: Saturday, January 25, 2025 12:25 PM
> > To: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Cc: dri-devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> > xe@lists.freedesktop.org
> > Subject: RE: [PATCH v3 2/5] drm/plane: Expose function to create
> > format/modifier blob
> >
> > > On Thu, Jan 23, 2025 at 07:47:14AM +0000, Murthy, Arun R wrote:
> > > > > > On Wed, Jan 08, 2025 at 11:09:00AM +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
> > > > > > >
> > > > > >
> > > > >
> > >
> > 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a90
> > > > > 6
> > > > > > 8
> > > > > > > b31c0563a4c0 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);
> > > > > >
> > > > > > IMO the function should only create the blob. Leave it to the
> > > > > > caller to attach
> > > > > it.
> > > > > >
> > > > > Prior to this change for sync formats/modifiers the property
> > > > > attach was also done in the same function. So retained it as it.
> > > > >
> > > > > > The 'is_async' parameter could also be replaced with with a
> > > > > > function pointer to the appropriate format_mod_supported()
> > > > > > function. That makes the implementation entirely generic.
> > > > > >
> > > > > If the list of formats/modifiers for sync and async is passed to
> > > > > this function, then based on the list the corresponding function
> > > > > pointer can
> > > be called.
> > > > > This was done in the earlier patchset.
> > > > >
> > > > > > >
> > > > > > > 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
> > > > > > >
> > > > > >
> > > > >
> > >
> > e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> > > > > > 369
> > > > > > > 894a5657cd45 100644
> > > > > > > --- a/include/drm/drm_plane.h
> > > > > > > +++ b/include/drm/drm_plane.h
> > > > > > > @@ -1008,5 +1008,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);
> > > > > >
> > > > > > I don't think this needs to be exposed to anyone.
> > > > > > __drm_universal_plane_init() should just populate both the
> > > > > > normal blob, and and the async blob (iff
> > > > > > .format_mod_supported_async() is provided).
> > > > > >
> > > > > Ok!
> > > > >
> > > > For __drm_universal_plane_init() to have both the sync/async
> > > format/modifiers list we will have to add new elements to struct
> > > drm_plane to hold the async formats/modifiers.
> > >
> > > No, you can just use the already existing format/modifier lists.
> > > .format_mod_supported_async() will filter out what's not wanted.
> > >
> > Agree, to populate the struct drm_format_modifier
> > .format_mod_supported_async along with the existing formats/modifier list
> > should be sufficient.
> > In case of async for the struct drm_format_modifier_blob the elements
> > format_offset includes the list of formats supported by async only. For this we
> > will need to have the static list. So can passing this list be done by adding new
> > elements in drm_plane specifically for async.
>
> Just to add to Arun's point. We had this discussion on thread [1].
>
> If we populate struct drm_format_modifier_blob for async using just the existing format/modifier lists in struct drm_plane,
> We will be mis-representing the following members of the structure to the user space
>
> struct drm_format_modifier_blob {
> /* Number of fourcc formats supported */
> __u32 count_formats;
>
> /* Number of drm_format_modifiers */
> __u32 count_modifiers;
> };
Nothing is misrepresentd. Those things just tell you what the bits in
the bimask mean.
>
> However, as you correctly point out, it should still work because of the format-modifier bit mask.
> But it leaves the overall blob unnecessarily bloated (for example, with unnecessary entries in the format list).
>
> We could however change the function in such a way that the loop
>
> for (i = 0; i < modifier_count; i++) {
> for (j = 0; j < format_count; j++)
>
> runs before filling up these members.
>
> I am not sure how much juggling that would take but it could be a solution.
>
> Anything you would suggest?
You're complicating things needlessly. The slightly bloated blob
should make no practical difference anywhere.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob
2025-01-27 19:13 ` Ville Syrjälä
@ 2025-01-28 5:32 ` Borah, Chaitanya Kumar
0 siblings, 0 replies; 36+ messages in thread
From: Borah, Chaitanya Kumar @ 2025-01-28 5:32 UTC (permalink / raw)
To: Ville Syrjälä
Cc: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
> -----Original Message-----
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Sent: Tuesday, January 28, 2025 12:44 AM
> To: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>
> Cc: Murthy, Arun R <arun.r.murthy@intel.com>; dri-
> devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
> xe@lists.freedesktop.org
> Subject: Re: [PATCH v3 2/5] drm/plane: Expose function to create
> format/modifier blob
>
> On Mon, Jan 27, 2025 at 07:25:31AM +0000, Borah, Chaitanya Kumar wrote:
> > Hello Ville,
> >
> > > -----Original Message-----
> > > From: Intel-xe <intel-xe-bounces@lists.freedesktop.org> On Behalf Of
> > > Murthy, Arun R
> > > Sent: Saturday, January 25, 2025 12:25 PM
> > > To: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > Cc: dri-devel@lists.freedesktop.org;
> > > intel-gfx@lists.freedesktop.org; intel- xe@lists.freedesktop.org
> > > Subject: RE: [PATCH v3 2/5] drm/plane: Expose function to create
> > > format/modifier blob
> > >
> > > > On Thu, Jan 23, 2025 at 07:47:14AM +0000, Murthy, Arun R wrote:
> > > > > > > On Wed, Jan 08, 2025 at 11:09:00AM +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
> > > > > > > >
> > > > > > >
> > > > > >
> > > >
> > >
> 416818e54ccffcf3d3aada2723e96ce8ccf1dd97..4f35eec2b7770fcc90c3e07a90
> > > > > > 6
> > > > > > > 8
> > > > > > > > b31c0563a4c0 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);
> > > > > > >
> > > > > > > IMO the function should only create the blob. Leave it to
> > > > > > > the caller to attach
> > > > > > it.
> > > > > > >
> > > > > > Prior to this change for sync formats/modifiers the property
> > > > > > attach was also done in the same function. So retained it as it.
> > > > > >
> > > > > > > The 'is_async' parameter could also be replaced with with a
> > > > > > > function pointer to the appropriate format_mod_supported()
> > > > > > > function. That makes the implementation entirely generic.
> > > > > > >
> > > > > > If the list of formats/modifiers for sync and async is passed
> > > > > > to this function, then based on the list the corresponding
> > > > > > function pointer can
> > > > be called.
> > > > > > This was done in the earlier patchset.
> > > > > >
> > > > > > > >
> > > > > > > > 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
> > > > > > > >
> > > > > > >
> > > > > >
> > > >
> > >
> e8749e6fc3bc0acfc73bbd8401f85c3126e86759..eb84830fbb723e39436bfbadf
> > > > > > > 369
> > > > > > > > 894a5657cd45 100644
> > > > > > > > --- a/include/drm/drm_plane.h
> > > > > > > > +++ b/include/drm/drm_plane.h
> > > > > > > > @@ -1008,5 +1008,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);
> > > > > > >
> > > > > > > I don't think this needs to be exposed to anyone.
> > > > > > > __drm_universal_plane_init() should just populate both the
> > > > > > > normal blob, and and the async blob (iff
> > > > > > > .format_mod_supported_async() is provided).
> > > > > > >
> > > > > > Ok!
> > > > > >
> > > > > For __drm_universal_plane_init() to have both the sync/async
> > > > format/modifiers list we will have to add new elements to struct
> > > > drm_plane to hold the async formats/modifiers.
> > > >
> > > > No, you can just use the already existing format/modifier lists.
> > > > .format_mod_supported_async() will filter out what's not wanted.
> > > >
> > > Agree, to populate the struct drm_format_modifier
> > > .format_mod_supported_async along with the existing formats/modifier
> > > list should be sufficient.
> > > In case of async for the struct drm_format_modifier_blob the
> > > elements format_offset includes the list of formats supported by
> > > async only. For this we will need to have the static list. So can
> > > passing this list be done by adding new elements in drm_plane specifically
> for async.
> >
> > Just to add to Arun's point. We had this discussion on thread [1].
> >
> > If we populate struct drm_format_modifier_blob for async using just
> > the existing format/modifier lists in struct drm_plane, We will be
> > mis-representing the following members of the structure to the user
> > space
> >
> > struct drm_format_modifier_blob {
> > /* Number of fourcc formats supported */
> > __u32 count_formats;
> >
> > /* Number of drm_format_modifiers */
> > __u32 count_modifiers;
> > };
>
> Nothing is misrepresentd. Those things just tell you what the bits in the
> bimask mean.
>
At the very least, it makes the comments inaccurate. But perhaps something we can live with.
> >
> > However, as you correctly point out, it should still work because of the
> format-modifier bit mask.
> > But it leaves the overall blob unnecessarily bloated (for example, with
> unnecessary entries in the format list).
> >
> > We could however change the function in such a way that the loop
> >
> > for (i = 0; i < modifier_count; i++) {
> > for (j = 0; j < format_count; j++)
> >
> > runs before filling up these members.
> >
> > I am not sure how much juggling that would take but it could be a solution.
> >
> > Anything you would suggest?
>
> You're complicating things needlessly. The slightly bloated blob should make
> no practical difference anywhere.
>
I agree, if bloated blob is not a concern then we can re-use the existing struct drm_plane members and keep the function more or less the same.
Regards
Chaitanya
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 36+ messages in thread
* RE: [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC
2025-01-16 9:54 ` Murthy, Arun R
@ 2025-02-17 6:30 ` Kumar, Naveen1
0 siblings, 0 replies; 36+ messages in thread
From: Kumar, Naveen1 @ 2025-02-17 6:30 UTC (permalink / raw)
To: Murthy, Arun R, dri-devel@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: Borah, Chaitanya Kumar
Hi,
I have tested revision 4 of the patch series on my DG2 setup with drm_info & Mutter MR https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/4063. The patches apply cleanly, and the new uapi IN_FORMATS_ASYNC works fine. Though I had some observation whether the unsupported Async modifiers should even be exposed to userspace or not? So far, it does not populate the list of supported formats for these modifiers and Mutter is able to handle this scenario as it ignores these modifiers as there are no formats exposed. Apart from this, it works as expected and LGTM.
Tested-by: Naveen Kumar <naveen1.kumar@intel.com>
Best regards,
Naveen Kumar
>-----Original Message-----
>From: Murthy, Arun R <arun.r.murthy@intel.com>
>Sent: Thursday, January 16, 2025 3:24 PM
>To: Borah, Chaitanya Kumar <chaitanya.kumar.borah@intel.com>; dri-
>devel@lists.freedesktop.org; intel-gfx@lists.freedesktop.org; intel-
>xe@lists.freedesktop.org
>Cc: Kumar, Naveen1 <naveen1.kumar@intel.com>
>Subject: RE: [PATCH v3 1/5] drm/plane: Add new plane property
>IN_FORMATS_ASYNC
>
>> > > > -----Original Message-----
>> > > > From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On
>> > > > Behalf Of Arun R Murthy
>> > > > Sent: Wednesday, January 8, 2025 11:09 AM
>> > > > To: dri-devel@lists.freedesktop.org;
>> > > > intel-gfx@lists.freedesktop.org;
>> > > > intel- xe@lists.freedesktop.org
>> > > > Cc: Murthy, Arun R <arun.r.murthy@intel.com>
>> > > > Subject: [PATCH v3 1/5] drm/plane: Add new plane property
>> > > > IN_FORMATS_ASYNC
>> > > >
>> > > > 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.
>> > >
>> > > s/done/do
>> > > s/unsupported/supported
>> > > s/flips/flip
>> > >
>> > Done!
>> >
>> > > > Add a new function pointer similar to format_mod_supported
>> > > > specifically for asynchronous flips.
>> > > >
>> > > > v2: Remove async variable from drm_plane (Ville)
>> > > > v3: Add new function pointer for async (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 ++++++
>> > > > include/drm/drm_plane.h | 20 ++++++++++++++++++++
>> > > > 4 files changed, 39 insertions(+)
>> > > >
>> > > > diff --git a/drivers/gpu/drm/drm_mode_config.c
>> > > > b/drivers/gpu/drm/drm_mode_config.c
>> > > > index
>> > > >
>> > >
>> >
>>
>8642a2fb25a90116dab975aa0ab6b51deafb4b96..dbbef20753f834a85ae9d
>ed
>> > > > 748cff2b3f0e85043 100644
>> > > > --- a/drivers/gpu/drm/drm_mode_config.c
>> > > > +++ b/drivers/gpu/drm/drm_mode_config.c
>> > > > @@ -388,6 +388,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
>> > > >
>> > >
>> >
>>
>a28b22fdd7a41aca82d097d42237851da9a0a79b..416818e54ccffcf3d3aada
>27
>> > > > 23e96ce8ccf1dd97 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.
>> > > > + *
>> > >
>> > > I think we should mention here that the absence of this property
>> > > would mean that all format modifier pair in IN_FORMATS are also
>> > > supported for
>> > async flips.
>> > > That way the uAPI remains backward compatible.
>> > >
>> > I think this is clear with the above documentation. Anyway will
>> > reframe to be more specific.
>> >
>>
>> The line "Without this property the plane doesn't support buffers
>> with modifiers " indicates that if this property is not present then
>> no modifiers are supported for async.
>> This can't be true because all drivers currently do not have this
>> property but they surely support modifiers in async flip. More on this below.
>>
>As documented this an optional property with this property user will have the
>feasibility to check for supported one and if not might end up with failure
>commit due to unsupported formats.
>Will reframe this to avoid confusion!
>
>> > > > * 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
>> > > >
>> > >
>> >
>>
>271765e2e9f2da62aaf0d258828ef4196e14822e..0c116d6dfd277262b1a4c
>0f0
>> > > > 97fce2d719f43844 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
>> > > >
>> > >
>> >
>>
>dd718c62ac31bf16606f3ee9f025a5b171cd1e67..e8749e6fc3bc0acfc73bbd8
>40
>> > > > 1f85c3126e86759 100644
>> > > > --- a/include/drm/drm_plane.h
>> > > > +++ b/include/drm/drm_plane.h
>> > > > @@ -549,6 +549,26 @@ struct drm_plane_funcs {
>> > > > */
>> > > > bool (*format_mod_supported)(struct drm_plane *plane, uint32_t
>> > > > format,
>> > > > uint64_t modifier);
>> > > > + /**
>> > > > + * @format_mod_supported_async:
>> > > > + *
>> > > > + * This optional hook is used for the DRM to determine if for
>> > > > + * asychronous flip the given format/modifier combination is
>valid for
>> > > > + * the plane. This allows the DRM to generate the correct
>format
>> > > > + * bitmask (which formats apply to which modifier), and to
>validate
>> > > > + * modifiers at atomic_check time.
>> > > > + *
>> > > > + * If not present, then any modifier in the plane's modifier
>> > > > + * list is allowed with any of the plane's formats.
>> > > > + *
>> > >
>> > > We still have to honor the IN_FORMATS property, right?
>> > Sorry didn’t get it, this new property is in parallel to the
>> > existing
>> IN_FORMATS.
>> > We have retained it as is and added new property for async.
>> > Anyway will reframe to be more clear.
>> >
>>
>> ...
>>
>> > >
>> > > > + * Returns:
>> > > > + *
>> > > > + * True if the given modifier is valid for that format on the plane.
>> > > > + * False otherwise.
>> > > > + */
>> > > > + bool (*format_mod_supported_async)(struct drm_plane
>*plane,
>> > > > + uint32_t format, uint64_t
>modifier);
>> > > > +
>> > > > };
>> > > >
>> > >
>> > > Some thoughts after going through all the patches. There is a bit
>> > > of ambiguity how a driver can handle the IN_FORMATS_ASYNC property
>> > > in cases where there are no specific restrictions in format
>> > > modifier pairs for
>> > async.
>> > >
>> > > Two approaches here.
>> > >
>> > > 1. The driver should not expose the property at all.
>> > > 2. The driver should fill up IN_FORMATS_ASYNC blob that indicates
>> > > that all format modifier pair supported for sync are also
>> > > supported for async
>> > flips.
>> > >
>> > > Approach 1 seems to be better for backward compatibility. If we
>> > > follow approach 2, we do not need to expose the function
>> > > create_in_formats_blob() and it can be handled through the
>> > > format_mod_supported_async() function internally during plane
>> > initialization.
>> > >
>> > > Either way the documentation should be made clear what we expect
>> > > from the userspace.
>> > >
>> > Documentation added says this is an optional property to convey the
>> > user with the list for formats/modifiers supported by the plane for async
>flips.
>> > Compatibility wise this is a new property which is in parallel to
>> > IN_FORMATS and hence should not break anything.
>> > Anyway will reframe and be more specific.
>> >
>>
>> Yes, they are different properties however we have to clearly define
>> the policy for the property. For example, with the current
>> implementation the policy should be something like this.
>>
>> 1. Userspace checks if IN_FORMATS_ASYNC property is present. If
>> present check if current format and modifier pair is supported.
>> 2. If property the IN_FORMATS_ASYNC is *not* present, we have two
>> options
>>
>> a. The user space decides that no modifier is
>> supported. We
>> *cannot* go by this because IN_FORMAT_ASYNC is an optional property
>> and many drivers might not implement it. Because all the
>> format modifier pair supported for sync are also supported for async.
>>
>> b. The user space will check if the frame modifier
>> pair is present in IN_FORMAT_SYNC. This should be explicitly called out in the
>documentation.
>>
>Ok sure will be more specific.
>
>> If no format modifier pair is found after these two steps then we can
>> conclude that no modifier is supported.
>>
>> It is important to call it out because if you see the code proposed by
>> Naveen in comments in the MR[1]
>>
>> if (meta_onscreen_native_is_tearing_enabled (onscreen_native))
>> crtc_mods = meta_kms_plane_get_tearing_modifiers_for_format (plane,
>> format); else
>> crtc_mods = meta_kms_plane_get_modifiers_for_format (plane, format);
>>
>> This makes the property IN_FORMAT_ASYNC non-optional. That is the
>> absence of the property will lead to no format modifier pair supported
>> even though the driver did not intend it that way.
>>
>That cannot be the case, as this is an optional and not that all the drivers will
>have this property. This is a good to have to avoid failure due to unsupported
>format/modifier.
>
>Thanks and Regards,
>Arun R Murthy
>-------------------
^ permalink raw reply [flat|nested] 36+ messages in thread
end of thread, other threads:[~2025-02-17 6:31 UTC | newest]
Thread overview: 36+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-08 5:38 [PATCH v3 0/5] Expose modifiers/formats supported by async flips Arun R Murthy
2025-01-08 5:38 ` [PATCH v3 1/5] drm/plane: Add new plane property IN_FORMATS_ASYNC Arun R Murthy
2025-01-12 7:59 ` Borah, Chaitanya Kumar
2025-01-13 8:22 ` Murthy, Arun R
2025-01-13 17:38 ` Borah, Chaitanya Kumar
2025-01-16 9:54 ` Murthy, Arun R
2025-02-17 6:30 ` Kumar, Naveen1
2025-01-08 5:39 ` [PATCH v3 2/5] drm/plane: Expose function to create format/modifier blob Arun R Murthy
2025-01-12 8:00 ` Borah, Chaitanya Kumar
2025-01-13 8:22 ` Murthy, Arun R
2025-01-13 18:44 ` Borah, Chaitanya Kumar
2025-01-16 9:54 ` Murthy, Arun R
2025-01-20 20:42 ` Ville Syrjälä
2025-01-22 9:27 ` Murthy, Arun R
2025-01-23 7:47 ` Murthy, Arun R
2025-01-24 11:25 ` Ville Syrjälä
2025-01-25 6:55 ` Murthy, Arun R
2025-01-27 7:25 ` Borah, Chaitanya Kumar
2025-01-27 19:13 ` Ville Syrjälä
2025-01-28 5:32 ` Borah, Chaitanya Kumar
2025-01-08 5:39 ` [PATCH v3 3/5] drm/plane: Function to check async supported modifier/format Arun R Murthy
2025-01-12 8:01 ` Borah, Chaitanya Kumar
2025-01-08 5:39 ` [PATCH v3 4/5] drm/i915/display: Populate list of async supported formats/modifiers Arun R Murthy
2025-01-12 8:02 ` Borah, Chaitanya Kumar
2025-01-20 20:47 ` Ville Syrjälä
2025-01-21 3:34 ` Murthy, Arun R
2025-01-21 13:40 ` Ville Syrjälä
2025-01-08 5:39 ` [PATCH v3 5/5] drm/i915/display: Add function for format_mod_supported_async Arun R Murthy
2025-01-12 8:02 ` Borah, Chaitanya Kumar
2025-01-08 5:58 ` ✓ CI.Patch_applied: success for Expose modifiers/formats supported by async flips (rev2) Patchwork
2025-01-08 5:58 ` ✗ CI.checkpatch: warning " Patchwork
2025-01-08 6:00 ` ✓ CI.KUnit: success " Patchwork
2025-01-08 6:20 ` ✓ CI.Hooks: " Patchwork
2025-01-08 6:22 ` ✗ CI.checksparse: warning " Patchwork
2025-01-08 6:49 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-01-09 22:08 ` ✗ Xe.CI.Full: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox