* [PATCH v4 00/20] drm/atomic: Rework initial state allocation
@ 2026-05-12 13:05 Maxime Ripard
2026-05-12 13:05 ` [PATCH v4 01/20] drm/atomic: Document atomic commit lifetime Maxime Ripard
` (23 more replies)
0 siblings, 24 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:05 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart, Laurent Pinchart
Hi,
This series started from my work on the hardware state readout[1], and
more specifically a discussion with Thomas[2].
This series expands the work that has been merged recently to make
drm_private_obj and drm_private_state allocation a bit more consistent
and ended up creating a new atomic_create_state callback to allocate a
new state with no side effect.
The first patches document the existing behaviour and fix a few
cleanups and typos.
Then, __drm_*_state_reset() helpers are renamed to
__drm_*_state_init() to clarify that they initialize rather than
reset state, and we add the new atomic_create_state callback to
every other DRM object (planes, CRTCs, connectors, colorops).
Next, we leverage those new callbacks to create a new helper,
drm_mode_config_create_initial_state(), to create the initial state
for all the objects of a driver, and update the driver skeleton to
recommend it.
Finally, we convert the tidss driver and the bridge_connector to the
new pattern.
This was tested on a TI SK-AM62, with the tidss driver.
Let me know what you think,
Maxime
1: https://lore.kernel.org/dri-devel/20250902-drm-state-readout-v1-0-14ad5315da3f@kernel.org/
2: https://lore.kernel.org/dri-devel/5920ffe5-b6b1-484b-b320-332b9eb9db82@suse.de/
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Changes in v4:
- Rebased on current drm-misc-next
- Update drm_atomic_state to drm_atomic_commit
- Various doc impromvements
- Don't call drm_crtc_vblank_reset in create_state
- Prevent mem leak if states already have a state when
drm_mode_config_reset or _create_initial_state are called
- Link to v3: https://lore.kernel.org/r/20260424-drm-mode-config-init-v3-0-8b68d9db0d8b@kernel.org
Changes in v3:
- Reintroduce state documentation that was dropped by accident
- Change name to drm_mode_config_create_initial_state()
- Don't call drm_mode_config_create_initial_state() in drm_dev_register
anymore
- Drop __drm_atomic_helper_*_create_state
- Improve documentation and commit messages where necessary
- Collected tags
- Link to v2: https://lore.kernel.org/r/20260320-drm-mode-config-init-v2-0-c63f1134e76c@kernel.org
Changes in v2:
- Change the _state_reset function names to _state_init
- Change the colorop too
- Various doc improvements
- Link to v1: https://lore.kernel.org/r/20260310-drm-mode-config-init-v1-0-de7397c8e1cf@kernel.org
---
Maxime Ripard (20):
drm/atomic: Document atomic commit lifetime
drm/colorop: Fix typos in the doc
drm/atomic: Drop drm_private_obj.state assignment from create_state
drm/atomic: Expand atomic_create_state expectations for drm_private_obj
drm/mode-config: Document drm_private_obj exclusion from drm_mode_config_reset()
drm/colorop: Rename __drm_colorop_state_reset()
drm/colorop: Create drm_atomic_helper_colorop_create_state()
drm/atomic-state-helper: Fix __drm_atomic_helper_plane_reset() doc typo
drm/atomic-state-helper: Rename __drm_atomic_helper_plane_state_reset()
drm/plane: Add new atomic_create_state callback
drm/atomic-state-helper: Rename __drm_atomic_helper_crtc_state_reset()
drm/crtc: Add new atomic_create_state callback
drm/atomic-state-helper: Rename __drm_atomic_helper_connector_state_reset()
drm/hdmi: Rename __drm_atomic_helper_connector_hdmi_reset()
drm/connector: Add new atomic_create_state callback
drm/mode-config: Create drm_mode_config_create_initial_state()
drm/drv: Switch skeleton to drm_mode_config_create_initial_state()
drm/tidss: Switch to drm_mode_config_create_initial_state()
drm/tidss: Convert to atomic_create_state
drm/bridge_connector: Convert to atomic_create_state
Documentation/gpu/drm-kms.rst | 6 +
drivers/gpu/drm/display/drm_bridge_connector.c | 17 +-
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 15 +-
drivers/gpu/drm/drm_atomic.c | 66 ++++++++
drivers/gpu/drm/drm_atomic_state_helper.c | 114 ++++++++++---
drivers/gpu/drm/drm_colorop.c | 41 ++++-
drivers/gpu/drm/drm_drv.c | 4 +-
drivers/gpu/drm/drm_mode_config.c | 187 ++++++++++++++++++++-
drivers/gpu/drm/i915/display/intel_crtc.c | 2 +-
drivers/gpu/drm/i915/display/intel_plane.c | 2 +-
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 2 +-
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 2 +-
drivers/gpu/drm/tidss/tidss_crtc.c | 17 +-
drivers/gpu/drm/tidss/tidss_drv.c | 6 +-
drivers/gpu/drm/tidss/tidss_plane.c | 2 +-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
include/drm/display/drm_hdmi_state_helper.h | 4 +-
include/drm/drm_atomic.h | 5 +-
include/drm/drm_atomic_state_helper.h | 12 +-
include/drm/drm_colorop.h | 2 +
include/drm/drm_connector.h | 16 ++
include/drm/drm_crtc.h | 16 ++
include/drm/drm_mode_config.h | 1 +
include/drm/drm_plane.h | 16 ++
24 files changed, 489 insertions(+), 68 deletions(-)
---
base-commit: b462608de92a7cac450781f9d8d4c7cf3ccf82db
change-id: 20260310-drm-mode-config-init-1e1f52b745d0
Best regards,
--
Maxime Ripard <mripard@kernel.org>
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH v4 01/20] drm/atomic: Document atomic commit lifetime
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
@ 2026-05-12 13:05 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 02/20] drm/colorop: Fix typos in the doc Maxime Ripard
` (22 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:05 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
How drm_atomic_commit and the various entity structures are allocated
and freed isn't really trivial. Document it.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
Documentation/gpu/drm-kms.rst | 6 +++++
drivers/gpu/drm/drm_atomic.c | 57 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 63 insertions(+)
diff --git a/Documentation/gpu/drm-kms.rst b/Documentation/gpu/drm-kms.rst
index fbe0583eb84c..d50529482335 100644
--- a/Documentation/gpu/drm-kms.rst
+++ b/Documentation/gpu/drm-kms.rst
@@ -280,10 +280,16 @@ structure, ordering of committing state changes to hardware is sequenced using
:c:type:`struct drm_crtc_commit <drm_crtc_commit>`.
Read on in this chapter, and also in :ref:`drm_atomic_helper` for more detailed
coverage of specific topics.
+Atomic State Lifetime
+---------------------
+
+.. kernel-doc:: drivers/gpu/drm/drm_atomic.c
+ :doc: state lifetime
+
Handling Driver Private State
-----------------------------
.. kernel-doc:: drivers/gpu/drm/drm_atomic.c
:doc: handling driver private state
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 170de30c28ae..04bc3e736cbd 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -45,10 +45,67 @@
#include <drm/drm_colorop.h>
#include "drm_crtc_internal.h"
#include "drm_internal.h"
+/**
+ * DOC: state lifetime
+ *
+ * &struct drm_atomic_commit represents an update to video pipeline
+ * state. It's a transient object that holds a state update as a
+ * collection of pointers to individual objects' states. &struct
+ * drm_atomic_commit has a much shorter lifetime than the objects'
+ * states, since it's only allocated while preparing, checking or
+ * committing the update, while object states are allocated when
+ * preparing the update and kept alive as long as they are active in the
+ * device.
+ *
+ * Their respective lifetimes are:
+ *
+ * - at reset time, the object reset implementation will allocate a new
+ * default state and will store it in the object state pointer.
+ *
+ * - whenever a new update is needed:
+ *
+ * + A new &struct drm_atomic_commit is allocated using
+ * drm_atomic_commit_alloc().
+ *
+ * + The current active state of all entities affected by the update
+ * is copied into this new &struct drm_atomic_commit using
+ * drm_atomic_get_plane_state(), drm_atomic_get_crtc_state(),
+ * drm_atomic_get_connector_state(), or
+ * drm_atomic_get_private_obj_state(). This new state can then be
+ * modified.
+ *
+ * At that point, &struct drm_atomic_commit stores three state
+ * pointers for any affected entity: the "old" and "new" states, and
+ * state_to_destroy. The old state is the state currently active in
+ * the hardware, which is either the one initialized by reset() or a
+ * newer one if a commit has been made. The new state is the state
+ * we just allocated and we might eventually commit to the hardware.
+ * The state_to_destroy points to the state we'll eventually have to
+ * free when the drm_atomic_commit will be destroyed, and points to
+ * the new state for now since the old state is still the active
+ * state.
+ *
+ * + After the state is populated, it is checked. If the check is
+ * successful, the update is committed. Part of the commit is a call
+ * to drm_atomic_helper_swap_state() which will turn the new states
+ * into the active states. Doing so involves updating the object's
+ * state pointer (&drm_crtc.state or similar) to point to the new
+ * state, and state_to_destroy will now point to the old states,
+ * that used to be active but aren't anymore.
+ *
+ * + When the commit is done, and when all references to our &struct
+ * drm_atomic_commit are put, drm_atomic_commit_clear() runs and
+ * will free all state_to_destroy (ie. old states), and the &struct
+ * drm_atomic_commit instance.
+ *
+ * + Now, we don't have any active &struct drm_atomic_commit anymore,
+ * and only the entity active states remain allocated.
+ */
+
void __drm_crtc_commit_free(struct kref *kref)
{
struct drm_crtc_commit *commit =
container_of(kref, struct drm_crtc_commit, ref);
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 02/20] drm/colorop: Fix typos in the doc
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
2026-05-12 13:05 ` [PATCH v4 01/20] drm/atomic: Document atomic commit lifetime Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 03/20] drm/atomic: Drop drm_private_obj.state assignment from create_state Maxime Ripard
` (21 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
In the documentation of drm_colorop introduced by commit cfc27680ee20
("drm/colorop: Introduce new drm_colorop mode object"), the
documentation of __drm_colorop_state_reset() and __drm_colorop_reset()
were mentioning CRTC when they really meant colorop, probably due to
copy and paste.
Fixes: cfc27680ee20 ("drm/colorop: Introduce new drm_colorop mode object")
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_colorop.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c
index 764d12060666..48d0b7ae3fc9 100644
--- a/drivers/gpu/drm/drm_colorop.c
+++ b/drivers/gpu/drm/drm_colorop.c
@@ -503,11 +503,11 @@ void drm_colorop_atomic_destroy_state(struct drm_colorop *colorop,
* __drm_colorop_state_reset - resets colorop state to default values
* @colorop_state: atomic colorop state, must not be NULL
* @colorop: colorop object, must not be NULL
*
* Initializes the newly allocated @colorop_state with default
- * values. This is useful for drivers that subclass the CRTC state.
+ * values. This is useful for drivers that subclass the colorop state.
*/
static void __drm_colorop_state_reset(struct drm_colorop_state *colorop_state,
struct drm_colorop *colorop)
{
u64 val;
@@ -526,14 +526,14 @@ static void __drm_colorop_state_reset(struct drm_colorop_state *colorop_state,
/**
* __drm_colorop_reset - reset state on colorop
* @colorop: drm colorop
* @colorop_state: colorop state to assign
*
- * Initializes the newly allocated @colorop_state and assigns it to
- * the &drm_crtc->state pointer of @colorop, usually required when
- * initializing the drivers or when called from the &drm_colorop_funcs.reset
- * hook.
+ * Initializes the newly allocated @colorop_state and assigns it to the
+ * &drm_colorop->state pointer of @colorop, usually required when
+ * initializing the drivers or when called from the
+ * &drm_colorop_funcs.reset hook.
*
* This is useful for drivers that subclass the colorop state.
*/
static void __drm_colorop_reset(struct drm_colorop *colorop,
struct drm_colorop_state *colorop_state)
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 03/20] drm/atomic: Drop drm_private_obj.state assignment from create_state
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
2026-05-12 13:05 ` [PATCH v4 01/20] drm/atomic: Document atomic commit lifetime Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 02/20] drm/colorop: Fix typos in the doc Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 04/20] drm/atomic: Expand atomic_create_state expectations for drm_private_obj Maxime Ripard
` (20 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
The initial intent of the atomic_create_state hook was to simply
allocate a proper drm_private_state and return it, without any side
effect.
However, __drm_atomic_helper_private_obj_create_state(), which most
atomic_create_state implementations call, introduces a side effect by
setting drm_private_obj.state to the newly allocated state.
This assignment defeats the purpose, but is also redundant since
drm_atomic_private_obj_init(), the only call site for the
atomic_create_state hook, will also set this pointer to the newly
allocated state.
Drop the assignment in __drm_atomic_helper_private_obj_create_state().
Fixes: e7be39ed1716 ("drm/atomic-helper: Add private_obj atomic_create_state helper")
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index cc70508d4fdb..a82568d87e4f 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -729,12 +729,10 @@ EXPORT_SYMBOL(drm_atomic_helper_connector_destroy_state);
void __drm_atomic_helper_private_obj_create_state(struct drm_private_obj *obj,
struct drm_private_state *state)
{
if (state)
state->obj = obj;
-
- obj->state = state;
}
EXPORT_SYMBOL(__drm_atomic_helper_private_obj_create_state);
/**
* __drm_atomic_helper_private_obj_duplicate_state - copy atomic private state
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 04/20] drm/atomic: Expand atomic_create_state expectations for drm_private_obj
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (2 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 03/20] drm/atomic: Drop drm_private_obj.state assignment from create_state Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 05/20] drm/mode-config: Document drm_private_obj exclusion from drm_mode_config_reset() Maxime Ripard
` (19 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
The atomic_create_state callback documentation for planes, CRTCs, and
connectors explicitly states the expected behaviour: the returned
state must not be assigned to the object's state pointer, and hardware
must not be touched.
The drm_private_state_funcs.atomic_create_state documentation is
missing this clarification. Add it for consistency.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
include/drm/drm_atomic.h | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/include/drm/drm_atomic.h b/include/drm/drm_atomic.h
index 1a80a8cdf269..88087910ab1a 100644
--- a/include/drm/drm_atomic.h
+++ b/include/drm/drm_atomic.h
@@ -263,11 +263,14 @@ struct drm_private_state;
struct drm_private_state_funcs {
/**
* @atomic_create_state:
*
* Allocates a pristine, initialized, state for the private
- * object and returns it.
+ * object and returns it. This callback must have no side
+ * effects: in particular, the returned state must not be
+ * assigned to the object's state pointer and it must not affect
+ * the hardware state.
*
* RETURNS:
*
* A new, pristine, private state instance or an error pointer
* on failure.
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 05/20] drm/mode-config: Document drm_private_obj exclusion from drm_mode_config_reset()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (3 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 04/20] drm/atomic: Expand atomic_create_state expectations for drm_private_obj Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 06/20] drm/colorop: Rename __drm_colorop_state_reset() Maxime Ripard
` (18 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
drm_mode_config_reset() does not reset drm_private_states by design.
This is especially significant for the DP MST and tunneling code that
expect to be preserved across a suspend/resume cycle, where
drm_mode_config_reset() is also used.
Document this expectation.
Link: https://lore.kernel.org/dri-devel/aOaQLx-7EpsHRwkH@ideak-desk/
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_mode_config.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 66f7dc37b597..c33382a38191 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -187,10 +187,14 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
* @dev: drm device
*
* This functions calls all the crtc's, encoder's and connector's ->reset
* callback. Drivers can use this in e.g. their driver load or resume code to
* reset hardware and software state.
+ *
+ * Note that &drm_private_obj structures are expected to be stable across
+ * suspend/resume cycles, and drm_mode_config_reset() does not affect these
+ * structures.
*/
void drm_mode_config_reset(struct drm_device *dev)
{
struct drm_crtc *crtc;
struct drm_colorop *colorop;
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 06/20] drm/colorop: Rename __drm_colorop_state_reset()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (4 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 05/20] drm/mode-config: Document drm_private_obj exclusion from drm_mode_config_reset() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 07/20] drm/colorop: Create drm_atomic_helper_colorop_create_state() Maxime Ripard
` (17 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
__drm_colorop_state_reset() is used to initialize a newly allocated
drm_colorop_state, and is being typically called by drm_colorop_reset().
Since we want to consolidate DRM objects state allocation around the
atomic_create_state callback that will only allocate and initialize a
new drm_colorop_state instance, we will need to call
__drm_colorop_state_reset() from both the reset and atomic_create paths.
To avoid any confusion, we can thus rename __drm_colorop_state_reset()
to __drm_colorop_state_init().
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_colorop.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c
index 48d0b7ae3fc9..4c4d0a953e35 100644
--- a/drivers/gpu/drm/drm_colorop.c
+++ b/drivers/gpu/drm/drm_colorop.c
@@ -498,19 +498,19 @@ void drm_colorop_atomic_destroy_state(struct drm_colorop *colorop,
__drm_atomic_helper_colorop_destroy_state(state);
kfree(state);
}
/**
- * __drm_colorop_state_reset - resets colorop state to default values
+ * __drm_colorop_state_init - Initializes colorop state to default values
* @colorop_state: atomic colorop state, must not be NULL
* @colorop: colorop object, must not be NULL
*
* Initializes the newly allocated @colorop_state with default
* values. This is useful for drivers that subclass the colorop state.
*/
-static void __drm_colorop_state_reset(struct drm_colorop_state *colorop_state,
- struct drm_colorop *colorop)
+static void __drm_colorop_state_init(struct drm_colorop_state *colorop_state,
+ struct drm_colorop *colorop)
{
u64 val;
colorop_state->colorop = colorop;
colorop_state->bypass = true;
@@ -537,11 +537,11 @@ static void __drm_colorop_state_reset(struct drm_colorop_state *colorop_state,
*/
static void __drm_colorop_reset(struct drm_colorop *colorop,
struct drm_colorop_state *colorop_state)
{
if (colorop_state)
- __drm_colorop_state_reset(colorop_state, colorop);
+ __drm_colorop_state_init(colorop_state, colorop);
colorop->state = colorop_state;
}
void drm_colorop_reset(struct drm_colorop *colorop)
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 07/20] drm/colorop: Create drm_atomic_helper_colorop_create_state()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (5 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 06/20] drm/colorop: Rename __drm_colorop_state_reset() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 08/20] drm/atomic-state-helper: Fix __drm_atomic_helper_plane_reset() doc typo Maxime Ripard
` (16 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
Commit 47b5ac7daa46 ("drm/atomic: Add new atomic_create_state callback
to drm_private_obj") introduced a new pattern for allocating drm object
states.
Instead of relying on the reset() callback, it created a new
atomic_create_state hook. This is helpful because reset is a bit
overloaded: it's used to create the initial software state, reset it,
but also reset the hardware.
It can also be used either at probe time, to create the initial state
and possibly reset the hardware to an expected default, but also during
suspend/resume.
Both these cases come with different expectations too: during the
initialization, we want to initialize all states, but during
suspend/resume, drm_private_states for example are expected to be kept
around.
reset() also isn't fallible, which makes it harder to handle
initialization errors properly. This is only really relevant for some
drivers though, since all the helpers for reset only create a new
state, and don't touch the hardware at all.
It was thus decided to create a new hook that would allocate and
initialize a pristine state without any side effect:
atomic_create_state to untangle a bit some of it, and to separate the
initialization with the actual reset one might need during a
suspend/resume.
Continue the transition to the new pattern with drm_colorop.
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_colorop.c | 23 +++++++++++++++++++++++
include/drm/drm_colorop.h | 2 ++
2 files changed, 25 insertions(+)
diff --git a/drivers/gpu/drm/drm_colorop.c b/drivers/gpu/drm/drm_colorop.c
index 4c4d0a953e35..c0eecde8c176 100644
--- a/drivers/gpu/drm/drm_colorop.c
+++ b/drivers/gpu/drm/drm_colorop.c
@@ -521,10 +521,33 @@ static void __drm_colorop_state_init(struct drm_colorop_state *colorop_state,
&val))
colorop_state->curve_1d_type = val;
}
}
+/**
+ * drm_atomic_helper_colorop_create_state - Allocates and initializes colorop atomic state
+ * @colorop: drm colorop
+ *
+ * Initializes a pristine @drm_colorop_state.
+ *
+ * RETURNS:
+ * Pointer to new colorop state, or ERR_PTR on failure.
+ */
+struct drm_colorop_state *
+drm_atomic_helper_colorop_create_state(struct drm_colorop *colorop)
+{
+ struct drm_colorop_state *state;
+
+ state = kzalloc_obj(*state);
+ if (!state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_colorop_state_init(state, colorop);
+
+ return state;
+}
+
/**
* __drm_colorop_reset - reset state on colorop
* @colorop: drm colorop
* @colorop_state: colorop state to assign
*
diff --git a/include/drm/drm_colorop.h b/include/drm/drm_colorop.h
index c873199c60da..b4b9e4f558ab 100644
--- a/include/drm/drm_colorop.h
+++ b/include/drm/drm_colorop.h
@@ -423,10 +423,12 @@ int drm_plane_colorop_3dlut_init(struct drm_device *dev, struct drm_colorop *col
struct drm_plane *plane, const struct drm_colorop_funcs *funcs,
uint32_t lut_size,
enum drm_colorop_lut3d_interpolation_type interpolation,
uint32_t flags);
+struct drm_colorop_state *
+drm_atomic_helper_colorop_create_state(struct drm_colorop *colorop);
struct drm_colorop_state *
drm_atomic_helper_colorop_duplicate_state(struct drm_colorop *colorop);
void drm_colorop_atomic_destroy_state(struct drm_colorop *colorop,
struct drm_colorop_state *state);
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 08/20] drm/atomic-state-helper: Fix __drm_atomic_helper_plane_reset() doc typo
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (6 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 07/20] drm/colorop: Create drm_atomic_helper_colorop_create_state() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 09/20] drm/atomic-state-helper: Rename __drm_atomic_helper_plane_state_reset() Maxime Ripard
` (15 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
A typo has slipped through in the __drm_atomic_helper_plane_reset()
documentation, probably due to copy and paste. It will not assign
drm_crtc state pointer, but rather the drm_plane's.
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index a82568d87e4f..c8ccf8be5074 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -303,11 +303,11 @@ EXPORT_SYMBOL(__drm_atomic_helper_plane_state_reset);
* __drm_atomic_helper_plane_reset - reset state on plane
* @plane: drm plane
* @plane_state: plane state to assign
*
* Initializes the newly allocated @plane_state and assigns it to
- * the &drm_crtc->state pointer of @plane, usually required when
+ * the &drm_plane->state pointer of @plane, usually required when
* initializing the drivers or when called from the &drm_plane_funcs.reset
* hook.
*
* This is useful for drivers that subclass the plane state.
*/
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 09/20] drm/atomic-state-helper: Rename __drm_atomic_helper_plane_state_reset()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (7 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 08/20] drm/atomic-state-helper: Fix __drm_atomic_helper_plane_reset() doc typo Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 10/20] drm/plane: Add new atomic_create_state callback Maxime Ripard
` (14 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart, Laurent Pinchart
__drm_atomic_helper_plane_state_reset() is used to initialize a newly
allocated drm_plane_state, and is being typically called by the
drm_plane_funcs.reset implementation.
Since we want to consolidate DRM objects state allocation around the
atomic_create_state callback that will only allocate and initialize a
new drm_plane_state instance, we will need to call
__drm_atomic_helper_plane_state_reset() from both the reset and
atomic_create hooks.
To avoid any confusion, we can thus rename
__drm_atomic_helper_plane_state_reset() to
__drm_atomic_helper_plane_state_init().
Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 12 ++++++------
drivers/gpu/drm/i915/display/intel_plane.c | 2 +-
include/drm/drm_atomic_state_helper.h | 2 +-
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index c8ccf8be5074..ee01700d4ca7 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -235,19 +235,19 @@ void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc,
kfree(state);
}
EXPORT_SYMBOL(drm_atomic_helper_crtc_destroy_state);
/**
- * __drm_atomic_helper_plane_state_reset - resets plane state to default values
+ * __drm_atomic_helper_plane_state_init - Initialize the plane state
* @plane_state: atomic plane state, must not be NULL
* @plane: plane object, must not be NULL
*
* Initializes the newly allocated @plane_state with default
- * values. This is useful for drivers that subclass the CRTC state.
+ * values. This is useful for drivers that subclass the plane state.
*/
-void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *plane_state,
- struct drm_plane *plane)
+void __drm_atomic_helper_plane_state_init(struct drm_plane_state *plane_state,
+ struct drm_plane *plane)
{
u64 val;
plane_state->plane = plane;
plane_state->rotation = DRM_MODE_ROTATE_0;
@@ -295,11 +295,11 @@ void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *plane_state,
plane->hotspot_y_property,
&val))
plane_state->hotspot_y = val;
}
}
-EXPORT_SYMBOL(__drm_atomic_helper_plane_state_reset);
+EXPORT_SYMBOL(__drm_atomic_helper_plane_state_init);
/**
* __drm_atomic_helper_plane_reset - reset state on plane
* @plane: drm plane
* @plane_state: plane state to assign
@@ -313,11 +313,11 @@ EXPORT_SYMBOL(__drm_atomic_helper_plane_state_reset);
*/
void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
struct drm_plane_state *plane_state)
{
if (plane_state)
- __drm_atomic_helper_plane_state_reset(plane_state, plane);
+ __drm_atomic_helper_plane_state_init(plane_state, plane);
plane->state = plane_state;
}
EXPORT_SYMBOL(__drm_atomic_helper_plane_reset);
diff --git a/drivers/gpu/drm/i915/display/intel_plane.c b/drivers/gpu/drm/i915/display/intel_plane.c
index c181a7d063ec..11467d19399d 100644
--- a/drivers/gpu/drm/i915/display/intel_plane.c
+++ b/drivers/gpu/drm/i915/display/intel_plane.c
@@ -65,11 +65,11 @@
static void intel_plane_state_reset(struct intel_plane_state *plane_state,
struct intel_plane *plane)
{
memset(plane_state, 0, sizeof(*plane_state));
- __drm_atomic_helper_plane_state_reset(&plane_state->uapi, &plane->base);
+ __drm_atomic_helper_plane_state_init(&plane_state->uapi, &plane->base);
plane_state->scaler_id = -1;
plane_state->fence_id = -1;
}
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 61a3b38ad49f..691c1ccfa4e0 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -51,11 +51,11 @@ struct drm_crtc_state *
drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc);
void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state);
void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc,
struct drm_crtc_state *state);
-void __drm_atomic_helper_plane_state_reset(struct drm_plane_state *state,
+void __drm_atomic_helper_plane_state_init(struct drm_plane_state *state,
struct drm_plane *plane);
void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
struct drm_plane_state *state);
void drm_atomic_helper_plane_reset(struct drm_plane *plane);
void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 10/20] drm/plane: Add new atomic_create_state callback
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (8 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 09/20] drm/atomic-state-helper: Rename __drm_atomic_helper_plane_state_reset() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 11/20] drm/atomic-state-helper: Rename __drm_atomic_helper_crtc_state_reset() Maxime Ripard
` (13 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
Commit 47b5ac7daa46 ("drm/atomic: Add new atomic_create_state callback
to drm_private_obj") introduced a new pattern for allocating drm object
states.
Instead of relying on the reset() callback, it created a new
atomic_create_state hook. This is helpful because reset is a bit
overloaded: it's used to create the initial software state, reset it,
but also reset the hardware.
It can also be used either at probe time, to create the initial state
and possibly reset the hardware to an expected default, but also during
suspend/resume.
Both these cases come with different expectations too: during the
initialization, we want to initialize all states, but during
suspend/resume, drm_private_states for example are expected to be kept
around.
reset() also isn't fallible, which makes it harder to handle
initialization errors properly. This is only really relevant for some
drivers though, since all the helpers for reset only create a new
state, and don't touch the hardware at all.
It was thus decided to create a new hook that would allocate and
initialize a pristine state without any side effect:
atomic_create_state to untangle a bit some of it, and to separate the
initialization with the actual reset one might need during a
suspend/resume.
Continue the transition to the new pattern with planes.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 25 +++++++++++++++++++++++++
drivers/gpu/drm/drm_mode_config.c | 31 ++++++++++++++++++++++++++++++-
include/drm/drm_atomic_state_helper.h | 2 ++
include/drm/drm_plane.h | 16 ++++++++++++++++
4 files changed, 73 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index ee01700d4ca7..ab171bfe6e86 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -338,10 +338,35 @@ void drm_atomic_helper_plane_reset(struct drm_plane *plane)
if (plane->state)
__drm_atomic_helper_plane_reset(plane, plane->state);
}
EXPORT_SYMBOL(drm_atomic_helper_plane_reset);
+/**
+ * drm_atomic_helper_plane_create_state - default &drm_plane_funcs.atomic_create_state hook for planes
+ * @plane: plane object
+ *
+ * Allocates and initializes pristine @drm_plane_state.
+ *
+ * This is useful for drivers that don't subclass @drm_plane_state.
+ *
+ * RETURNS:
+ * Pointer to new plane state, or ERR_PTR on failure.
+ */
+struct drm_plane_state *drm_atomic_helper_plane_create_state(struct drm_plane *plane)
+{
+ struct drm_plane_state *state;
+
+ state = kzalloc_obj(*state);
+ if (!state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_plane_state_init(state, plane);
+
+ return state;
+}
+EXPORT_SYMBOL(drm_atomic_helper_plane_create_state);
+
/**
* __drm_atomic_helper_plane_duplicate_state - copy atomic plane state
* @plane: plane object
* @state: atomic plane state
*
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index c33382a38191..fa609357858f 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -180,10 +180,36 @@ int drm_mode_getresources(struct drm_device *dev, void *data,
drm_connector_list_iter_end(&conn_iter);
return ret;
}
+static int drm_mode_config_plane_create_state(struct drm_plane *plane)
+{
+ struct drm_plane_state *plane_state;
+
+ if (!plane->funcs->atomic_create_state)
+ return 0;
+
+ plane_state = plane->funcs->atomic_create_state(plane);
+ if (IS_ERR(plane_state))
+ return PTR_ERR(plane_state);
+
+ plane->state = plane_state;
+
+ return 0;
+}
+
+static int drm_mode_config_plane_reset_with_create_state(struct drm_plane *plane)
+{
+ if (plane->state) {
+ plane->funcs->atomic_destroy_state(plane, plane->state);
+ plane->state = NULL;
+ }
+
+ return drm_mode_config_plane_create_state(plane);
+}
+
/**
* drm_mode_config_reset - call ->reset callbacks
* @dev: drm device
*
* This functions calls all the crtc's, encoder's and connector's ->reset
@@ -204,13 +230,16 @@ void drm_mode_config_reset(struct drm_device *dev)
struct drm_connector_list_iter conn_iter;
drm_for_each_colorop(colorop, dev)
drm_colorop_reset(colorop);
- drm_for_each_plane(plane, dev)
+ drm_for_each_plane(plane, dev) {
if (plane->funcs->reset)
plane->funcs->reset(plane);
+ else if (plane->funcs->atomic_create_state)
+ drm_mode_config_plane_reset_with_create_state(plane);
+ }
drm_for_each_crtc(crtc, dev)
if (crtc->funcs->reset)
crtc->funcs->reset(crtc);
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 691c1ccfa4e0..8d1ef268fdef 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -53,10 +53,12 @@ void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state);
void drm_atomic_helper_crtc_destroy_state(struct drm_crtc *crtc,
struct drm_crtc_state *state);
void __drm_atomic_helper_plane_state_init(struct drm_plane_state *state,
struct drm_plane *plane);
+struct drm_plane_state *
+drm_atomic_helper_plane_create_state(struct drm_plane *plane);
void __drm_atomic_helper_plane_reset(struct drm_plane *plane,
struct drm_plane_state *state);
void drm_atomic_helper_plane_reset(struct drm_plane *plane);
void __drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane,
struct drm_plane_state *state);
diff --git a/include/drm/drm_plane.h b/include/drm/drm_plane.h
index 419c88c873a6..2c5a5a70a71b 100644
--- a/include/drm/drm_plane.h
+++ b/include/drm/drm_plane.h
@@ -386,10 +386,26 @@ struct drm_plane_funcs {
* 0 on success or a negative error code on failure.
*/
int (*set_property)(struct drm_plane *plane,
struct drm_property *property, uint64_t val);
+ /**
+ * @atomic_create_state:
+ *
+ * Allocate a pristine, initialized, state for the plane object
+ * and return it. This callback must have no side effects: in
+ * particular, the returned state must not be assigned to the
+ * object's state pointer and it must not affect the hardware
+ * state.
+ *
+ * RETURNS:
+ *
+ * A new, pristine, plane state instance or an error pointer
+ * on failure.
+ */
+ struct drm_plane_state *(*atomic_create_state)(struct drm_plane *plane);
+
/**
* @atomic_duplicate_state:
*
* Duplicate the current atomic state for this plane and return it.
* The core and helpers guarantee that any atomic state duplicated with
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 11/20] drm/atomic-state-helper: Rename __drm_atomic_helper_crtc_state_reset()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (9 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 10/20] drm/plane: Add new atomic_create_state callback Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 12/20] drm/crtc: Add new atomic_create_state callback Maxime Ripard
` (12 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart, Laurent Pinchart
__drm_atomic_helper_crtc_state_reset() is used to initialize a newly
allocated drm_crtc_state, and is being typically called by the
drm_crtc_funcs.reset implementation.
Since we want to consolidate DRM objects state allocation around the
atomic_create_state callback that will only allocate and initialize a
new drm_crtc_state instance, we will need to call
__drm_atomic_helper_crtc_state_reset() from both the reset and
atomic_create hooks.
To avoid any confusion, we can thus rename
__drm_atomic_helper_crtc_state_reset() to
__drm_atomic_helper_crtc_state_init().
Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 10 +++++-----
drivers/gpu/drm/i915/display/intel_crtc.c | 2 +-
include/drm/drm_atomic_state_helper.h | 2 +-
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index ab171bfe6e86..b277f92f4532 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -61,25 +61,25 @@
* For other drivers the building blocks are split out, see the documentation
* for these functions.
*/
/**
- * __drm_atomic_helper_crtc_state_reset - reset the CRTC state
+ * __drm_atomic_helper_crtc_state_init - Initialize the CRTC state
* @crtc_state: atomic CRTC state, must not be NULL
* @crtc: CRTC object, must not be NULL
*
* Initializes the newly allocated @crtc_state with default
* values. This is useful for drivers that subclass the CRTC state.
*/
void
-__drm_atomic_helper_crtc_state_reset(struct drm_crtc_state *crtc_state,
- struct drm_crtc *crtc)
+__drm_atomic_helper_crtc_state_init(struct drm_crtc_state *crtc_state,
+ struct drm_crtc *crtc)
{
crtc_state->crtc = crtc;
crtc_state->background_color = DRM_ARGB64_PREP(0xffff, 0, 0, 0);
}
-EXPORT_SYMBOL(__drm_atomic_helper_crtc_state_reset);
+EXPORT_SYMBOL(__drm_atomic_helper_crtc_state_init);
/**
* __drm_atomic_helper_crtc_reset - reset state on CRTC
* @crtc: drm CRTC
* @crtc_state: CRTC state to assign
@@ -94,11 +94,11 @@ EXPORT_SYMBOL(__drm_atomic_helper_crtc_state_reset);
void
__drm_atomic_helper_crtc_reset(struct drm_crtc *crtc,
struct drm_crtc_state *crtc_state)
{
if (crtc_state)
- __drm_atomic_helper_crtc_state_reset(crtc_state, crtc);
+ __drm_atomic_helper_crtc_state_init(crtc_state, crtc);
if (drm_dev_has_vblank(crtc->dev))
drm_crtc_vblank_reset(crtc);
crtc->state = crtc_state;
diff --git a/drivers/gpu/drm/i915/display/intel_crtc.c b/drivers/gpu/drm/i915/display/intel_crtc.c
index 03de219f7a64..7486f2dc60ef 100644
--- a/drivers/gpu/drm/i915/display/intel_crtc.c
+++ b/drivers/gpu/drm/i915/display/intel_crtc.c
@@ -179,11 +179,11 @@ struct intel_crtc_state *intel_crtc_state_alloc(struct intel_crtc *crtc)
void intel_crtc_state_reset(struct intel_crtc_state *crtc_state,
struct intel_crtc *crtc)
{
memset(crtc_state, 0, sizeof(*crtc_state));
- __drm_atomic_helper_crtc_state_reset(&crtc_state->uapi, &crtc->base);
+ __drm_atomic_helper_crtc_state_init(&crtc_state->uapi, &crtc->base);
crtc_state->cpu_transcoder = INVALID_TRANSCODER;
crtc_state->master_transcoder = INVALID_TRANSCODER;
crtc_state->hsw_workaround_pipe = INVALID_PIPE;
crtc_state->scaler_state.scaler_id = -1;
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 8d1ef268fdef..0bb72453464a 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -38,11 +38,11 @@ struct drm_connector_state;
struct drm_private_obj;
struct drm_private_state;
struct drm_modeset_acquire_ctx;
struct drm_device;
-void __drm_atomic_helper_crtc_state_reset(struct drm_crtc_state *state,
+void __drm_atomic_helper_crtc_state_init(struct drm_crtc_state *state,
struct drm_crtc *crtc);
void __drm_atomic_helper_crtc_reset(struct drm_crtc *crtc,
struct drm_crtc_state *state);
void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc);
void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 12/20] drm/crtc: Add new atomic_create_state callback
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (10 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 11/20] drm/atomic-state-helper: Rename __drm_atomic_helper_crtc_state_reset() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 13/20] drm/atomic-state-helper: Rename __drm_atomic_helper_connector_state_reset() Maxime Ripard
` (11 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard
Commit 47b5ac7daa46 ("drm/atomic: Add new atomic_create_state callback
to drm_private_obj") introduced a new pattern for allocating drm object
states.
Instead of relying on the reset() callback, it created a new
atomic_create_state hook. This is helpful because reset is a bit
overloaded: it's used to create the initial software state, reset it,
but also reset the hardware.
It can also be used either at probe time, to create the initial state
and possibly reset the hardware to an expected default, but also during
suspend/resume.
Both these cases come with different expectations too: during the
initialization, we want to initialize all states, but during
suspend/resume, drm_private_states for example are expected to be kept
around.
reset() also isn't fallible, which makes it harder to handle
initialization errors properly. This is only really relevant for some
drivers though, since all the helpers for reset only create a new
state, and don't touch the hardware at all.
It was thus decided to create a new hook that would allocate and
initialize a pristine state without any side effect:
atomic_create_state to untangle a bit some of it, and to separate the
initialization with the actual reset one might need during a
suspend/resume.
Continue the transition to the new pattern with CRTCs.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 25 +++++++++++++++++++++++
drivers/gpu/drm/drm_mode_config.c | 34 ++++++++++++++++++++++++++++++-
include/drm/drm_atomic_state_helper.h | 2 ++
include/drm/drm_crtc.h | 16 +++++++++++++++
4 files changed, 76 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index b277f92f4532..8762171c9432 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -122,10 +122,35 @@ void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc)
__drm_atomic_helper_crtc_reset(crtc, crtc_state);
}
EXPORT_SYMBOL(drm_atomic_helper_crtc_reset);
+/**
+ * drm_atomic_helper_crtc_create_state - default &drm_crtc_funcs.atomic_create_state hook for crtcs
+ * @crtc: crtc object
+ *
+ * Allocates and initializes pristine @drm_crtc_state.
+ *
+ * This is useful for drivers that don't subclass @drm_crtc_state.
+ *
+ * RETURNS:
+ * Pointer to new crtc state, or ERR_PTR on failure.
+ */
+struct drm_crtc_state *drm_atomic_helper_crtc_create_state(struct drm_crtc *crtc)
+{
+ struct drm_crtc_state *state;
+
+ state = kzalloc_obj(*state);
+ if (!state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_crtc_state_init(state, crtc);
+
+ return state;
+}
+EXPORT_SYMBOL(drm_atomic_helper_crtc_create_state);
+
/**
* __drm_atomic_helper_crtc_duplicate_state - copy atomic CRTC state
* @crtc: CRTC object
* @state: atomic CRTC state
*
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index fa609357858f..2e2cd18a14b4 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -206,10 +206,39 @@ static int drm_mode_config_plane_reset_with_create_state(struct drm_plane *plane
}
return drm_mode_config_plane_create_state(plane);
}
+static int drm_mode_config_crtc_create_state(struct drm_crtc *crtc)
+{
+ struct drm_crtc_state *crtc_state;
+
+ if (!crtc->funcs->atomic_create_state)
+ return 0;
+
+ crtc_state = crtc->funcs->atomic_create_state(crtc);
+ if (IS_ERR(crtc_state))
+ return PTR_ERR(crtc_state);
+
+ if (drm_dev_has_vblank(crtc->dev))
+ drm_crtc_vblank_reset(crtc);
+
+ crtc->state = crtc_state;
+
+ return 0;
+}
+
+static int drm_mode_config_crtc_reset_with_create_state(struct drm_crtc *crtc)
+{
+ if (crtc->state) {
+ crtc->funcs->atomic_destroy_state(crtc, crtc->state);
+ crtc->state = NULL;
+ }
+
+ return drm_mode_config_crtc_create_state(crtc);
+}
+
/**
* drm_mode_config_reset - call ->reset callbacks
* @dev: drm device
*
* This functions calls all the crtc's, encoder's and connector's ->reset
@@ -237,13 +266,16 @@ void drm_mode_config_reset(struct drm_device *dev)
plane->funcs->reset(plane);
else if (plane->funcs->atomic_create_state)
drm_mode_config_plane_reset_with_create_state(plane);
}
- drm_for_each_crtc(crtc, dev)
+ drm_for_each_crtc(crtc, dev) {
if (crtc->funcs->reset)
crtc->funcs->reset(crtc);
+ else if (crtc->funcs->atomic_create_state)
+ drm_mode_config_crtc_reset_with_create_state(crtc);
+ }
drm_for_each_encoder(encoder, dev)
if (encoder->funcs && encoder->funcs->reset)
encoder->funcs->reset(encoder);
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 0bb72453464a..213f7e298008 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -43,10 +43,12 @@ struct drm_device;
void __drm_atomic_helper_crtc_state_init(struct drm_crtc_state *state,
struct drm_crtc *crtc);
void __drm_atomic_helper_crtc_reset(struct drm_crtc *crtc,
struct drm_crtc_state *state);
void drm_atomic_helper_crtc_reset(struct drm_crtc *crtc);
+struct drm_crtc_state *
+drm_atomic_helper_crtc_create_state(struct drm_crtc *crtc);
void __drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc,
struct drm_crtc_state *state);
struct drm_crtc_state *
drm_atomic_helper_crtc_duplicate_state(struct drm_crtc *crtc);
void __drm_atomic_helper_crtc_destroy_state(struct drm_crtc_state *state);
diff --git a/include/drm/drm_crtc.h b/include/drm/drm_crtc.h
index c6dbe8b7db9e..152349f973e3 100644
--- a/include/drm/drm_crtc.h
+++ b/include/drm/drm_crtc.h
@@ -636,10 +636,26 @@ struct drm_crtc_funcs {
* 0 on success or a negative error code on failure.
*/
int (*set_property)(struct drm_crtc *crtc,
struct drm_property *property, uint64_t val);
+ /**
+ * @atomic_create_state:
+ *
+ * Allocate a pristine, initialized, state for the CRTC object
+ * and return it. This callback must have no side effects: in
+ * particular, the returned state must not be assigned to the
+ * object's state pointer and it must not affect the hardware
+ * state.
+ *
+ * RETURNS:
+ *
+ * A new, pristine, CRTC state instance or an error pointer
+ * on failure.
+ */
+ struct drm_crtc_state *(*atomic_create_state)(struct drm_crtc *crtc);
+
/**
* @atomic_duplicate_state:
*
* Duplicate the current atomic state for this CRTC and return it.
* The core and helpers guarantee that any atomic state duplicated with
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 13/20] drm/atomic-state-helper: Rename __drm_atomic_helper_connector_state_reset()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (11 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 12/20] drm/crtc: Add new atomic_create_state callback Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 14/20] drm/hdmi: Rename __drm_atomic_helper_connector_hdmi_reset() Maxime Ripard
` (10 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart, Laurent Pinchart
__drm_atomic_helper_connector_state_reset() is used to initialize a
newly allocated drm_connector_state, and is being typically called by
the drm_connector_funcs.reset implementation.
Since we want to consolidate DRM objects state allocation around the
atomic_create_state callback that will only allocate and initialize a
new drm_connector_state instance, we will need to call
__drm_atomic_helper_connector_state_reset() from both the reset and
atomic_create hooks.
To avoid any confusion, we can thus rename
__drm_atomic_helper_connector_state_reset() to
__drm_atomic_helper_connector_state_init().
Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 12 ++++++------
include/drm/drm_atomic_state_helper.h | 2 +-
2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index 8762171c9432..e2e5a1b8a820 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -474,24 +474,24 @@ void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
kfree(state);
}
EXPORT_SYMBOL(drm_atomic_helper_plane_destroy_state);
/**
- * __drm_atomic_helper_connector_state_reset - reset the connector state
+ * __drm_atomic_helper_connector_state_init - Initialize the connector state
* @conn_state: atomic connector state, must not be NULL
- * @connector: connectotr object, must not be NULL
+ * @connector: connector object, must not be NULL
*
* Initializes the newly allocated @conn_state with default
* values. This is useful for drivers that subclass the connector state.
*/
void
-__drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_state,
- struct drm_connector *connector)
+__drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state,
+ struct drm_connector *connector)
{
conn_state->connector = connector;
}
-EXPORT_SYMBOL(__drm_atomic_helper_connector_state_reset);
+EXPORT_SYMBOL(__drm_atomic_helper_connector_state_init);
/**
* __drm_atomic_helper_connector_reset - reset state on connector
* @connector: drm connector
* @conn_state: connector state to assign
@@ -506,11 +506,11 @@ EXPORT_SYMBOL(__drm_atomic_helper_connector_state_reset);
void
__drm_atomic_helper_connector_reset(struct drm_connector *connector,
struct drm_connector_state *conn_state)
{
if (conn_state)
- __drm_atomic_helper_connector_state_reset(conn_state, connector);
+ __drm_atomic_helper_connector_state_init(conn_state, connector);
connector->state = conn_state;
}
EXPORT_SYMBOL(__drm_atomic_helper_connector_reset);
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 213f7e298008..9634a70e0401 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -68,11 +68,11 @@ struct drm_plane_state *
drm_atomic_helper_plane_duplicate_state(struct drm_plane *plane);
void __drm_atomic_helper_plane_destroy_state(struct drm_plane_state *state);
void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
struct drm_plane_state *state);
-void __drm_atomic_helper_connector_state_reset(struct drm_connector_state *conn_state,
+void __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state,
struct drm_connector *connector);
void __drm_atomic_helper_connector_reset(struct drm_connector *connector,
struct drm_connector_state *conn_state);
void drm_atomic_helper_connector_reset(struct drm_connector *connector);
void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector);
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 14/20] drm/hdmi: Rename __drm_atomic_helper_connector_hdmi_reset()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (12 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 13/20] drm/atomic-state-helper: Rename __drm_atomic_helper_connector_state_reset() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 15/20] drm/connector: Add new atomic_create_state callback Maxime Ripard
` (9 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart, Laurent Pinchart
__drm_atomic_helper_connector_hdmi_reset() is typically used to
initialize a newly allocated drm_connector_state when the connector is
using the HDMI helpers, and is being called by the
drm_connector_funcs.reset implementation.
Since we want to consolidate DRM objects state allocation around the
atomic_create_state callback that will only allocate and initialize a
new drm_connector_state instance, we will need to call
__drm_atomic_helper_connector_hdmi_reset() from both the reset and
atomic_create hooks.
To avoid any confusion, we can thus rename
__drm_atomic_helper_connector_hdmi_reset() to
__drm_atomic_helper_connector_hdmi_state_init().
Suggested-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/display/drm_bridge_connector.c | 4 ++--
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 15 ++++++++-------
drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 2 +-
drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 2 +-
drivers/gpu/drm/vc4/vc4_hdmi.c | 2 +-
include/drm/display/drm_hdmi_state_helper.h | 4 ++--
6 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
index 649969fca141..50408af746d8 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -270,12 +270,12 @@ static void drm_bridge_connector_reset(struct drm_connector *connector)
struct drm_bridge_connector *bridge_connector =
to_drm_bridge_connector(connector);
drm_atomic_helper_connector_reset(connector);
if (bridge_connector->bridge_hdmi)
- __drm_atomic_helper_connector_hdmi_reset(connector,
- connector->state);
+ __drm_atomic_helper_connector_hdmi_state_init(connector,
+ connector->state);
}
static const struct drm_connector_funcs drm_bridge_connector_funcs = {
.reset = drm_bridge_connector_reset,
.detect = drm_bridge_connector_detect,
diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
index 4867edbf2622..83e2790fab00 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
@@ -304,29 +304,30 @@
* --kunitconfig=drivers/gpu/drm/tests \
* drm_atomic_helper_connector_hdmi_*
*/
/**
- * __drm_atomic_helper_connector_hdmi_reset() - Initializes all HDMI @drm_connector_state resources
+ * __drm_atomic_helper_connector_hdmi_state_init() - Initialize all HDMI @drm_connector_state resources
* @connector: DRM connector
- * @new_conn_state: connector state to reset
+ * @new_conn_state: connector state to initialize
*
* Initializes all HDMI resources from a @drm_connector_state without
* actually allocating it. This is useful for HDMI drivers, in
- * combination with __drm_atomic_helper_connector_reset() or
- * drm_atomic_helper_connector_reset().
+ * combination with __drm_atomic_helper_connector_state_init(),
+ * drm_atomic_helper_connector_reset(), or
+ * drm_atomic_helper_connector_create_state() .
*/
-void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector,
- struct drm_connector_state *new_conn_state)
+void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector *connector,
+ struct drm_connector_state *new_conn_state)
{
unsigned int max_bpc = connector->max_bpc;
new_conn_state->max_bpc = max_bpc;
new_conn_state->max_requested_bpc = max_bpc;
new_conn_state->hdmi.broadcast_rgb = DRM_HDMI_BROADCAST_RGB_AUTO;
}
-EXPORT_SYMBOL(__drm_atomic_helper_connector_hdmi_reset);
+EXPORT_SYMBOL(__drm_atomic_helper_connector_hdmi_state_init);
static enum hdmi_colorspace
output_color_format_to_hdmi_colorspace(const struct drm_connector *connector,
enum drm_output_color_format fmt)
{
diff --git a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
index 07e2afcb4f95..3cad8f9bc529 100644
--- a/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
+++ b/drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c
@@ -283,11 +283,11 @@ sun4i_hdmi_connector_detect(struct drm_connector *connector, bool force)
}
static void sun4i_hdmi_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_reset(connector, connector->state);
+ __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
}
static const struct drm_connector_funcs sun4i_hdmi_connector_funcs = {
.detect = sun4i_hdmi_connector_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
diff --git a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
index c9819c3fc635..e89e1af7a811 100644
--- a/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
+++ b/drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c
@@ -166,11 +166,11 @@ static const struct drm_connector_helper_funcs dummy_connector_helper_funcs = {
};
static void dummy_hdmi_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_reset(connector, connector->state);
+ __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
}
static const struct drm_connector_funcs dummy_connector_funcs = {
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index a161d3b00a25..74dce4be0c00 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -506,11 +506,11 @@ static int vc4_hdmi_connector_atomic_check(struct drm_connector *connector,
}
static void vc4_hdmi_connector_reset(struct drm_connector *connector)
{
drm_atomic_helper_connector_reset(connector);
- __drm_atomic_helper_connector_hdmi_reset(connector, connector->state);
+ __drm_atomic_helper_connector_hdmi_state_init(connector, connector->state);
drm_atomic_helper_connector_tv_margins_reset(connector);
}
static const struct drm_connector_funcs vc4_hdmi_connector_funcs = {
.force = drm_atomic_helper_connector_hdmi_force,
diff --git a/include/drm/display/drm_hdmi_state_helper.h b/include/drm/display/drm_hdmi_state_helper.h
index 0adc30c55ec9..13375bd0f4ae 100644
--- a/include/drm/display/drm_hdmi_state_helper.h
+++ b/include/drm/display/drm_hdmi_state_helper.h
@@ -9,12 +9,12 @@ struct drm_connector_state;
struct drm_display_mode;
struct hdmi_audio_infoframe;
enum drm_connector_status;
-void __drm_atomic_helper_connector_hdmi_reset(struct drm_connector *connector,
- struct drm_connector_state *new_conn_state);
+void __drm_atomic_helper_connector_hdmi_state_init(struct drm_connector *connector,
+ struct drm_connector_state *new_conn_state);
int drm_atomic_helper_connector_hdmi_check(struct drm_connector *connector,
struct drm_atomic_commit *state);
int drm_atomic_helper_connector_hdmi_update_audio_infoframe(struct drm_connector *connector,
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 15/20] drm/connector: Add new atomic_create_state callback
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (13 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 14/20] drm/hdmi: Rename __drm_atomic_helper_connector_hdmi_reset() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 16/20] drm/mode-config: Create drm_mode_config_create_initial_state() Maxime Ripard
` (8 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
Commit 47b5ac7daa46 ("drm/atomic: Add new atomic_create_state callback
to drm_private_obj") introduced a new pattern for allocating drm object
states.
Instead of relying on the reset() callback, it created a new
atomic_create_state hook. This is helpful because reset is a bit
overloaded: it's used to create the initial software state, reset it,
but also reset the hardware.
It can also be used either at probe time, to create the initial state
and possibly reset the hardware to an expected default, but also during
suspend/resume.
Both these cases come with different expectations too: during the
initialization, we want to initialize all states, but during
suspend/resume, drm_private_states for example are expected to be kept
around.
reset() also isn't fallible, which makes it harder to handle
initialization errors properly. This is only really relevant for some
drivers though, since all the helpers for reset only create a new
state, and don't touch the hardware at all.
It was thus decided to create a new hook that would allocate and
initialize a pristine state without any side effect:
atomic_create_state to untangle a bit some of it, and to separate the
initialization with the actual reset one might need during a
suspend/resume.
Continue the transition to the new pattern with connectors.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic_state_helper.c | 26 ++++++++++++++++++++++++++
drivers/gpu/drm/drm_mode_config.c | 31 ++++++++++++++++++++++++++++++-
include/drm/drm_atomic_state_helper.h | 2 ++
include/drm/drm_connector.h | 16 ++++++++++++++++
4 files changed, 74 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
index e2e5a1b8a820..07686e94aae0 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -532,10 +532,36 @@ void drm_atomic_helper_connector_reset(struct drm_connector *connector)
kfree(connector->state);
__drm_atomic_helper_connector_reset(connector, conn_state);
}
EXPORT_SYMBOL(drm_atomic_helper_connector_reset);
+/**
+ * drm_atomic_helper_connector_create_state - default &drm_connector_funcs.atomic_create_state hook for connectors
+ * @connector: connector object
+ *
+ * Allocates and initializes pristine @drm_connector_state.
+ *
+ * This is useful for drivers that don't subclass @drm_connector_state.
+ *
+ * RETURNS:
+ * Pointer to new connector state, or ERR_PTR on failure.
+ */
+struct drm_connector_state *
+drm_atomic_helper_connector_create_state(struct drm_connector *connector)
+{
+ struct drm_connector_state *state;
+
+ state = kzalloc_obj(*state);
+ if (!state)
+ return ERR_PTR(-ENOMEM);
+
+ __drm_atomic_helper_connector_state_init(state, connector);
+
+ return state;
+}
+EXPORT_SYMBOL(drm_atomic_helper_connector_create_state);
+
/**
* drm_atomic_helper_connector_tv_margins_reset - Resets TV connector properties
* @connector: DRM connector
*
* Resets the TV-related properties attached to a connector.
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 2e2cd18a14b4..9d240817f8b6 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -235,10 +235,36 @@ static int drm_mode_config_crtc_reset_with_create_state(struct drm_crtc *crtc)
}
return drm_mode_config_crtc_create_state(crtc);
}
+static int drm_mode_config_connector_create_state(struct drm_connector *connector)
+{
+ struct drm_connector_state *conn_state;
+
+ if (!connector->funcs->atomic_create_state)
+ return 0;
+
+ conn_state = connector->funcs->atomic_create_state(connector);
+ if (IS_ERR(conn_state))
+ return PTR_ERR(conn_state);
+
+ connector->state = conn_state;
+
+ return 0;
+}
+
+static int drm_mode_config_connector_reset_with_create_state(struct drm_connector *connector)
+{
+ if (connector->state) {
+ connector->funcs->atomic_destroy_state(connector, connector->state);
+ connector->state = NULL;
+ }
+
+ return drm_mode_config_connector_create_state(connector);
+}
+
/**
* drm_mode_config_reset - call ->reset callbacks
* @dev: drm device
*
* This functions calls all the crtc's, encoder's and connector's ->reset
@@ -278,13 +304,16 @@ void drm_mode_config_reset(struct drm_device *dev)
drm_for_each_encoder(encoder, dev)
if (encoder->funcs && encoder->funcs->reset)
encoder->funcs->reset(encoder);
drm_connector_list_iter_begin(dev, &conn_iter);
- drm_for_each_connector_iter(connector, &conn_iter)
+ drm_for_each_connector_iter(connector, &conn_iter) {
if (connector->funcs->reset)
connector->funcs->reset(connector);
+ else if (connector->funcs->atomic_create_state)
+ drm_mode_config_connector_reset_with_create_state(connector);
+ }
drm_connector_list_iter_end(&conn_iter);
}
EXPORT_SYMBOL(drm_mode_config_reset);
/*
diff --git a/include/drm/drm_atomic_state_helper.h b/include/drm/drm_atomic_state_helper.h
index 9634a70e0401..f4b6d8833bc2 100644
--- a/include/drm/drm_atomic_state_helper.h
+++ b/include/drm/drm_atomic_state_helper.h
@@ -73,10 +73,12 @@ void drm_atomic_helper_plane_destroy_state(struct drm_plane *plane,
void __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state,
struct drm_connector *connector);
void __drm_atomic_helper_connector_reset(struct drm_connector *connector,
struct drm_connector_state *conn_state);
void drm_atomic_helper_connector_reset(struct drm_connector *connector);
+struct drm_connector_state *
+drm_atomic_helper_connector_create_state(struct drm_connector *connector);
void drm_atomic_helper_connector_tv_reset(struct drm_connector *connector);
int drm_atomic_helper_connector_tv_check(struct drm_connector *connector,
struct drm_atomic_commit *state);
void drm_atomic_helper_connector_tv_margins_reset(struct drm_connector *connector);
void
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 5ad62c207d00..529755c2e862 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -1569,10 +1569,26 @@ struct drm_connector_funcs {
* when a connector is being hot-unplugged for drivers that support
* connector hotplugging (e.g. DisplayPort MST).
*/
void (*destroy)(struct drm_connector *connector);
+ /**
+ * @atomic_create_state:
+ *
+ * Allocate a pristine, initialized, state for the connector
+ * object and return it. This callback must have no side
+ * effects: in particular, the returned state must not be
+ * assigned to the object's state pointer and it must not affect
+ * the hardware state.
+ *
+ * RETURNS:
+ *
+ * A new, pristine, connector state instance or an error pointer
+ * on failure.
+ */
+ struct drm_connector_state *(*atomic_create_state)(struct drm_connector *connector);
+
/**
* @atomic_duplicate_state:
*
* Duplicate the current atomic state for this connector and return it.
* The core and helpers guarantee that any atomic state duplicated with
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 16/20] drm/mode-config: Create drm_mode_config_create_initial_state()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (14 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 15/20] drm/connector: Add new atomic_create_state callback Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 17/20] drm/drv: Switch skeleton to drm_mode_config_create_initial_state() Maxime Ripard
` (7 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
drm_mode_config_reset() can be used to create the initial state, but
also to return to the initial state, when doing a suspend/resume cycle
for example.
It also affects both the software and the hardware, and drivers can
choose to reset the hardware as well. Most will just create an empty
state and the synchronisation between hardware and software states will
effectively be done when the first commit is done.
That dual role can be harmful, since some objects do need to be
initialized but also need to be preserved across a suspend/resume cycle.
drm_private_obj are such objects for example.
Thus, create another helper for drivers to call to initialize their
state when the driver is loaded, so we can make
drm_mode_config_reset() only about handling suspend/resume and similar.
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_atomic.c | 13 +++++-
drivers/gpu/drm/drm_mode_config.c | 87 +++++++++++++++++++++++++++++++++++++++
include/drm/drm_mode_config.h | 1 +
3 files changed, 99 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/drm_atomic.c b/drivers/gpu/drm/drm_atomic.c
index 04bc3e736cbd..1afa3eef58b5 100644
--- a/drivers/gpu/drm/drm_atomic.c
+++ b/drivers/gpu/drm/drm_atomic.c
@@ -59,12 +59,21 @@
* preparing the update and kept alive as long as they are active in the
* device.
*
* Their respective lifetimes are:
*
- * - at reset time, the object reset implementation will allocate a new
- * default state and will store it in the object state pointer.
+ * - at driver initialization time, the driver will call
+ * drm_mode_config_create_initial_state() to allocate an initial,
+ * pristine, state for each object and will store it in the objects
+ * state pointer. Historically, this was one of
+ * drm_mode_config_reset() job, so one might still encounter it in a
+ * driver.
+ *
+ * - at reset time, for example during suspend/resume,
+ * drm_mode_config_reset() will reset the software and hardware state
+ * to a known default and will store it in the object's state pointer.
+ * Not all objects are affected by drm_mode_config_reset() though.
*
* - whenever a new update is needed:
*
* + A new &struct drm_atomic_commit is allocated using
* drm_atomic_commit_alloc().
diff --git a/drivers/gpu/drm/drm_mode_config.c b/drivers/gpu/drm/drm_mode_config.c
index 9d240817f8b6..27fe95184182 100644
--- a/drivers/gpu/drm/drm_mode_config.c
+++ b/drivers/gpu/drm/drm_mode_config.c
@@ -21,10 +21,11 @@
*/
#include <linux/export.h>
#include <linux/uaccess.h>
+#include <drm/drm_atomic.h>
#include <drm/drm_drv.h>
#include <drm/drm_encoder.h>
#include <drm/drm_file.h>
#include <drm/drm_framebuffer.h>
#include <drm/drm_managed.h>
@@ -314,10 +315,96 @@ void drm_mode_config_reset(struct drm_device *dev)
}
drm_connector_list_iter_end(&conn_iter);
}
EXPORT_SYMBOL(drm_mode_config_reset);
+/**
+ * drm_mode_config_create_initial_state - Allocates the initial state
+ * @dev: drm device
+ *
+ * This functions creates the initial state for all the objects. Drivers
+ * can use this in e.g. probe to initialize their software state.
+ *
+ * It has two main differences with drm_mode_config_reset(): the reset()
+ * hooks aren't called and thus the hardware will be left untouched, but
+ * also the &drm_private_obj structures will be initialized as opposed
+ * to drm_mode_config_reset() that skips them.
+ *
+ * Returns: 0 on success, negative error value on failure.
+ */
+int drm_mode_config_create_initial_state(struct drm_device *dev)
+{
+ struct drm_crtc *crtc;
+ struct drm_colorop *colorop;
+ struct drm_plane *plane;
+ struct drm_connector *connector;
+ struct drm_connector_list_iter conn_iter;
+ struct drm_private_obj *privobj;
+ int ret;
+
+ drm_for_each_privobj(privobj, dev) {
+ struct drm_private_state *privobj_state;
+
+ if (privobj->state)
+ continue;
+
+ if (!privobj->funcs->atomic_create_state)
+ continue;
+
+ privobj_state = privobj->funcs->atomic_create_state(privobj);
+ if (IS_ERR(privobj_state))
+ return PTR_ERR(privobj_state);
+
+ privobj->state = privobj_state;
+ }
+
+ drm_for_each_colorop(colorop, dev) {
+ struct drm_colorop_state *colorop_state;
+
+ if (colorop->state)
+ continue;
+
+ colorop_state = drm_atomic_helper_colorop_create_state(colorop);
+ if (IS_ERR(colorop_state))
+ return PTR_ERR(colorop_state);
+
+ colorop->state = colorop_state;
+ }
+
+ drm_for_each_plane(plane, dev) {
+ if (plane->state)
+ continue;
+
+ ret = drm_mode_config_plane_create_state(plane);
+ if (ret)
+ return ret;
+ }
+
+ drm_for_each_crtc(crtc, dev) {
+ if (crtc->state)
+ continue;
+
+ ret = drm_mode_config_crtc_create_state(crtc);
+ if (ret)
+ return ret;
+ }
+
+ drm_connector_list_iter_begin(dev, &conn_iter);
+ drm_for_each_connector_iter(connector, &conn_iter) {
+ if (connector->state)
+ continue;
+
+ ret = drm_mode_config_connector_create_state(connector);
+ if (ret)
+ return ret;
+ }
+ drm_connector_list_iter_end(&conn_iter);
+
+ return 0;
+}
+EXPORT_SYMBOL(drm_mode_config_create_initial_state);
+
/*
* Global properties
*/
static const struct drm_prop_enum_list drm_plane_type_enum_list[] = {
{ DRM_PLANE_TYPE_OVERLAY, "Overlay" },
diff --git a/include/drm/drm_mode_config.h b/include/drm/drm_mode_config.h
index e584652ddf67..d8f5b7e9673e 100644
--- a/include/drm/drm_mode_config.h
+++ b/include/drm/drm_mode_config.h
@@ -1005,9 +1005,10 @@ int __must_check drmm_mode_config_init(struct drm_device *dev);
static inline int drm_mode_config_init(struct drm_device *dev)
{
return drmm_mode_config_init(dev);
}
+int drm_mode_config_create_initial_state(struct drm_device *dev);
void drm_mode_config_reset(struct drm_device *dev);
void drm_mode_config_cleanup(struct drm_device *dev);
#endif
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 17/20] drm/drv: Switch skeleton to drm_mode_config_create_initial_state()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (15 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 16/20] drm/mode-config: Create drm_mode_config_create_initial_state() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 18/20] drm/tidss: Switch " Maxime Ripard
` (6 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard
The driver skeleton currently recommends calling
drm_mode_config_reset() at probe time to create the initial state.
Now that drm_mode_config_create_initial_state() exists to handle
initial state allocation without hardware side effects, update the
skeleton to recommend it instead.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/drm_drv.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
index 985c283cf59f..f537556b06a8 100644
--- a/drivers/gpu/drm/drm_drv.c
+++ b/drivers/gpu/drm/drm_drv.c
@@ -340,11 +340,13 @@ void drm_minor_release(struct drm_minor *minor)
*
* // Further setup, display pipeline etc
*
* platform_set_drvdata(pdev, drm);
*
- * drm_mode_config_reset(drm);
+ * ret = drm_mode_config_create_initial_state(drm);
+ * if (ret)
+ * return ret;
*
* ret = drm_dev_register(drm);
* if (ret)
* return ret;
*
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 18/20] drm/tidss: Switch to drm_mode_config_create_initial_state()
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (16 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 17/20] drm/drv: Switch skeleton to drm_mode_config_create_initial_state() Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 19/20] drm/tidss: Convert to atomic_create_state Maxime Ripard
` (5 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard
Now that drm_mode_config_create_initial_state() exists to create the
initial state, use it instead of drm_mode_config_reset() during
driver probe.
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/tidss/tidss_drv.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/tidss/tidss_drv.c b/drivers/gpu/drm/tidss/tidss_drv.c
index 1c8cc18bc53c..f5099d5d6e32 100644
--- a/drivers/gpu/drm/tidss/tidss_drv.c
+++ b/drivers/gpu/drm/tidss/tidss_drv.c
@@ -169,11 +169,15 @@ static int tidss_probe(struct platform_device *pdev)
goto err_runtime_suspend;
}
drm_kms_helper_poll_init(ddev);
- drm_mode_config_reset(ddev);
+ ret = drm_mode_config_create_initial_state(ddev);
+ if (ret) {
+ dev_err(dev, "failed to create initial state: %d\n", ret);
+ goto err_irq_uninstall;
+ }
ret = drm_dev_register(ddev, 0);
if (ret) {
dev_err(dev, "failed to register DRM device\n");
goto err_irq_uninstall;
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 19/20] drm/tidss: Convert to atomic_create_state
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (17 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 18/20] drm/tidss: Switch " Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 20/20] drm/bridge_connector: " Maxime Ripard
` (4 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
Our driver uses reset to create the various object states, but only
calls the helper that allocate a new state. They are thus strictly
equivalent to the new atomic_create_state helpers, so let's switch to
these.
Reviewed-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/tidss/tidss_crtc.c | 17 +++++++----------
drivers/gpu/drm/tidss/tidss_plane.c | 2 +-
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/tidss/tidss_crtc.c b/drivers/gpu/drm/tidss/tidss_crtc.c
index acab9307bdf3..400329aa2200 100644
--- a/drivers/gpu/drm/tidss/tidss_crtc.c
+++ b/drivers/gpu/drm/tidss/tidss_crtc.c
@@ -355,24 +355,21 @@ static void tidss_crtc_destroy_state(struct drm_crtc *crtc,
__drm_atomic_helper_crtc_destroy_state(&tstate->base);
kfree(tstate);
}
-static void tidss_crtc_reset(struct drm_crtc *crtc)
+static struct drm_crtc_state *tidss_crtc_create_state(struct drm_crtc *crtc)
{
struct tidss_crtc_state *tstate;
- if (crtc->state)
- tidss_crtc_destroy_state(crtc, crtc->state);
-
tstate = kzalloc_obj(*tstate);
- if (!tstate) {
- crtc->state = NULL;
- return;
- }
+ if (!tstate)
+ return ERR_PTR(-ENOMEM);
- __drm_atomic_helper_crtc_reset(crtc, &tstate->base);
+ __drm_atomic_helper_crtc_state_init(&tstate->base, crtc);
+
+ return &tstate->base;
}
static struct drm_crtc_state *tidss_crtc_duplicate_state(struct drm_crtc *crtc)
{
struct tidss_crtc_state *state, *current_state;
@@ -403,14 +400,14 @@ static void tidss_crtc_destroy(struct drm_crtc *crtc)
drm_crtc_cleanup(crtc);
kfree(tcrtc);
}
static const struct drm_crtc_funcs tidss_crtc_funcs = {
- .reset = tidss_crtc_reset,
.destroy = tidss_crtc_destroy,
.set_config = drm_atomic_helper_set_config,
.page_flip = drm_atomic_helper_page_flip,
+ .atomic_create_state = tidss_crtc_create_state,
.atomic_duplicate_state = tidss_crtc_duplicate_state,
.atomic_destroy_state = tidss_crtc_destroy_state,
.enable_vblank = tidss_crtc_enable_vblank,
.disable_vblank = tidss_crtc_disable_vblank,
};
diff --git a/drivers/gpu/drm/tidss/tidss_plane.c b/drivers/gpu/drm/tidss/tidss_plane.c
index 1a8b44fb45f8..6d82976c2db1 100644
--- a/drivers/gpu/drm/tidss/tidss_plane.c
+++ b/drivers/gpu/drm/tidss/tidss_plane.c
@@ -176,12 +176,12 @@ static const struct drm_plane_helper_funcs tidss_primary_plane_helper_funcs = {
};
static const struct drm_plane_funcs tidss_plane_funcs = {
.update_plane = drm_atomic_helper_update_plane,
.disable_plane = drm_atomic_helper_disable_plane,
- .reset = drm_atomic_helper_plane_reset,
.destroy = drm_plane_destroy,
+ .atomic_create_state = drm_atomic_helper_plane_create_state,
.atomic_duplicate_state = drm_atomic_helper_plane_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_plane_destroy_state,
};
struct tidss_plane *tidss_plane_create(struct tidss_device *tidss,
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* [PATCH v4 20/20] drm/bridge_connector: Convert to atomic_create_state
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (18 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 19/20] drm/tidss: Convert to atomic_create_state Maxime Ripard
@ 2026-05-12 13:06 ` Maxime Ripard
2026-05-12 18:03 ` ✗ CI.checkpatch: warning for drm/atomic: Rework initial state allocation (rev3) Patchwork
` (3 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Maxime Ripard @ 2026-05-12 13:06 UTC (permalink / raw)
To: Maarten Lankhorst, Thomas Zimmermann, David Airlie, Simona Vetter,
Jonathan Corbet, Shuah Khan, Dmitry Baryshkov, Jyri Sarha,
Tomi Valkeinen, Andrzej Hajda, Neil Armstrong, Robert Foss,
Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Simon Ser,
Harry Wentland, Melissa Wen, Sebastian Wick, Alex Hung,
Jani Nikula, Rodrigo Vivi, Joonas Lahtinen, Tvrtko Ursulin,
Chen-Yu Tsai, Samuel Holland, Dave Stevenson, Maíra Canal,
Raspberry Pi Kernel Maintenance
Cc: dri-devel, linux-doc, linux-kernel, Daniel Stone, intel-gfx,
intel-xe, linux-arm-kernel, linux-sunxi, Maxime Ripard,
Laurent Pinchart
The connector created by drm_bridge_connector only initializes a
pristine state in reset, which is equivalent to what
atomic_create_state would expect. Convert to it.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
---
drivers/gpu/drm/display/drm_bridge_connector.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/display/drm_bridge_connector.c b/drivers/gpu/drm/display/drm_bridge_connector.c
index 50408af746d8..cafa498c3848 100644
--- a/drivers/gpu/drm/display/drm_bridge_connector.c
+++ b/drivers/gpu/drm/display/drm_bridge_connector.c
@@ -263,26 +263,33 @@ static void drm_bridge_connector_debugfs_init(struct drm_connector *connector,
if (bridge->funcs->debugfs_init)
bridge->funcs->debugfs_init(bridge, root);
}
}
-static void drm_bridge_connector_reset(struct drm_connector *connector)
+static struct drm_connector_state *
+drm_bridge_connector_create_state(struct drm_connector *connector)
{
struct drm_bridge_connector *bridge_connector =
to_drm_bridge_connector(connector);
+ struct drm_connector_state *conn_state;
+
+ conn_state = drm_atomic_helper_connector_create_state(connector);
+ if (IS_ERR(conn_state))
+ return conn_state;
- drm_atomic_helper_connector_reset(connector);
if (bridge_connector->bridge_hdmi)
__drm_atomic_helper_connector_hdmi_state_init(connector,
- connector->state);
+ conn_state);
+
+ return conn_state;
}
static const struct drm_connector_funcs drm_bridge_connector_funcs = {
- .reset = drm_bridge_connector_reset,
.detect = drm_bridge_connector_detect,
.force = drm_bridge_connector_force,
.fill_modes = drm_helper_probe_single_connector_modes,
+ .atomic_create_state = drm_bridge_connector_create_state,
.atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
.debugfs_init = drm_bridge_connector_debugfs_init,
.oob_hotplug_event = drm_bridge_connector_oob_hotplug_event,
};
--
2.54.0
^ permalink raw reply related [flat|nested] 25+ messages in thread
* ✗ CI.checkpatch: warning for drm/atomic: Rework initial state allocation (rev3)
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (19 preceding siblings ...)
2026-05-12 13:06 ` [PATCH v4 20/20] drm/bridge_connector: " Maxime Ripard
@ 2026-05-12 18:03 ` Patchwork
2026-05-12 18:05 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
23 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-05-12 18:03 UTC (permalink / raw)
To: Maxime Ripard; +Cc: intel-xe
== Series Details ==
Series: drm/atomic: Rework initial state allocation (rev3)
URL : https://patchwork.freedesktop.org/series/163606/
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
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit b5d36bbd8ada66040d91e7af2a8d6d2cd4f29705
Author: Maxime Ripard <mripard@kernel.org>
Date: Tue May 12 15:06:18 2026 +0200
drm/bridge_connector: Convert to atomic_create_state
The connector created by drm_bridge_connector only initializes a
pristine state in reset, which is equivalent to what
atomic_create_state would expect. Convert to it.
Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Maxime Ripard <mripard@kernel.org>
+ /mt/dim checkpatch 9cb559e83f7f3c02c8c6566d3446cd37ecc56e86 drm-intel
c78cf41d3302 drm/atomic: Document atomic commit lifetime
91a09533a30b drm/colorop: Fix typos in the doc
4ef34e2bf741 drm/atomic: Drop drm_private_obj.state assignment from create_state
fc168bb31b0a drm/atomic: Expand atomic_create_state expectations for drm_private_obj
8e1d0cda1015 drm/mode-config: Document drm_private_obj exclusion from drm_mode_config_reset()
64b18679684a drm/colorop: Rename __drm_colorop_state_reset()
1fed4f55b5f9 drm/colorop: Create drm_atomic_helper_colorop_create_state()
e046d93b8fee drm/atomic-state-helper: Fix __drm_atomic_helper_plane_reset() doc typo
b2305520cca8 drm/atomic-state-helper: Rename __drm_atomic_helper_plane_state_reset()
-:91: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#91: FILE: include/drm/drm_atomic_state_helper.h:57:
+void __drm_atomic_helper_plane_state_init(struct drm_plane_state *state,
struct drm_plane *plane);
total: 0 errors, 0 warnings, 1 checks, 51 lines checked
06665aee4bfb drm/plane: Add new atomic_create_state callback
-:49: WARNING:LONG_LINE_COMMENT: line length of 102 exceeds 100 columns
#49: FILE: drivers/gpu/drm/drm_atomic_state_helper.c:344:
+ * drm_atomic_helper_plane_create_state - default &drm_plane_funcs.atomic_create_state hook for planes
total: 0 errors, 1 warnings, 0 checks, 106 lines checked
e5b075985182 drm/atomic-state-helper: Rename __drm_atomic_helper_crtc_state_reset()
-:88: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#88: FILE: include/drm/drm_atomic_state_helper.h:44:
+void __drm_atomic_helper_crtc_state_init(struct drm_crtc_state *state,
struct drm_crtc *crtc);
total: 0 errors, 0 warnings, 1 checks, 48 lines checked
2299165f48f1 drm/crtc: Add new atomic_create_state callback
974846012d51 drm/atomic-state-helper: Rename __drm_atomic_helper_connector_state_reset()
-:76: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#76: FILE: include/drm/drm_atomic_state_helper.h:74:
+void __drm_atomic_helper_connector_state_init(struct drm_connector_state *conn_state,
struct drm_connector *connector);
total: 0 errors, 0 warnings, 1 checks, 41 lines checked
c2df25cb88fe drm/hdmi: Rename __drm_atomic_helper_connector_hdmi_reset()
-:51: WARNING:LONG_LINE_COMMENT: line length of 103 exceeds 100 columns
#51: FILE: drivers/gpu/drm/display/drm_hdmi_state_helper.c:309:
+ * __drm_atomic_helper_connector_hdmi_state_init() - Initialize all HDMI @drm_connector_state resources
total: 0 errors, 1 warnings, 0 checks, 76 lines checked
b1ff54e7ccf2 drm/connector: Add new atomic_create_state callback
-:50: WARNING:LONG_LINE_COMMENT: line length of 114 exceeds 100 columns
#50: FILE: drivers/gpu/drm/drm_atomic_state_helper.c:538:
+ * drm_atomic_helper_connector_create_state - default &drm_connector_funcs.atomic_create_state hook for connectors
total: 0 errors, 1 warnings, 0 checks, 107 lines checked
58781933ec3e drm/mode-config: Create drm_mode_config_create_initial_state()
db211bfa6934 drm/drv: Switch skeleton to drm_mode_config_create_initial_state()
960ecd290410 drm/tidss: Switch to drm_mode_config_create_initial_state()
c4c68f066f27 drm/tidss: Convert to atomic_create_state
b5d36bbd8ada drm/bridge_connector: Convert to atomic_create_state
^ permalink raw reply [flat|nested] 25+ messages in thread
* ✓ CI.KUnit: success for drm/atomic: Rework initial state allocation (rev3)
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (20 preceding siblings ...)
2026-05-12 18:03 ` ✗ CI.checkpatch: warning for drm/atomic: Rework initial state allocation (rev3) Patchwork
@ 2026-05-12 18:05 ` Patchwork
2026-05-12 19:35 ` ✓ Xe.CI.BAT: " Patchwork
2026-05-13 9:41 ` ✗ Xe.CI.FULL: failure " Patchwork
23 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-05-12 18:05 UTC (permalink / raw)
To: Maxime Ripard; +Cc: intel-xe
== Series Details ==
Series: drm/atomic: Rework initial state allocation (rev3)
URL : https://patchwork.freedesktop.org/series/163606/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[18:03:54] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:03:59] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[18:04:30] Starting KUnit Kernel (1/1)...
[18:04:30] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:04:30] ================== guc_buf (11 subtests) ===================
[18:04:30] [PASSED] test_smallest
[18:04:30] [PASSED] test_largest
[18:04:30] [PASSED] test_granular
[18:04:30] [PASSED] test_unique
[18:04:30] [PASSED] test_overlap
[18:04:30] [PASSED] test_reusable
[18:04:30] [PASSED] test_too_big
[18:04:30] [PASSED] test_flush
[18:04:30] [PASSED] test_lookup
[18:04:30] [PASSED] test_data
[18:04:30] [PASSED] test_class
[18:04:30] ===================== [PASSED] guc_buf =====================
[18:04:30] =================== guc_dbm (7 subtests) ===================
[18:04:30] [PASSED] test_empty
[18:04:30] [PASSED] test_default
[18:04:30] ======================== test_size ========================
[18:04:30] [PASSED] 4
[18:04:30] [PASSED] 8
[18:04:30] [PASSED] 32
[18:04:30] [PASSED] 256
[18:04:30] ==================== [PASSED] test_size ====================
[18:04:30] ======================= test_reuse ========================
[18:04:30] [PASSED] 4
[18:04:30] [PASSED] 8
[18:04:30] [PASSED] 32
[18:04:30] [PASSED] 256
[18:04:30] =================== [PASSED] test_reuse ====================
[18:04:30] =================== test_range_overlap ====================
[18:04:30] [PASSED] 4
[18:04:30] [PASSED] 8
[18:04:30] [PASSED] 32
[18:04:30] [PASSED] 256
[18:04:30] =============== [PASSED] test_range_overlap ================
[18:04:30] =================== test_range_compact ====================
[18:04:30] [PASSED] 4
[18:04:30] [PASSED] 8
[18:04:30] [PASSED] 32
[18:04:30] [PASSED] 256
[18:04:30] =============== [PASSED] test_range_compact ================
[18:04:30] ==================== test_range_spare =====================
[18:04:30] [PASSED] 4
[18:04:30] [PASSED] 8
[18:04:30] [PASSED] 32
[18:04:30] [PASSED] 256
[18:04:30] ================ [PASSED] test_range_spare =================
[18:04:30] ===================== [PASSED] guc_dbm =====================
[18:04:30] =================== guc_idm (6 subtests) ===================
[18:04:30] [PASSED] bad_init
[18:04:30] [PASSED] no_init
[18:04:30] [PASSED] init_fini
[18:04:30] [PASSED] check_used
[18:04:30] [PASSED] check_quota
[18:04:30] [PASSED] check_all
[18:04:30] ===================== [PASSED] guc_idm =====================
[18:04:30] ================== no_relay (3 subtests) ===================
[18:04:30] [PASSED] xe_drops_guc2pf_if_not_ready
[18:04:30] [PASSED] xe_drops_guc2vf_if_not_ready
[18:04:30] [PASSED] xe_rejects_send_if_not_ready
[18:04:30] ==================== [PASSED] no_relay =====================
[18:04:30] ================== pf_relay (14 subtests) ==================
[18:04:30] [PASSED] pf_rejects_guc2pf_too_short
[18:04:30] [PASSED] pf_rejects_guc2pf_too_long
[18:04:30] [PASSED] pf_rejects_guc2pf_no_payload
[18:04:30] [PASSED] pf_fails_no_payload
[18:04:30] [PASSED] pf_fails_bad_origin
[18:04:30] [PASSED] pf_fails_bad_type
[18:04:30] [PASSED] pf_txn_reports_error
[18:04:30] [PASSED] pf_txn_sends_pf2guc
[18:04:30] [PASSED] pf_sends_pf2guc
[18:04:30] [SKIPPED] pf_loopback_nop
[18:04:30] [SKIPPED] pf_loopback_echo
[18:04:30] [SKIPPED] pf_loopback_fail
[18:04:30] [SKIPPED] pf_loopback_busy
[18:04:30] [SKIPPED] pf_loopback_retry
[18:04:30] ==================== [PASSED] pf_relay =====================
[18:04:30] ================== vf_relay (3 subtests) ===================
[18:04:30] [PASSED] vf_rejects_guc2vf_too_short
[18:04:30] [PASSED] vf_rejects_guc2vf_too_long
[18:04:30] [PASSED] vf_rejects_guc2vf_no_payload
[18:04:30] ==================== [PASSED] vf_relay =====================
[18:04:30] ================ pf_gt_config (9 subtests) =================
[18:04:30] [PASSED] fair_contexts_1vf
[18:04:30] [PASSED] fair_doorbells_1vf
[18:04:30] [PASSED] fair_ggtt_1vf
[18:04:30] ====================== fair_vram_1vf ======================
[18:04:30] [PASSED] 3.50 GiB
[18:04:30] [PASSED] 11.5 GiB
[18:04:30] [PASSED] 15.5 GiB
[18:04:30] [PASSED] 31.5 GiB
[18:04:30] [PASSED] 63.5 GiB
[18:04:30] [PASSED] 1.91 GiB
[18:04:30] ================== [PASSED] fair_vram_1vf ==================
[18:04:30] ================ fair_vram_1vf_admin_only =================
[18:04:30] [PASSED] 3.50 GiB
[18:04:30] [PASSED] 11.5 GiB
[18:04:30] [PASSED] 15.5 GiB
[18:04:30] [PASSED] 31.5 GiB
[18:04:30] [PASSED] 63.5 GiB
[18:04:30] [PASSED] 1.91 GiB
[18:04:30] ============ [PASSED] fair_vram_1vf_admin_only =============
[18:04:30] ====================== fair_contexts ======================
[18:04:30] [PASSED] 1 VF
[18:04:30] [PASSED] 2 VFs
[18:04:30] [PASSED] 3 VFs
[18:04:30] [PASSED] 4 VFs
[18:04:30] [PASSED] 5 VFs
[18:04:30] [PASSED] 6 VFs
[18:04:30] [PASSED] 7 VFs
[18:04:30] [PASSED] 8 VFs
[18:04:30] [PASSED] 9 VFs
[18:04:30] [PASSED] 10 VFs
[18:04:30] [PASSED] 11 VFs
[18:04:30] [PASSED] 12 VFs
[18:04:30] [PASSED] 13 VFs
[18:04:30] [PASSED] 14 VFs
[18:04:30] [PASSED] 15 VFs
[18:04:30] [PASSED] 16 VFs
[18:04:30] [PASSED] 17 VFs
[18:04:30] [PASSED] 18 VFs
[18:04:30] [PASSED] 19 VFs
[18:04:30] [PASSED] 20 VFs
[18:04:30] [PASSED] 21 VFs
[18:04:30] [PASSED] 22 VFs
[18:04:30] [PASSED] 23 VFs
[18:04:30] [PASSED] 24 VFs
[18:04:30] [PASSED] 25 VFs
[18:04:30] [PASSED] 26 VFs
[18:04:30] [PASSED] 27 VFs
[18:04:30] [PASSED] 28 VFs
[18:04:30] [PASSED] 29 VFs
[18:04:30] [PASSED] 30 VFs
[18:04:30] [PASSED] 31 VFs
[18:04:30] [PASSED] 32 VFs
[18:04:30] [PASSED] 33 VFs
[18:04:30] [PASSED] 34 VFs
[18:04:30] [PASSED] 35 VFs
[18:04:30] [PASSED] 36 VFs
[18:04:30] [PASSED] 37 VFs
[18:04:30] [PASSED] 38 VFs
[18:04:30] [PASSED] 39 VFs
[18:04:30] [PASSED] 40 VFs
[18:04:30] [PASSED] 41 VFs
[18:04:30] [PASSED] 42 VFs
[18:04:30] [PASSED] 43 VFs
[18:04:30] [PASSED] 44 VFs
[18:04:30] [PASSED] 45 VFs
[18:04:30] [PASSED] 46 VFs
[18:04:30] [PASSED] 47 VFs
[18:04:30] [PASSED] 48 VFs
[18:04:30] [PASSED] 49 VFs
[18:04:30] [PASSED] 50 VFs
[18:04:30] [PASSED] 51 VFs
[18:04:30] [PASSED] 52 VFs
[18:04:30] [PASSED] 53 VFs
[18:04:30] [PASSED] 54 VFs
[18:04:30] [PASSED] 55 VFs
[18:04:30] [PASSED] 56 VFs
[18:04:30] [PASSED] 57 VFs
[18:04:30] [PASSED] 58 VFs
[18:04:30] [PASSED] 59 VFs
[18:04:30] [PASSED] 60 VFs
[18:04:30] [PASSED] 61 VFs
[18:04:30] [PASSED] 62 VFs
[18:04:30] [PASSED] 63 VFs
[18:04:30] ================== [PASSED] fair_contexts ==================
[18:04:30] ===================== fair_doorbells ======================
[18:04:30] [PASSED] 1 VF
[18:04:30] [PASSED] 2 VFs
[18:04:30] [PASSED] 3 VFs
[18:04:30] [PASSED] 4 VFs
[18:04:30] [PASSED] 5 VFs
[18:04:30] [PASSED] 6 VFs
[18:04:30] [PASSED] 7 VFs
[18:04:30] [PASSED] 8 VFs
[18:04:30] [PASSED] 9 VFs
[18:04:30] [PASSED] 10 VFs
[18:04:30] [PASSED] 11 VFs
[18:04:30] [PASSED] 12 VFs
[18:04:30] [PASSED] 13 VFs
[18:04:30] [PASSED] 14 VFs
[18:04:30] [PASSED] 15 VFs
[18:04:30] [PASSED] 16 VFs
[18:04:30] [PASSED] 17 VFs
[18:04:30] [PASSED] 18 VFs
[18:04:30] [PASSED] 19 VFs
[18:04:30] [PASSED] 20 VFs
[18:04:30] [PASSED] 21 VFs
[18:04:30] [PASSED] 22 VFs
[18:04:30] [PASSED] 23 VFs
[18:04:30] [PASSED] 24 VFs
[18:04:30] [PASSED] 25 VFs
[18:04:30] [PASSED] 26 VFs
[18:04:30] [PASSED] 27 VFs
[18:04:30] [PASSED] 28 VFs
[18:04:30] [PASSED] 29 VFs
[18:04:30] [PASSED] 30 VFs
[18:04:30] [PASSED] 31 VFs
[18:04:30] [PASSED] 32 VFs
[18:04:30] [PASSED] 33 VFs
[18:04:30] [PASSED] 34 VFs
[18:04:30] [PASSED] 35 VFs
[18:04:30] [PASSED] 36 VFs
[18:04:30] [PASSED] 37 VFs
[18:04:30] [PASSED] 38 VFs
[18:04:30] [PASSED] 39 VFs
[18:04:30] [PASSED] 40 VFs
[18:04:30] [PASSED] 41 VFs
[18:04:30] [PASSED] 42 VFs
[18:04:30] [PASSED] 43 VFs
[18:04:30] [PASSED] 44 VFs
[18:04:30] [PASSED] 45 VFs
[18:04:30] [PASSED] 46 VFs
[18:04:30] [PASSED] 47 VFs
[18:04:30] [PASSED] 48 VFs
[18:04:30] [PASSED] 49 VFs
[18:04:30] [PASSED] 50 VFs
[18:04:30] [PASSED] 51 VFs
[18:04:30] [PASSED] 52 VFs
[18:04:30] [PASSED] 53 VFs
[18:04:30] [PASSED] 54 VFs
[18:04:30] [PASSED] 55 VFs
[18:04:30] [PASSED] 56 VFs
[18:04:30] [PASSED] 57 VFs
[18:04:30] [PASSED] 58 VFs
[18:04:30] [PASSED] 59 VFs
[18:04:30] [PASSED] 60 VFs
[18:04:30] [PASSED] 61 VFs
[18:04:30] [PASSED] 62 VFs
[18:04:30] [PASSED] 63 VFs
[18:04:30] ================= [PASSED] fair_doorbells ==================
[18:04:30] ======================== fair_ggtt ========================
[18:04:30] [PASSED] 1 VF
[18:04:30] [PASSED] 2 VFs
[18:04:30] [PASSED] 3 VFs
[18:04:31] [PASSED] 4 VFs
[18:04:31] [PASSED] 5 VFs
[18:04:31] [PASSED] 6 VFs
[18:04:31] [PASSED] 7 VFs
[18:04:31] [PASSED] 8 VFs
[18:04:31] [PASSED] 9 VFs
[18:04:31] [PASSED] 10 VFs
[18:04:31] [PASSED] 11 VFs
[18:04:31] [PASSED] 12 VFs
[18:04:31] [PASSED] 13 VFs
[18:04:31] [PASSED] 14 VFs
[18:04:31] [PASSED] 15 VFs
[18:04:31] [PASSED] 16 VFs
[18:04:31] [PASSED] 17 VFs
[18:04:31] [PASSED] 18 VFs
[18:04:31] [PASSED] 19 VFs
[18:04:31] [PASSED] 20 VFs
[18:04:31] [PASSED] 21 VFs
[18:04:31] [PASSED] 22 VFs
[18:04:31] [PASSED] 23 VFs
[18:04:31] [PASSED] 24 VFs
[18:04:31] [PASSED] 25 VFs
[18:04:31] [PASSED] 26 VFs
[18:04:31] [PASSED] 27 VFs
[18:04:31] [PASSED] 28 VFs
[18:04:31] [PASSED] 29 VFs
[18:04:31] [PASSED] 30 VFs
[18:04:31] [PASSED] 31 VFs
[18:04:31] [PASSED] 32 VFs
[18:04:31] [PASSED] 33 VFs
[18:04:31] [PASSED] 34 VFs
[18:04:31] [PASSED] 35 VFs
[18:04:31] [PASSED] 36 VFs
[18:04:31] [PASSED] 37 VFs
[18:04:31] [PASSED] 38 VFs
[18:04:31] [PASSED] 39 VFs
[18:04:31] [PASSED] 40 VFs
[18:04:31] [PASSED] 41 VFs
[18:04:31] [PASSED] 42 VFs
[18:04:31] [PASSED] 43 VFs
[18:04:31] [PASSED] 44 VFs
[18:04:31] [PASSED] 45 VFs
[18:04:31] [PASSED] 46 VFs
[18:04:31] [PASSED] 47 VFs
[18:04:31] [PASSED] 48 VFs
[18:04:31] [PASSED] 49 VFs
[18:04:31] [PASSED] 50 VFs
[18:04:31] [PASSED] 51 VFs
[18:04:31] [PASSED] 52 VFs
[18:04:31] [PASSED] 53 VFs
[18:04:31] [PASSED] 54 VFs
[18:04:31] [PASSED] 55 VFs
[18:04:31] [PASSED] 56 VFs
[18:04:31] [PASSED] 57 VFs
[18:04:31] [PASSED] 58 VFs
[18:04:31] [PASSED] 59 VFs
[18:04:31] [PASSED] 60 VFs
[18:04:31] [PASSED] 61 VFs
[18:04:31] [PASSED] 62 VFs
[18:04:31] [PASSED] 63 VFs
[18:04:31] ==================== [PASSED] fair_ggtt ====================
[18:04:31] ======================== fair_vram ========================
[18:04:31] [PASSED] 1 VF
[18:04:31] [PASSED] 2 VFs
[18:04:31] [PASSED] 3 VFs
[18:04:31] [PASSED] 4 VFs
[18:04:31] [PASSED] 5 VFs
[18:04:31] [PASSED] 6 VFs
[18:04:31] [PASSED] 7 VFs
[18:04:31] [PASSED] 8 VFs
[18:04:31] [PASSED] 9 VFs
[18:04:31] [PASSED] 10 VFs
[18:04:31] [PASSED] 11 VFs
[18:04:31] [PASSED] 12 VFs
[18:04:31] [PASSED] 13 VFs
[18:04:31] [PASSED] 14 VFs
[18:04:31] [PASSED] 15 VFs
[18:04:31] [PASSED] 16 VFs
[18:04:31] [PASSED] 17 VFs
[18:04:31] [PASSED] 18 VFs
[18:04:31] [PASSED] 19 VFs
[18:04:31] [PASSED] 20 VFs
[18:04:31] [PASSED] 21 VFs
[18:04:31] [PASSED] 22 VFs
[18:04:31] [PASSED] 23 VFs
[18:04:31] [PASSED] 24 VFs
[18:04:31] [PASSED] 25 VFs
[18:04:31] [PASSED] 26 VFs
[18:04:31] [PASSED] 27 VFs
[18:04:31] [PASSED] 28 VFs
[18:04:31] [PASSED] 29 VFs
[18:04:31] [PASSED] 30 VFs
[18:04:31] [PASSED] 31 VFs
[18:04:31] [PASSED] 32 VFs
[18:04:31] [PASSED] 33 VFs
[18:04:31] [PASSED] 34 VFs
[18:04:31] [PASSED] 35 VFs
[18:04:31] [PASSED] 36 VFs
[18:04:31] [PASSED] 37 VFs
[18:04:31] [PASSED] 38 VFs
[18:04:31] [PASSED] 39 VFs
[18:04:31] [PASSED] 40 VFs
[18:04:31] [PASSED] 41 VFs
[18:04:31] [PASSED] 42 VFs
[18:04:31] [PASSED] 43 VFs
[18:04:31] [PASSED] 44 VFs
[18:04:31] [PASSED] 45 VFs
[18:04:31] [PASSED] 46 VFs
[18:04:31] [PASSED] 47 VFs
[18:04:31] [PASSED] 48 VFs
[18:04:31] [PASSED] 49 VFs
[18:04:31] [PASSED] 50 VFs
[18:04:31] [PASSED] 51 VFs
[18:04:31] [PASSED] 52 VFs
[18:04:31] [PASSED] 53 VFs
[18:04:31] [PASSED] 54 VFs
[18:04:31] [PASSED] 55 VFs
[18:04:31] [PASSED] 56 VFs
[18:04:31] [PASSED] 57 VFs
[18:04:31] [PASSED] 58 VFs
[18:04:31] [PASSED] 59 VFs
[18:04:31] [PASSED] 60 VFs
[18:04:31] [PASSED] 61 VFs
[18:04:31] [PASSED] 62 VFs
[18:04:31] [PASSED] 63 VFs
[18:04:31] ==================== [PASSED] fair_vram ====================
[18:04:31] ================== [PASSED] pf_gt_config ===================
[18:04:31] ===================== lmtt (1 subtest) =====================
[18:04:31] ======================== test_ops =========================
[18:04:31] [PASSED] 2-level
[18:04:31] [PASSED] multi-level
[18:04:31] ==================== [PASSED] test_ops =====================
[18:04:31] ====================== [PASSED] lmtt =======================
[18:04:31] ================= pf_service (11 subtests) =================
[18:04:31] [PASSED] pf_negotiate_any
[18:04:31] [PASSED] pf_negotiate_base_match
[18:04:31] [PASSED] pf_negotiate_base_newer
[18:04:31] [PASSED] pf_negotiate_base_next
[18:04:31] [SKIPPED] pf_negotiate_base_older
[18:04:31] [PASSED] pf_negotiate_base_prev
[18:04:31] [PASSED] pf_negotiate_latest_match
[18:04:31] [PASSED] pf_negotiate_latest_newer
[18:04:31] [PASSED] pf_negotiate_latest_next
[18:04:31] [SKIPPED] pf_negotiate_latest_older
[18:04:31] [SKIPPED] pf_negotiate_latest_prev
[18:04:31] =================== [PASSED] pf_service ====================
[18:04:31] ================= xe_guc_g2g (2 subtests) ==================
[18:04:31] ============== xe_live_guc_g2g_kunit_default ==============
[18:04:31] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[18:04:31] ============== xe_live_guc_g2g_kunit_allmem ===============
[18:04:31] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[18:04:31] =================== [SKIPPED] xe_guc_g2g ===================
[18:04:31] =================== xe_mocs (2 subtests) ===================
[18:04:31] ================ xe_live_mocs_kernel_kunit ================
[18:04:31] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[18:04:31] ================ xe_live_mocs_reset_kunit =================
[18:04:31] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[18:04:31] ==================== [SKIPPED] xe_mocs =====================
[18:04:31] ================= xe_migrate (2 subtests) ==================
[18:04:31] ================= xe_migrate_sanity_kunit =================
[18:04:31] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[18:04:31] ================== xe_validate_ccs_kunit ==================
[18:04:31] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[18:04:31] =================== [SKIPPED] xe_migrate ===================
[18:04:31] ================== xe_dma_buf (1 subtest) ==================
[18:04:31] ==================== xe_dma_buf_kunit =====================
[18:04:31] ================ [SKIPPED] xe_dma_buf_kunit ================
[18:04:31] =================== [SKIPPED] xe_dma_buf ===================
[18:04:31] ================= xe_bo_shrink (1 subtest) =================
[18:04:31] =================== xe_bo_shrink_kunit ====================
[18:04:31] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[18:04:31] ================== [SKIPPED] xe_bo_shrink ==================
[18:04:31] ==================== xe_bo (2 subtests) ====================
[18:04:31] ================== xe_ccs_migrate_kunit ===================
[18:04:31] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[18:04:31] ==================== xe_bo_evict_kunit ====================
[18:04:31] =============== [SKIPPED] xe_bo_evict_kunit ================
[18:04:31] ===================== [SKIPPED] xe_bo ======================
[18:04:31] ==================== args (13 subtests) ====================
[18:04:31] [PASSED] count_args_test
[18:04:31] [PASSED] call_args_example
[18:04:31] [PASSED] call_args_test
[18:04:31] [PASSED] drop_first_arg_example
[18:04:31] [PASSED] drop_first_arg_test
[18:04:31] [PASSED] first_arg_example
[18:04:31] [PASSED] first_arg_test
[18:04:31] [PASSED] last_arg_example
[18:04:31] [PASSED] last_arg_test
[18:04:31] [PASSED] pick_arg_example
[18:04:31] [PASSED] if_args_example
[18:04:31] [PASSED] if_args_test
[18:04:31] [PASSED] sep_comma_example
[18:04:31] ====================== [PASSED] args =======================
[18:04:31] =================== xe_pci (3 subtests) ====================
[18:04:31] ==================== check_graphics_ip ====================
[18:04:31] [PASSED] 12.00 Xe_LP
[18:04:31] [PASSED] 12.10 Xe_LP+
[18:04:31] [PASSED] 12.55 Xe_HPG
[18:04:31] [PASSED] 12.60 Xe_HPC
[18:04:31] [PASSED] 12.70 Xe_LPG
[18:04:31] [PASSED] 12.71 Xe_LPG
[18:04:31] [PASSED] 12.74 Xe_LPG+
[18:04:31] [PASSED] 20.01 Xe2_HPG
[18:04:31] [PASSED] 20.02 Xe2_HPG
[18:04:31] [PASSED] 20.04 Xe2_LPG
[18:04:31] [PASSED] 30.00 Xe3_LPG
[18:04:31] [PASSED] 30.01 Xe3_LPG
[18:04:31] [PASSED] 30.03 Xe3_LPG
[18:04:31] [PASSED] 30.04 Xe3_LPG
[18:04:31] [PASSED] 30.05 Xe3_LPG
[18:04:31] [PASSED] 35.10 Xe3p_LPG
[18:04:31] [PASSED] 35.11 Xe3p_XPC
[18:04:31] ================ [PASSED] check_graphics_ip ================
[18:04:31] ===================== check_media_ip ======================
[18:04:31] [PASSED] 12.00 Xe_M
[18:04:31] [PASSED] 12.55 Xe_HPM
[18:04:31] [PASSED] 13.00 Xe_LPM+
[18:04:31] [PASSED] 13.01 Xe2_HPM
[18:04:31] [PASSED] 20.00 Xe2_LPM
[18:04:31] [PASSED] 30.00 Xe3_LPM
[18:04:31] [PASSED] 30.02 Xe3_LPM
[18:04:31] [PASSED] 35.00 Xe3p_LPM
[18:04:31] [PASSED] 35.03 Xe3p_HPM
[18:04:31] ================= [PASSED] check_media_ip ==================
[18:04:31] =================== check_platform_desc ===================
[18:04:31] [PASSED] 0x9A60 (TIGERLAKE)
[18:04:31] [PASSED] 0x9A68 (TIGERLAKE)
[18:04:31] [PASSED] 0x9A70 (TIGERLAKE)
[18:04:31] [PASSED] 0x9A40 (TIGERLAKE)
[18:04:31] [PASSED] 0x9A49 (TIGERLAKE)
[18:04:31] [PASSED] 0x9A59 (TIGERLAKE)
[18:04:31] [PASSED] 0x9A78 (TIGERLAKE)
[18:04:31] [PASSED] 0x9AC0 (TIGERLAKE)
[18:04:31] [PASSED] 0x9AC9 (TIGERLAKE)
[18:04:31] [PASSED] 0x9AD9 (TIGERLAKE)
[18:04:31] [PASSED] 0x9AF8 (TIGERLAKE)
[18:04:31] [PASSED] 0x4C80 (ROCKETLAKE)
[18:04:31] [PASSED] 0x4C8A (ROCKETLAKE)
[18:04:31] [PASSED] 0x4C8B (ROCKETLAKE)
[18:04:31] [PASSED] 0x4C8C (ROCKETLAKE)
[18:04:31] [PASSED] 0x4C90 (ROCKETLAKE)
[18:04:31] [PASSED] 0x4C9A (ROCKETLAKE)
[18:04:31] [PASSED] 0x4680 (ALDERLAKE_S)
[18:04:31] [PASSED] 0x4682 (ALDERLAKE_S)
[18:04:31] [PASSED] 0x4688 (ALDERLAKE_S)
[18:04:31] [PASSED] 0x468A (ALDERLAKE_S)
[18:04:31] [PASSED] 0x468B (ALDERLAKE_S)
[18:04:31] [PASSED] 0x4690 (ALDERLAKE_S)
[18:04:31] [PASSED] 0x4692 (ALDERLAKE_S)
[18:04:31] [PASSED] 0x4693 (ALDERLAKE_S)
[18:04:31] [PASSED] 0x46A0 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46A1 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46A2 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46A3 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46A6 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46A8 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46AA (ALDERLAKE_P)
[18:04:31] [PASSED] 0x462A (ALDERLAKE_P)
[18:04:31] [PASSED] 0x4626 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x4628 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46B0 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46B1 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46B2 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46B3 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46C0 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46C1 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46C2 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46C3 (ALDERLAKE_P)
[18:04:31] [PASSED] 0x46D0 (ALDERLAKE_N)
[18:04:31] [PASSED] 0x46D1 (ALDERLAKE_N)
[18:04:31] [PASSED] 0x46D2 (ALDERLAKE_N)
[18:04:31] [PASSED] 0x46D3 (ALDERLAKE_N)
[18:04:31] [PASSED] 0x46D4 (ALDERLAKE_N)
[18:04:31] [PASSED] 0xA721 (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7A1 (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7A9 (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7AC (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7AD (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA720 (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7A0 (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7A8 (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7AA (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA7AB (ALDERLAKE_P)
[18:04:31] [PASSED] 0xA780 (ALDERLAKE_S)
[18:04:31] [PASSED] 0xA781 (ALDERLAKE_S)
[18:04:31] [PASSED] 0xA782 (ALDERLAKE_S)
[18:04:31] [PASSED] 0xA783 (ALDERLAKE_S)
[18:04:31] [PASSED] 0xA788 (ALDERLAKE_S)
[18:04:31] [PASSED] 0xA789 (ALDERLAKE_S)
[18:04:31] [PASSED] 0xA78A (ALDERLAKE_S)
[18:04:31] [PASSED] 0xA78B (ALDERLAKE_S)
[18:04:31] [PASSED] 0x4905 (DG1)
[18:04:31] [PASSED] 0x4906 (DG1)
[18:04:31] [PASSED] 0x4907 (DG1)
[18:04:31] [PASSED] 0x4908 (DG1)
[18:04:31] [PASSED] 0x4909 (DG1)
[18:04:31] [PASSED] 0x56C0 (DG2)
[18:04:31] [PASSED] 0x56C2 (DG2)
[18:04:31] [PASSED] 0x56C1 (DG2)
[18:04:31] [PASSED] 0x7D51 (METEORLAKE)
[18:04:31] [PASSED] 0x7DD1 (METEORLAKE)
[18:04:31] [PASSED] 0x7D41 (METEORLAKE)
[18:04:31] [PASSED] 0x7D67 (METEORLAKE)
[18:04:31] [PASSED] 0xB640 (METEORLAKE)
[18:04:31] [PASSED] 0x56A0 (DG2)
[18:04:31] [PASSED] 0x56A1 (DG2)
[18:04:31] [PASSED] 0x56A2 (DG2)
[18:04:31] [PASSED] 0x56BE (DG2)
[18:04:31] [PASSED] 0x56BF (DG2)
[18:04:31] [PASSED] 0x5690 (DG2)
[18:04:31] [PASSED] 0x5691 (DG2)
[18:04:31] [PASSED] 0x5692 (DG2)
[18:04:31] [PASSED] 0x56A5 (DG2)
[18:04:31] [PASSED] 0x56A6 (DG2)
[18:04:31] [PASSED] 0x56B0 (DG2)
[18:04:31] [PASSED] 0x56B1 (DG2)
[18:04:31] [PASSED] 0x56BA (DG2)
[18:04:31] [PASSED] 0x56BB (DG2)
[18:04:31] [PASSED] 0x56BC (DG2)
[18:04:31] [PASSED] 0x56BD (DG2)
[18:04:31] [PASSED] 0x5693 (DG2)
[18:04:31] [PASSED] 0x5694 (DG2)
[18:04:31] [PASSED] 0x5695 (DG2)
[18:04:31] [PASSED] 0x56A3 (DG2)
[18:04:31] [PASSED] 0x56A4 (DG2)
[18:04:31] [PASSED] 0x56B2 (DG2)
[18:04:31] [PASSED] 0x56B3 (DG2)
[18:04:31] [PASSED] 0x5696 (DG2)
[18:04:31] [PASSED] 0x5697 (DG2)
[18:04:31] [PASSED] 0xB69 (PVC)
[18:04:31] [PASSED] 0xB6E (PVC)
[18:04:31] [PASSED] 0xBD4 (PVC)
[18:04:31] [PASSED] 0xBD5 (PVC)
[18:04:31] [PASSED] 0xBD6 (PVC)
[18:04:31] [PASSED] 0xBD7 (PVC)
[18:04:31] [PASSED] 0xBD8 (PVC)
[18:04:31] [PASSED] 0xBD9 (PVC)
[18:04:31] [PASSED] 0xBDA (PVC)
[18:04:31] [PASSED] 0xBDB (PVC)
[18:04:31] [PASSED] 0xBE0 (PVC)
[18:04:31] [PASSED] 0xBE1 (PVC)
[18:04:31] [PASSED] 0xBE5 (PVC)
[18:04:31] [PASSED] 0x7D40 (METEORLAKE)
[18:04:31] [PASSED] 0x7D45 (METEORLAKE)
[18:04:31] [PASSED] 0x7D55 (METEORLAKE)
[18:04:31] [PASSED] 0x7D60 (METEORLAKE)
[18:04:31] [PASSED] 0x7DD5 (METEORLAKE)
[18:04:31] [PASSED] 0x6420 (LUNARLAKE)
[18:04:31] [PASSED] 0x64A0 (LUNARLAKE)
[18:04:31] [PASSED] 0x64B0 (LUNARLAKE)
[18:04:31] [PASSED] 0xE202 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE209 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE20B (BATTLEMAGE)
[18:04:31] [PASSED] 0xE20C (BATTLEMAGE)
[18:04:31] [PASSED] 0xE20D (BATTLEMAGE)
[18:04:31] [PASSED] 0xE210 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE211 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE212 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE216 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE220 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE221 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE222 (BATTLEMAGE)
[18:04:31] [PASSED] 0xE223 (BATTLEMAGE)
[18:04:31] [PASSED] 0xB080 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB081 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB082 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB083 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB084 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB085 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB086 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB087 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB08F (PANTHERLAKE)
[18:04:31] [PASSED] 0xB090 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB0A0 (PANTHERLAKE)
[18:04:31] [PASSED] 0xB0B0 (PANTHERLAKE)
[18:04:31] [PASSED] 0xFD80 (PANTHERLAKE)
[18:04:31] [PASSED] 0xFD81 (PANTHERLAKE)
[18:04:31] [PASSED] 0xD740 (NOVALAKE_S)
[18:04:31] [PASSED] 0xD741 (NOVALAKE_S)
[18:04:31] [PASSED] 0xD742 (NOVALAKE_S)
[18:04:31] [PASSED] 0xD743 (NOVALAKE_S)
[18:04:31] [PASSED] 0xD744 (NOVALAKE_S)
[18:04:31] [PASSED] 0xD745 (NOVALAKE_S)
[18:04:31] [PASSED] 0x674C (CRESCENTISLAND)
[18:04:31] [PASSED] 0x674D (CRESCENTISLAND)
[18:04:31] [PASSED] 0x674E (CRESCENTISLAND)
[18:04:31] [PASSED] 0x674F (CRESCENTISLAND)
[18:04:31] [PASSED] 0x6750 (CRESCENTISLAND)
[18:04:31] [PASSED] 0xD750 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD751 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD752 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD753 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD754 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD755 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD756 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD757 (NOVALAKE_P)
[18:04:31] [PASSED] 0xD75F (NOVALAKE_P)
[18:04:31] =============== [PASSED] check_platform_desc ===============
[18:04:31] ===================== [PASSED] xe_pci ======================
[18:04:31] =================== xe_rtp (2 subtests) ====================
[18:04:31] =============== xe_rtp_process_to_sr_tests ================
[18:04:31] [PASSED] coalesce-same-reg
[18:04:31] [PASSED] no-match-no-add
[18:04:31] [PASSED] match-or
[18:04:31] [PASSED] match-or-xfail
[18:04:31] [PASSED] no-match-no-add-multiple-rules
[18:04:31] [PASSED] two-regs-two-entries
[18:04:31] [PASSED] clr-one-set-other
[18:04:31] [PASSED] set-field
[18:04:31] [PASSED] conflict-duplicate
[18:04:31] [PASSED] conflict-not-disjoint
[18:04:31] [PASSED] conflict-reg-type
[18:04:31] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[18:04:31] ================== xe_rtp_process_tests ===================
[18:04:31] [PASSED] active1
[18:04:31] [PASSED] active2
[18:04:31] [PASSED] active-inactive
[18:04:31] [PASSED] inactive-active
[18:04:31] [PASSED] inactive-1st_or_active-inactive
[18:04:31] [PASSED] inactive-2nd_or_active-inactive
[18:04:31] [PASSED] inactive-last_or_active-inactive
[18:04:31] [PASSED] inactive-no_or_active-inactive
[18:04:31] ============== [PASSED] xe_rtp_process_tests ===============
[18:04:31] ===================== [PASSED] xe_rtp ======================
[18:04:31] ==================== xe_wa (1 subtest) =====================
[18:04:31] ======================== xe_wa_gt =========================
[18:04:31] [PASSED] TIGERLAKE B0
[18:04:31] [PASSED] DG1 A0
[18:04:31] [PASSED] DG1 B0
[18:04:31] [PASSED] ALDERLAKE_S A0
[18:04:31] [PASSED] ALDERLAKE_S B0
[18:04:31] [PASSED] ALDERLAKE_S C0
[18:04:31] [PASSED] ALDERLAKE_S D0
[18:04:31] [PASSED] ALDERLAKE_P A0
[18:04:31] [PASSED] ALDERLAKE_P B0
[18:04:31] [PASSED] ALDERLAKE_P C0
[18:04:31] [PASSED] ALDERLAKE_S RPLS D0
[18:04:31] [PASSED] ALDERLAKE_P RPLU E0
[18:04:31] [PASSED] DG2 G10 C0
[18:04:31] [PASSED] DG2 G11 B1
[18:04:31] [PASSED] DG2 G12 A1
[18:04:31] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[18:04:31] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[18:04:31] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[18:04:31] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[18:04:31] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[18:04:31] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[18:04:31] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[18:04:31] ==================== [PASSED] xe_wa_gt =====================
[18:04:31] ====================== [PASSED] xe_wa ======================
[18:04:31] ============================================================
[18:04:31] Testing complete. Ran 601 tests: passed: 583, skipped: 18
[18:04:31] Elapsed time: 36.220s total, 4.279s configuring, 31.319s building, 0.615s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[18:04:31] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:04:33] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[18:04:56] Starting KUnit Kernel (1/1)...
[18:04:56] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:04:56] ============ drm_test_pick_cmdline (2 subtests) ============
[18:04:56] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[18:04:56] =============== drm_test_pick_cmdline_named ===============
[18:04:56] [PASSED] NTSC
[18:04:56] [PASSED] NTSC-J
[18:04:56] [PASSED] PAL
[18:04:56] [PASSED] PAL-M
[18:04:56] =========== [PASSED] drm_test_pick_cmdline_named ===========
[18:04:56] ============== [PASSED] drm_test_pick_cmdline ==============
[18:04:56] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[18:04:56] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[18:04:56] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[18:04:56] =========== drm_validate_clone_mode (2 subtests) ===========
[18:04:56] ============== drm_test_check_in_clone_mode ===============
[18:04:56] [PASSED] in_clone_mode
[18:04:56] [PASSED] not_in_clone_mode
[18:04:56] ========== [PASSED] drm_test_check_in_clone_mode ===========
[18:04:56] =============== drm_test_check_valid_clones ===============
[18:04:56] [PASSED] not_in_clone_mode
[18:04:56] [PASSED] valid_clone
[18:04:56] [PASSED] invalid_clone
[18:04:56] =========== [PASSED] drm_test_check_valid_clones ===========
[18:04:56] ============= [PASSED] drm_validate_clone_mode =============
[18:04:56] ============= drm_validate_modeset (1 subtest) =============
[18:04:56] [PASSED] drm_test_check_connector_changed_modeset
[18:04:56] ============== [PASSED] drm_validate_modeset ===============
[18:04:56] ====== drm_test_bridge_get_current_state (2 subtests) ======
[18:04:56] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[18:04:56] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[18:04:56] ======== [PASSED] drm_test_bridge_get_current_state ========
[18:04:56] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[18:04:56] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[18:04:56] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[18:04:56] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[18:04:56] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[18:04:56] ============== drm_bridge_alloc (2 subtests) ===============
[18:04:56] [PASSED] drm_test_drm_bridge_alloc_basic
[18:04:56] [PASSED] drm_test_drm_bridge_alloc_get_put
[18:04:56] ================ [PASSED] drm_bridge_alloc =================
[18:04:56] ============= drm_cmdline_parser (40 subtests) =============
[18:04:56] [PASSED] drm_test_cmdline_force_d_only
[18:04:56] [PASSED] drm_test_cmdline_force_D_only_dvi
[18:04:56] [PASSED] drm_test_cmdline_force_D_only_hdmi
[18:04:56] [PASSED] drm_test_cmdline_force_D_only_not_digital
[18:04:56] [PASSED] drm_test_cmdline_force_e_only
[18:04:56] [PASSED] drm_test_cmdline_res
[18:04:57] [PASSED] drm_test_cmdline_res_vesa
[18:04:57] [PASSED] drm_test_cmdline_res_vesa_rblank
[18:04:57] [PASSED] drm_test_cmdline_res_rblank
[18:04:57] [PASSED] drm_test_cmdline_res_bpp
[18:04:57] [PASSED] drm_test_cmdline_res_refresh
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[18:04:57] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[18:04:57] [PASSED] drm_test_cmdline_res_margins_force_on
[18:04:57] [PASSED] drm_test_cmdline_res_vesa_margins
[18:04:57] [PASSED] drm_test_cmdline_name
[18:04:57] [PASSED] drm_test_cmdline_name_bpp
[18:04:57] [PASSED] drm_test_cmdline_name_option
[18:04:57] [PASSED] drm_test_cmdline_name_bpp_option
[18:04:57] [PASSED] drm_test_cmdline_rotate_0
[18:04:57] [PASSED] drm_test_cmdline_rotate_90
[18:04:57] [PASSED] drm_test_cmdline_rotate_180
[18:04:57] [PASSED] drm_test_cmdline_rotate_270
[18:04:57] [PASSED] drm_test_cmdline_hmirror
[18:04:57] [PASSED] drm_test_cmdline_vmirror
[18:04:57] [PASSED] drm_test_cmdline_margin_options
[18:04:57] [PASSED] drm_test_cmdline_multiple_options
[18:04:57] [PASSED] drm_test_cmdline_bpp_extra_and_option
[18:04:57] [PASSED] drm_test_cmdline_extra_and_option
[18:04:57] [PASSED] drm_test_cmdline_freestanding_options
[18:04:57] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[18:04:57] [PASSED] drm_test_cmdline_panel_orientation
[18:04:57] ================ drm_test_cmdline_invalid =================
[18:04:57] [PASSED] margin_only
[18:04:57] [PASSED] interlace_only
[18:04:57] [PASSED] res_missing_x
[18:04:57] [PASSED] res_missing_y
[18:04:57] [PASSED] res_bad_y
[18:04:57] [PASSED] res_missing_y_bpp
[18:04:57] [PASSED] res_bad_bpp
[18:04:57] [PASSED] res_bad_refresh
[18:04:57] [PASSED] res_bpp_refresh_force_on_off
[18:04:57] [PASSED] res_invalid_mode
[18:04:57] [PASSED] res_bpp_wrong_place_mode
[18:04:57] [PASSED] name_bpp_refresh
[18:04:57] [PASSED] name_refresh
[18:04:57] [PASSED] name_refresh_wrong_mode
[18:04:57] [PASSED] name_refresh_invalid_mode
[18:04:57] [PASSED] rotate_multiple
[18:04:57] [PASSED] rotate_invalid_val
[18:04:57] [PASSED] rotate_truncated
[18:04:57] [PASSED] invalid_option
[18:04:57] [PASSED] invalid_tv_option
[18:04:57] [PASSED] truncated_tv_option
[18:04:57] ============ [PASSED] drm_test_cmdline_invalid =============
[18:04:57] =============== drm_test_cmdline_tv_options ===============
[18:04:57] [PASSED] NTSC
[18:04:57] [PASSED] NTSC_443
[18:04:57] [PASSED] NTSC_J
[18:04:57] [PASSED] PAL
[18:04:57] [PASSED] PAL_M
[18:04:57] [PASSED] PAL_N
[18:04:57] [PASSED] SECAM
[18:04:57] [PASSED] MONO_525
[18:04:57] [PASSED] MONO_625
[18:04:57] =========== [PASSED] drm_test_cmdline_tv_options ===========
[18:04:57] =============== [PASSED] drm_cmdline_parser ================
[18:04:57] ========== drmm_connector_hdmi_init (20 subtests) ==========
[18:04:57] [PASSED] drm_test_connector_hdmi_init_valid
[18:04:57] [PASSED] drm_test_connector_hdmi_init_bpc_8
[18:04:57] [PASSED] drm_test_connector_hdmi_init_bpc_10
[18:04:57] [PASSED] drm_test_connector_hdmi_init_bpc_12
[18:04:57] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[18:04:57] [PASSED] drm_test_connector_hdmi_init_bpc_null
[18:04:57] [PASSED] drm_test_connector_hdmi_init_formats_empty
[18:04:57] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[18:04:57] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[18:04:57] [PASSED] supported_formats=0x9 yuv420_allowed=1
[18:04:57] [PASSED] supported_formats=0x9 yuv420_allowed=0
[18:04:57] [PASSED] supported_formats=0x5 yuv420_allowed=1
[18:04:57] [PASSED] supported_formats=0x5 yuv420_allowed=0
[18:04:57] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[18:04:57] [PASSED] drm_test_connector_hdmi_init_null_ddc
[18:04:57] [PASSED] drm_test_connector_hdmi_init_null_product
[18:04:57] [PASSED] drm_test_connector_hdmi_init_null_vendor
[18:04:57] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[18:04:57] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[18:04:57] [PASSED] drm_test_connector_hdmi_init_product_valid
[18:04:57] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[18:04:57] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[18:04:57] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[18:04:57] ========= drm_test_connector_hdmi_init_type_valid =========
[18:04:57] [PASSED] HDMI-A
[18:04:57] [PASSED] HDMI-B
[18:04:57] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[18:04:57] ======== drm_test_connector_hdmi_init_type_invalid ========
[18:04:57] [PASSED] Unknown
[18:04:57] [PASSED] VGA
[18:04:57] [PASSED] DVI-I
[18:04:57] [PASSED] DVI-D
[18:04:57] [PASSED] DVI-A
[18:04:57] [PASSED] Composite
[18:04:57] [PASSED] SVIDEO
[18:04:57] [PASSED] LVDS
[18:04:57] [PASSED] Component
[18:04:57] [PASSED] DIN
[18:04:57] [PASSED] DP
[18:04:57] [PASSED] TV
[18:04:57] [PASSED] eDP
[18:04:57] [PASSED] Virtual
[18:04:57] [PASSED] DSI
[18:04:57] [PASSED] DPI
[18:04:57] [PASSED] Writeback
[18:04:57] [PASSED] SPI
[18:04:57] [PASSED] USB
[18:04:57] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[18:04:57] ============ [PASSED] drmm_connector_hdmi_init =============
[18:04:57] ============= drmm_connector_init (3 subtests) =============
[18:04:57] [PASSED] drm_test_drmm_connector_init
[18:04:57] [PASSED] drm_test_drmm_connector_init_null_ddc
[18:04:57] ========= drm_test_drmm_connector_init_type_valid =========
[18:04:57] [PASSED] Unknown
[18:04:57] [PASSED] VGA
[18:04:57] [PASSED] DVI-I
[18:04:57] [PASSED] DVI-D
[18:04:57] [PASSED] DVI-A
[18:04:57] [PASSED] Composite
[18:04:57] [PASSED] SVIDEO
[18:04:57] [PASSED] LVDS
[18:04:57] [PASSED] Component
[18:04:57] [PASSED] DIN
[18:04:57] [PASSED] DP
[18:04:57] [PASSED] HDMI-A
[18:04:57] [PASSED] HDMI-B
[18:04:57] [PASSED] TV
[18:04:57] [PASSED] eDP
[18:04:57] [PASSED] Virtual
[18:04:57] [PASSED] DSI
[18:04:57] [PASSED] DPI
[18:04:57] [PASSED] Writeback
[18:04:57] [PASSED] SPI
[18:04:57] [PASSED] USB
[18:04:57] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[18:04:57] =============== [PASSED] drmm_connector_init ===============
[18:04:57] ========= drm_connector_dynamic_init (6 subtests) ==========
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_init
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_init_properties
[18:04:57] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[18:04:57] [PASSED] Unknown
[18:04:57] [PASSED] VGA
[18:04:57] [PASSED] DVI-I
[18:04:57] [PASSED] DVI-D
[18:04:57] [PASSED] DVI-A
[18:04:57] [PASSED] Composite
[18:04:57] [PASSED] SVIDEO
[18:04:57] [PASSED] LVDS
[18:04:57] [PASSED] Component
[18:04:57] [PASSED] DIN
[18:04:57] [PASSED] DP
[18:04:57] [PASSED] HDMI-A
[18:04:57] [PASSED] HDMI-B
[18:04:57] [PASSED] TV
[18:04:57] [PASSED] eDP
[18:04:57] [PASSED] Virtual
[18:04:57] [PASSED] DSI
[18:04:57] [PASSED] DPI
[18:04:57] [PASSED] Writeback
[18:04:57] [PASSED] SPI
[18:04:57] [PASSED] USB
[18:04:57] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[18:04:57] ======== drm_test_drm_connector_dynamic_init_name =========
[18:04:57] [PASSED] Unknown
[18:04:57] [PASSED] VGA
[18:04:57] [PASSED] DVI-I
[18:04:57] [PASSED] DVI-D
[18:04:57] [PASSED] DVI-A
[18:04:57] [PASSED] Composite
[18:04:57] [PASSED] SVIDEO
[18:04:57] [PASSED] LVDS
[18:04:57] [PASSED] Component
[18:04:57] [PASSED] DIN
[18:04:57] [PASSED] DP
[18:04:57] [PASSED] HDMI-A
[18:04:57] [PASSED] HDMI-B
[18:04:57] [PASSED] TV
[18:04:57] [PASSED] eDP
[18:04:57] [PASSED] Virtual
[18:04:57] [PASSED] DSI
[18:04:57] [PASSED] DPI
[18:04:57] [PASSED] Writeback
[18:04:57] [PASSED] SPI
[18:04:57] [PASSED] USB
[18:04:57] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[18:04:57] =========== [PASSED] drm_connector_dynamic_init ============
[18:04:57] ==== drm_connector_dynamic_register_early (4 subtests) =====
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[18:04:57] ====== [PASSED] drm_connector_dynamic_register_early =======
[18:04:57] ======= drm_connector_dynamic_register (7 subtests) ========
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[18:04:57] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[18:04:57] ========= [PASSED] drm_connector_dynamic_register ==========
[18:04:57] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[18:04:57] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[18:04:57] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[18:04:57] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[18:04:57] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[18:04:57] ========== drm_test_get_tv_mode_from_name_valid ===========
[18:04:57] [PASSED] NTSC
[18:04:57] [PASSED] NTSC-443
[18:04:57] [PASSED] NTSC-J
[18:04:57] [PASSED] PAL
[18:04:57] [PASSED] PAL-M
[18:04:57] [PASSED] PAL-N
[18:04:57] [PASSED] SECAM
[18:04:57] [PASSED] Mono
[18:04:57] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[18:04:57] [PASSED] drm_test_get_tv_mode_from_name_truncated
[18:04:57] ============ [PASSED] drm_get_tv_mode_from_name ============
[18:04:57] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[18:04:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[18:04:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[18:04:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[18:04:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[18:04:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[18:04:57] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[18:04:57] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[18:04:57] [PASSED] VIC 96
[18:04:57] [PASSED] VIC 97
[18:04:57] [PASSED] VIC 101
[18:04:57] [PASSED] VIC 102
[18:04:57] [PASSED] VIC 106
[18:04:57] [PASSED] VIC 107
[18:04:57] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[18:04:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[18:04:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[18:04:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[18:04:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[18:04:57] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[18:04:57] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[18:04:57] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[18:04:57] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[18:04:57] [PASSED] Automatic
[18:04:57] [PASSED] Full
[18:04:57] [PASSED] Limited 16:235
[18:04:57] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[18:04:57] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[18:04:57] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[18:04:57] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[18:04:57] === drm_test_drm_hdmi_connector_get_output_format_name ====
[18:04:57] [PASSED] RGB
[18:04:57] [PASSED] YUV 4:2:0
[18:04:57] [PASSED] YUV 4:2:2
[18:04:57] [PASSED] YUV 4:4:4
[18:04:57] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[18:04:57] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[18:04:57] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[18:04:57] ============= drm_damage_helper (21 subtests) ==============
[18:04:57] [PASSED] drm_test_damage_iter_no_damage
[18:04:57] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[18:04:57] [PASSED] drm_test_damage_iter_no_damage_src_moved
[18:04:57] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[18:04:57] [PASSED] drm_test_damage_iter_no_damage_not_visible
[18:04:57] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[18:04:57] [PASSED] drm_test_damage_iter_no_damage_no_fb
[18:04:57] [PASSED] drm_test_damage_iter_simple_damage
[18:04:57] [PASSED] drm_test_damage_iter_single_damage
[18:04:57] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[18:04:57] [PASSED] drm_test_damage_iter_single_damage_outside_src
[18:04:57] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[18:04:57] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[18:04:57] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[18:04:57] [PASSED] drm_test_damage_iter_single_damage_src_moved
[18:04:57] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[18:04:57] [PASSED] drm_test_damage_iter_damage
[18:04:57] [PASSED] drm_test_damage_iter_damage_one_intersect
[18:04:57] [PASSED] drm_test_damage_iter_damage_one_outside
[18:04:57] [PASSED] drm_test_damage_iter_damage_src_moved
[18:04:57] [PASSED] drm_test_damage_iter_damage_not_visible
[18:04:57] ================ [PASSED] drm_damage_helper ================
[18:04:57] ============== drm_dp_mst_helper (3 subtests) ==============
[18:04:57] ============== drm_test_dp_mst_calc_pbn_mode ==============
[18:04:57] [PASSED] Clock 154000 BPP 30 DSC disabled
[18:04:57] [PASSED] Clock 234000 BPP 30 DSC disabled
[18:04:57] [PASSED] Clock 297000 BPP 24 DSC disabled
[18:04:57] [PASSED] Clock 332880 BPP 24 DSC enabled
[18:04:57] [PASSED] Clock 324540 BPP 24 DSC enabled
[18:04:57] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[18:04:57] ============== drm_test_dp_mst_calc_pbn_div ===============
[18:04:57] [PASSED] Link rate 2000000 lane count 4
[18:04:57] [PASSED] Link rate 2000000 lane count 2
[18:04:57] [PASSED] Link rate 2000000 lane count 1
[18:04:57] [PASSED] Link rate 1350000 lane count 4
[18:04:57] [PASSED] Link rate 1350000 lane count 2
[18:04:57] [PASSED] Link rate 1350000 lane count 1
[18:04:57] [PASSED] Link rate 1000000 lane count 4
[18:04:57] [PASSED] Link rate 1000000 lane count 2
[18:04:57] [PASSED] Link rate 1000000 lane count 1
[18:04:57] [PASSED] Link rate 810000 lane count 4
[18:04:57] [PASSED] Link rate 810000 lane count 2
[18:04:57] [PASSED] Link rate 810000 lane count 1
[18:04:57] [PASSED] Link rate 540000 lane count 4
[18:04:57] [PASSED] Link rate 540000 lane count 2
[18:04:57] [PASSED] Link rate 540000 lane count 1
[18:04:57] [PASSED] Link rate 270000 lane count 4
[18:04:57] [PASSED] Link rate 270000 lane count 2
[18:04:57] [PASSED] Link rate 270000 lane count 1
[18:04:57] [PASSED] Link rate 162000 lane count 4
[18:04:57] [PASSED] Link rate 162000 lane count 2
[18:04:57] [PASSED] Link rate 162000 lane count 1
[18:04:57] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[18:04:57] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[18:04:57] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[18:04:57] [PASSED] DP_POWER_UP_PHY with port number
[18:04:57] [PASSED] DP_POWER_DOWN_PHY with port number
[18:04:57] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[18:04:57] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[18:04:57] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[18:04:57] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[18:04:57] [PASSED] DP_QUERY_PAYLOAD with port number
[18:04:57] [PASSED] DP_QUERY_PAYLOAD with VCPI
[18:04:57] [PASSED] DP_REMOTE_DPCD_READ with port number
[18:04:57] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[18:04:57] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[18:04:57] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[18:04:57] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[18:04:57] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[18:04:57] [PASSED] DP_REMOTE_I2C_READ with port number
[18:04:57] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[18:04:57] [PASSED] DP_REMOTE_I2C_READ with transactions array
[18:04:57] [PASSED] DP_REMOTE_I2C_WRITE with port number
[18:04:57] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[18:04:57] [PASSED] DP_REMOTE_I2C_WRITE with data array
[18:04:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[18:04:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[18:04:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[18:04:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[18:04:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[18:04:57] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[18:04:57] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[18:04:57] ================ [PASSED] drm_dp_mst_helper ================
[18:04:57] ================== drm_exec (7 subtests) ===================
[18:04:57] [PASSED] sanitycheck
[18:04:57] [PASSED] test_lock
[18:04:57] [PASSED] test_lock_unlock
[18:04:57] [PASSED] test_duplicates
[18:04:57] [PASSED] test_prepare
[18:04:57] [PASSED] test_prepare_array
[18:04:57] [PASSED] test_multiple_loops
[18:04:57] ==================== [PASSED] drm_exec =====================
[18:04:57] =========== drm_format_helper_test (17 subtests) ===========
[18:04:57] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[18:04:57] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[18:04:57] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[18:04:57] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[18:04:57] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[18:04:57] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[18:04:57] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[18:04:57] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[18:04:57] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[18:04:57] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[18:04:57] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[18:04:57] ============== drm_test_fb_xrgb8888_to_mono ===============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[18:04:57] ==================== drm_test_fb_swab =====================
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ================ [PASSED] drm_test_fb_swab =================
[18:04:57] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[18:04:57] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[18:04:57] [PASSED] single_pixel_source_buffer
[18:04:57] [PASSED] single_pixel_clip_rectangle
[18:04:57] [PASSED] well_known_colors
[18:04:57] [PASSED] destination_pitch
[18:04:57] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[18:04:57] ================= drm_test_fb_clip_offset =================
[18:04:57] [PASSED] pass through
[18:04:57] [PASSED] horizontal offset
[18:04:57] [PASSED] vertical offset
[18:04:57] [PASSED] horizontal and vertical offset
[18:04:57] [PASSED] horizontal offset (custom pitch)
[18:04:57] [PASSED] vertical offset (custom pitch)
[18:04:57] [PASSED] horizontal and vertical offset (custom pitch)
[18:04:57] ============= [PASSED] drm_test_fb_clip_offset =============
[18:04:57] =================== drm_test_fb_memcpy ====================
[18:04:57] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[18:04:57] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[18:04:57] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[18:04:57] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[18:04:57] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[18:04:57] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[18:04:57] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[18:04:57] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[18:04:57] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[18:04:57] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[18:04:57] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[18:04:57] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[18:04:57] =============== [PASSED] drm_test_fb_memcpy ================
[18:04:57] ============= [PASSED] drm_format_helper_test ==============
[18:04:57] ================= drm_format (18 subtests) =================
[18:04:57] [PASSED] drm_test_format_block_width_invalid
[18:04:57] [PASSED] drm_test_format_block_width_one_plane
[18:04:57] [PASSED] drm_test_format_block_width_two_plane
[18:04:57] [PASSED] drm_test_format_block_width_three_plane
[18:04:57] [PASSED] drm_test_format_block_width_tiled
[18:04:57] [PASSED] drm_test_format_block_height_invalid
[18:04:57] [PASSED] drm_test_format_block_height_one_plane
[18:04:57] [PASSED] drm_test_format_block_height_two_plane
[18:04:57] [PASSED] drm_test_format_block_height_three_plane
[18:04:57] [PASSED] drm_test_format_block_height_tiled
[18:04:57] [PASSED] drm_test_format_min_pitch_invalid
[18:04:57] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[18:04:57] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[18:04:57] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[18:04:57] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[18:04:57] [PASSED] drm_test_format_min_pitch_two_plane
[18:04:57] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[18:04:57] [PASSED] drm_test_format_min_pitch_tiled
[18:04:57] =================== [PASSED] drm_format ====================
[18:04:57] ============== drm_framebuffer (10 subtests) ===============
[18:04:57] ========== drm_test_framebuffer_check_src_coords ==========
[18:04:57] [PASSED] Success: source fits into fb
[18:04:57] [PASSED] Fail: overflowing fb with x-axis coordinate
[18:04:57] [PASSED] Fail: overflowing fb with y-axis coordinate
[18:04:57] [PASSED] Fail: overflowing fb with source width
[18:04:57] [PASSED] Fail: overflowing fb with source height
[18:04:57] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[18:04:57] [PASSED] drm_test_framebuffer_cleanup
[18:04:57] =============== drm_test_framebuffer_create ===============
[18:04:57] [PASSED] ABGR8888 normal sizes
[18:04:57] [PASSED] ABGR8888 max sizes
[18:04:57] [PASSED] ABGR8888 pitch greater than min required
[18:04:57] [PASSED] ABGR8888 pitch less than min required
[18:04:57] [PASSED] ABGR8888 Invalid width
[18:04:57] [PASSED] ABGR8888 Invalid buffer handle
[18:04:57] [PASSED] No pixel format
[18:04:57] [PASSED] ABGR8888 Width 0
[18:04:57] [PASSED] ABGR8888 Height 0
[18:04:57] [PASSED] ABGR8888 Out of bound height * pitch combination
[18:04:57] [PASSED] ABGR8888 Large buffer offset
[18:04:57] [PASSED] ABGR8888 Buffer offset for inexistent plane
[18:04:57] [PASSED] ABGR8888 Invalid flag
[18:04:57] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[18:04:57] [PASSED] ABGR8888 Valid buffer modifier
[18:04:57] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[18:04:57] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[18:04:57] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[18:04:57] [PASSED] NV12 Normal sizes
[18:04:57] [PASSED] NV12 Max sizes
[18:04:57] [PASSED] NV12 Invalid pitch
[18:04:57] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[18:04:57] [PASSED] NV12 different modifier per-plane
[18:04:57] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[18:04:57] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[18:04:57] [PASSED] NV12 Modifier for inexistent plane
[18:04:57] [PASSED] NV12 Handle for inexistent plane
[18:04:57] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[18:04:57] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[18:04:57] [PASSED] YVU420 Normal sizes
[18:04:57] [PASSED] YVU420 Max sizes
[18:04:57] [PASSED] YVU420 Invalid pitch
[18:04:57] [PASSED] YVU420 Different pitches
[18:04:57] [PASSED] YVU420 Different buffer offsets/pitches
[18:04:57] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[18:04:57] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[18:04:57] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[18:04:57] [PASSED] YVU420 Valid modifier
[18:04:57] [PASSED] YVU420 Different modifiers per plane
[18:04:57] [PASSED] YVU420 Modifier for inexistent plane
[18:04:57] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[18:04:57] [PASSED] X0L2 Normal sizes
[18:04:57] [PASSED] X0L2 Max sizes
[18:04:57] [PASSED] X0L2 Invalid pitch
[18:04:57] [PASSED] X0L2 Pitch greater than minimum required
[18:04:57] [PASSED] X0L2 Handle for inexistent plane
[18:04:57] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[18:04:57] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[18:04:57] [PASSED] X0L2 Valid modifier
[18:04:57] [PASSED] X0L2 Modifier for inexistent plane
[18:04:57] =========== [PASSED] drm_test_framebuffer_create ===========
[18:04:57] [PASSED] drm_test_framebuffer_free
[18:04:57] [PASSED] drm_test_framebuffer_init
[18:04:57] [PASSED] drm_test_framebuffer_init_bad_format
[18:04:57] [PASSED] drm_test_framebuffer_init_dev_mismatch
[18:04:57] [PASSED] drm_test_framebuffer_lookup
[18:04:57] [PASSED] drm_test_framebuffer_lookup_inexistent
[18:04:57] [PASSED] drm_test_framebuffer_modifiers_not_supported
[18:04:57] ================= [PASSED] drm_framebuffer =================
[18:04:57] ================ drm_gem_shmem (8 subtests) ================
[18:04:57] [PASSED] drm_gem_shmem_test_obj_create
[18:04:57] [PASSED] drm_gem_shmem_test_obj_create_private
[18:04:57] [PASSED] drm_gem_shmem_test_pin_pages
[18:04:57] [PASSED] drm_gem_shmem_test_vmap
[18:04:57] [PASSED] drm_gem_shmem_test_get_sg_table
[18:04:57] [PASSED] drm_gem_shmem_test_get_pages_sgt
[18:04:57] [PASSED] drm_gem_shmem_test_madvise
[18:04:57] [PASSED] drm_gem_shmem_test_purge
[18:04:57] ================== [PASSED] drm_gem_shmem ==================
[18:04:57] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[18:04:57] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[18:04:57] [PASSED] Automatic
[18:04:57] [PASSED] Full
[18:04:57] [PASSED] Limited 16:235
[18:04:57] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[18:04:57] [PASSED] drm_test_check_disable_connector
[18:04:57] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[18:04:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[18:04:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[18:04:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[18:04:57] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[18:04:57] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[18:04:57] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[18:04:57] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[18:04:57] [PASSED] drm_test_check_output_bpc_dvi
[18:04:57] [PASSED] drm_test_check_output_bpc_format_vic_1
[18:04:57] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[18:04:57] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[18:04:57] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[18:04:57] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[18:04:57] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[18:04:57] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[18:04:57] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[18:04:57] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[18:04:57] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[18:04:57] [PASSED] drm_test_check_broadcast_rgb_value
[18:04:57] [PASSED] drm_test_check_bpc_8_value
[18:04:57] [PASSED] drm_test_check_bpc_10_value
[18:04:57] [PASSED] drm_test_check_bpc_12_value
[18:04:57] [PASSED] drm_test_check_format_value
[18:04:57] [PASSED] drm_test_check_tmds_char_value
[18:04:57] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[18:04:57] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[18:04:57] [PASSED] drm_test_check_mode_valid
[18:04:57] [PASSED] drm_test_check_mode_valid_reject
[18:04:57] [PASSED] drm_test_check_mode_valid_reject_rate
[18:04:57] [PASSED] drm_test_check_mode_valid_reject_max_clock
[18:04:57] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[18:04:57] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[18:04:57] [PASSED] drm_test_check_infoframes
[18:04:57] [PASSED] drm_test_check_reject_avi_infoframe
[18:04:57] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[18:04:57] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[18:04:57] [PASSED] drm_test_check_reject_audio_infoframe
[18:04:57] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[18:04:57] ================= drm_managed (2 subtests) =================
[18:04:57] [PASSED] drm_test_managed_release_action
[18:04:57] [PASSED] drm_test_managed_run_action
[18:04:57] =================== [PASSED] drm_managed ===================
[18:04:57] =================== drm_mm (6 subtests) ====================
[18:04:57] [PASSED] drm_test_mm_init
[18:04:57] [PASSED] drm_test_mm_debug
[18:04:57] [PASSED] drm_test_mm_align32
[18:04:57] [PASSED] drm_test_mm_align64
[18:04:57] [PASSED] drm_test_mm_lowest
[18:04:57] [PASSED] drm_test_mm_highest
[18:04:57] ===================== [PASSED] drm_mm ======================
[18:04:57] ============= drm_modes_analog_tv (5 subtests) =============
[18:04:57] [PASSED] drm_test_modes_analog_tv_mono_576i
[18:04:57] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[18:04:57] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[18:04:57] [PASSED] drm_test_modes_analog_tv_pal_576i
[18:04:57] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[18:04:57] =============== [PASSED] drm_modes_analog_tv ===============
[18:04:57] ============== drm_plane_helper (2 subtests) ===============
[18:04:57] =============== drm_test_check_plane_state ================
[18:04:57] [PASSED] clipping_simple
[18:04:57] [PASSED] clipping_rotate_reflect
[18:04:57] [PASSED] positioning_simple
[18:04:57] [PASSED] upscaling
[18:04:57] [PASSED] downscaling
[18:04:57] [PASSED] rounding1
[18:04:57] [PASSED] rounding2
[18:04:57] [PASSED] rounding3
[18:04:57] [PASSED] rounding4
[18:04:57] =========== [PASSED] drm_test_check_plane_state ============
[18:04:57] =========== drm_test_check_invalid_plane_state ============
[18:04:57] [PASSED] positioning_invalid
[18:04:57] [PASSED] upscaling_invalid
[18:04:57] [PASSED] downscaling_invalid
[18:04:57] ======= [PASSED] drm_test_check_invalid_plane_state ========
[18:04:57] ================ [PASSED] drm_plane_helper =================
[18:04:57] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[18:04:57] ====== drm_test_connector_helper_tv_get_modes_check =======
[18:04:57] [PASSED] None
[18:04:57] [PASSED] PAL
[18:04:57] [PASSED] NTSC
[18:04:57] [PASSED] Both, NTSC Default
[18:04:57] [PASSED] Both, PAL Default
[18:04:57] [PASSED] Both, NTSC Default, with PAL on command-line
[18:04:57] [PASSED] Both, PAL Default, with NTSC on command-line
[18:04:57] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[18:04:57] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[18:04:57] ================== drm_rect (9 subtests) ===================
[18:04:57] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[18:04:57] [PASSED] drm_test_rect_clip_scaled_not_clipped
[18:04:57] [PASSED] drm_test_rect_clip_scaled_clipped
[18:04:57] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[18:04:57] ================= drm_test_rect_intersect =================
[18:04:57] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[18:04:57] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[18:04:57] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[18:04:57] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[18:04:57] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[18:04:57] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[18:04:57] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[18:04:57] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[18:04:57] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[18:04:57] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[18:04:57] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[18:04:57] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[18:04:57] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[18:04:57] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[18:04:57] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[18:04:57] ============= [PASSED] drm_test_rect_intersect =============
[18:04:57] ================ drm_test_rect_calc_hscale ================
[18:04:57] [PASSED] normal use
[18:04:57] [PASSED] out of max range
[18:04:57] [PASSED] out of min range
[18:04:57] [PASSED] zero dst
[18:04:57] [PASSED] negative src
[18:04:57] [PASSED] negative dst
[18:04:57] ============ [PASSED] drm_test_rect_calc_hscale ============
[18:04:57] ================ drm_test_rect_calc_vscale ================
[18:04:57] [PASSED] normal use
[18:04:57] [PASSED] out of max range
[18:04:57] [PASSED] out of min range
[18:04:57] [PASSED] zero dst
[18:04:57] [PASSED] negative src
[18:04:57] [PASSED] negative dst
[18:04:57] ============ [PASSED] drm_test_rect_calc_vscale ============
[18:04:57] ================== drm_test_rect_rotate ===================
[18:04:57] [PASSED] reflect-x
[18:04:57] [PASSED] reflect-y
[18:04:57] [PASSED] rotate-0
[18:04:57] [PASSED] rotate-90
[18:04:57] [PASSED] rotate-180
[18:04:57] [PASSED] rotate-270
[18:04:57] ============== [PASSED] drm_test_rect_rotate ===============
[18:04:57] ================ drm_test_rect_rotate_inv =================
[18:04:57] [PASSED] reflect-x
[18:04:57] [PASSED] reflect-y
[18:04:57] [PASSED] rotate-0
[18:04:57] [PASSED] rotate-90
[18:04:57] [PASSED] rotate-180
[18:04:57] [PASSED] rotate-270
[18:04:57] ============ [PASSED] drm_test_rect_rotate_inv =============
[18:04:57] ==================== [PASSED] drm_rect =====================
[18:04:57] ============ drm_sysfb_modeset_test (1 subtest) ============
[18:04:57] ============ drm_test_sysfb_build_fourcc_list =============
[18:04:57] [PASSED] no native formats
[18:04:57] [PASSED] XRGB8888 as native format
[18:04:57] [PASSED] remove duplicates
[18:04:57] [PASSED] convert alpha formats
[18:04:57] [PASSED] random formats
[18:04:57] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[18:04:57] ============= [PASSED] drm_sysfb_modeset_test ==============
[18:04:57] ================== drm_fixp (2 subtests) ===================
[18:04:57] [PASSED] drm_test_int2fixp
[18:04:57] [PASSED] drm_test_sm2fixp
[18:04:57] ==================== [PASSED] drm_fixp =====================
[18:04:57] ============================================================
[18:04:57] Testing complete. Ran 621 tests: passed: 621
[18:04:57] Elapsed time: 25.762s total, 1.765s configuring, 23.875s building, 0.122s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[18:04:57] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[18:04:58] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[18:05:08] Starting KUnit Kernel (1/1)...
[18:05:08] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[18:05:08] ================= ttm_device (5 subtests) ==================
[18:05:08] [PASSED] ttm_device_init_basic
[18:05:08] [PASSED] ttm_device_init_multiple
[18:05:08] [PASSED] ttm_device_fini_basic
[18:05:08] [PASSED] ttm_device_init_no_vma_man
[18:05:08] ================== ttm_device_init_pools ==================
[18:05:08] [PASSED] No DMA allocations, no DMA32 required
[18:05:08] [PASSED] DMA allocations, DMA32 required
[18:05:08] [PASSED] No DMA allocations, DMA32 required
[18:05:08] [PASSED] DMA allocations, no DMA32 required
[18:05:08] ============== [PASSED] ttm_device_init_pools ==============
[18:05:08] =================== [PASSED] ttm_device ====================
[18:05:08] ================== ttm_pool (8 subtests) ===================
[18:05:08] ================== ttm_pool_alloc_basic ===================
[18:05:08] [PASSED] One page
[18:05:08] [PASSED] More than one page
[18:05:08] [PASSED] Above the allocation limit
[18:05:08] [PASSED] One page, with coherent DMA mappings enabled
[18:05:08] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[18:05:08] ============== [PASSED] ttm_pool_alloc_basic ===============
[18:05:08] ============== ttm_pool_alloc_basic_dma_addr ==============
[18:05:08] [PASSED] One page
[18:05:08] [PASSED] More than one page
[18:05:08] [PASSED] Above the allocation limit
[18:05:08] [PASSED] One page, with coherent DMA mappings enabled
[18:05:08] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[18:05:08] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[18:05:08] [PASSED] ttm_pool_alloc_order_caching_match
[18:05:08] [PASSED] ttm_pool_alloc_caching_mismatch
[18:05:08] [PASSED] ttm_pool_alloc_order_mismatch
[18:05:08] [PASSED] ttm_pool_free_dma_alloc
[18:05:08] [PASSED] ttm_pool_free_no_dma_alloc
[18:05:08] [PASSED] ttm_pool_fini_basic
[18:05:08] ==================== [PASSED] ttm_pool =====================
[18:05:08] ================ ttm_resource (8 subtests) =================
[18:05:08] ================= ttm_resource_init_basic =================
[18:05:08] [PASSED] Init resource in TTM_PL_SYSTEM
[18:05:08] [PASSED] Init resource in TTM_PL_VRAM
[18:05:08] [PASSED] Init resource in a private placement
[18:05:08] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[18:05:08] ============= [PASSED] ttm_resource_init_basic =============
[18:05:08] [PASSED] ttm_resource_init_pinned
[18:05:08] [PASSED] ttm_resource_fini_basic
[18:05:08] [PASSED] ttm_resource_manager_init_basic
[18:05:08] [PASSED] ttm_resource_manager_usage_basic
[18:05:08] [PASSED] ttm_resource_manager_set_used_basic
[18:05:08] [PASSED] ttm_sys_man_alloc_basic
[18:05:08] [PASSED] ttm_sys_man_free_basic
[18:05:08] ================== [PASSED] ttm_resource ===================
[18:05:08] =================== ttm_tt (15 subtests) ===================
[18:05:08] ==================== ttm_tt_init_basic ====================
[18:05:08] [PASSED] Page-aligned size
[18:05:08] [PASSED] Extra pages requested
[18:05:08] ================ [PASSED] ttm_tt_init_basic ================
[18:05:08] [PASSED] ttm_tt_init_misaligned
[18:05:08] [PASSED] ttm_tt_fini_basic
[18:05:08] [PASSED] ttm_tt_fini_sg
[18:05:08] [PASSED] ttm_tt_fini_shmem
[18:05:08] [PASSED] ttm_tt_create_basic
[18:05:08] [PASSED] ttm_tt_create_invalid_bo_type
[18:05:08] [PASSED] ttm_tt_create_ttm_exists
[18:05:08] [PASSED] ttm_tt_create_failed
[18:05:08] [PASSED] ttm_tt_destroy_basic
[18:05:08] [PASSED] ttm_tt_populate_null_ttm
[18:05:08] [PASSED] ttm_tt_populate_populated_ttm
[18:05:08] [PASSED] ttm_tt_unpopulate_basic
[18:05:08] [PASSED] ttm_tt_unpopulate_empty_ttm
[18:05:08] [PASSED] ttm_tt_swapin_basic
[18:05:08] ===================== [PASSED] ttm_tt ======================
[18:05:08] =================== ttm_bo (14 subtests) ===================
[18:05:08] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[18:05:08] [PASSED] Cannot be interrupted and sleeps
[18:05:08] [PASSED] Cannot be interrupted, locks straight away
[18:05:08] [PASSED] Can be interrupted, sleeps
[18:05:08] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[18:05:08] [PASSED] ttm_bo_reserve_locked_no_sleep
[18:05:08] [PASSED] ttm_bo_reserve_no_wait_ticket
[18:05:08] [PASSED] ttm_bo_reserve_double_resv
[18:05:08] [PASSED] ttm_bo_reserve_interrupted
[18:05:08] [PASSED] ttm_bo_reserve_deadlock
[18:05:08] [PASSED] ttm_bo_unreserve_basic
[18:05:08] [PASSED] ttm_bo_unreserve_pinned
[18:05:08] [PASSED] ttm_bo_unreserve_bulk
[18:05:08] [PASSED] ttm_bo_fini_basic
[18:05:08] [PASSED] ttm_bo_fini_shared_resv
[18:05:08] [PASSED] ttm_bo_pin_basic
[18:05:08] [PASSED] ttm_bo_pin_unpin_resource
[18:05:08] [PASSED] ttm_bo_multiple_pin_one_unpin
[18:05:08] ===================== [PASSED] ttm_bo ======================
[18:05:08] ============== ttm_bo_validate (22 subtests) ===============
[18:05:08] ============== ttm_bo_init_reserved_sys_man ===============
[18:05:08] [PASSED] Buffer object for userspace
[18:05:08] [PASSED] Kernel buffer object
[18:05:08] [PASSED] Shared buffer object
[18:05:08] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[18:05:08] ============== ttm_bo_init_reserved_mock_man ==============
[18:05:08] [PASSED] Buffer object for userspace
[18:05:08] [PASSED] Kernel buffer object
[18:05:08] [PASSED] Shared buffer object
[18:05:08] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[18:05:08] [PASSED] ttm_bo_init_reserved_resv
[18:05:08] ================== ttm_bo_validate_basic ==================
[18:05:08] [PASSED] Buffer object for userspace
[18:05:08] [PASSED] Kernel buffer object
[18:05:08] [PASSED] Shared buffer object
[18:05:08] ============== [PASSED] ttm_bo_validate_basic ==============
[18:05:08] [PASSED] ttm_bo_validate_invalid_placement
[18:05:08] ============= ttm_bo_validate_same_placement ==============
[18:05:08] [PASSED] System manager
[18:05:08] [PASSED] VRAM manager
[18:05:08] ========= [PASSED] ttm_bo_validate_same_placement ==========
[18:05:08] [PASSED] ttm_bo_validate_failed_alloc
[18:05:08] [PASSED] ttm_bo_validate_pinned
[18:05:08] [PASSED] ttm_bo_validate_busy_placement
[18:05:08] ================ ttm_bo_validate_multihop =================
[18:05:08] [PASSED] Buffer object for userspace
[18:05:08] [PASSED] Kernel buffer object
[18:05:08] [PASSED] Shared buffer object
[18:05:08] ============ [PASSED] ttm_bo_validate_multihop =============
[18:05:08] ========== ttm_bo_validate_no_placement_signaled ==========
[18:05:08] [PASSED] Buffer object in system domain, no page vector
[18:05:08] [PASSED] Buffer object in system domain with an existing page vector
[18:05:08] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[18:05:08] ======== ttm_bo_validate_no_placement_not_signaled ========
[18:05:08] [PASSED] Buffer object for userspace
[18:05:08] [PASSED] Kernel buffer object
[18:05:08] [PASSED] Shared buffer object
[18:05:08] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[18:05:08] [PASSED] ttm_bo_validate_move_fence_signaled
[18:05:08] ========= ttm_bo_validate_move_fence_not_signaled =========
[18:05:08] [PASSED] Waits for GPU
[18:05:08] [PASSED] Tries to lock straight away
[18:05:08] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[18:05:08] [PASSED] ttm_bo_validate_swapout
[18:05:08] [PASSED] ttm_bo_validate_happy_evict
[18:05:08] [PASSED] ttm_bo_validate_all_pinned_evict
[18:05:08] [PASSED] ttm_bo_validate_allowed_only_evict
[18:05:08] [PASSED] ttm_bo_validate_deleted_evict
[18:05:08] [PASSED] ttm_bo_validate_busy_domain_evict
[18:05:08] [PASSED] ttm_bo_validate_evict_gutting
[18:05:08] [PASSED] ttm_bo_validate_recrusive_evict
[18:05:08] ================= [PASSED] ttm_bo_validate =================
[18:05:08] ============================================================
[18:05:08] Testing complete. Ran 102 tests: passed: 102
[18:05:08] Elapsed time: 11.435s total, 1.753s configuring, 9.468s building, 0.183s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 25+ messages in thread
* ✓ Xe.CI.BAT: success for drm/atomic: Rework initial state allocation (rev3)
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (21 preceding siblings ...)
2026-05-12 18:05 ` ✓ CI.KUnit: success " Patchwork
@ 2026-05-12 19:35 ` Patchwork
2026-05-13 9:41 ` ✗ Xe.CI.FULL: failure " Patchwork
23 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-05-12 19:35 UTC (permalink / raw)
To: Maxime Ripard; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1102 bytes --]
== Series Details ==
Series: drm/atomic: Rework initial state allocation (rev3)
URL : https://patchwork.freedesktop.org/series/163606/
State : success
== Summary ==
CI Bug Log - changes from xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472_BAT -> xe-pw-163606v3_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_8905 -> IGT_8906
* Linux: xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472 -> xe-pw-163606v3
IGT_8905: b04ca530eb2959c8edbf9d90f6bb98a9fdee2296 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8906: 6c27cc975b64ea72a6f46aa53cb3201fb73ce7cd @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472: 82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472
xe-pw-163606v3: 163606v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/index.html
[-- Attachment #2: Type: text/html, Size: 1664 bytes --]
^ permalink raw reply [flat|nested] 25+ messages in thread
* ✗ Xe.CI.FULL: failure for drm/atomic: Rework initial state allocation (rev3)
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
` (22 preceding siblings ...)
2026-05-12 19:35 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-05-13 9:41 ` Patchwork
23 siblings, 0 replies; 25+ messages in thread
From: Patchwork @ 2026-05-13 9:41 UTC (permalink / raw)
To: Maxime Ripard; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 36801 bytes --]
== Series Details ==
Series: drm/atomic: Rework initial state allocation (rev3)
URL : https://patchwork.freedesktop.org/series/163606/
State : failure
== Summary ==
CI Bug Log - changes from xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472_FULL -> xe-pw-163606v3_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-163606v3_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-163606v3_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 (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-163606v3_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_sriov_vram@vf-access-provisioned:
- shard-bmg: [PASS][1] -> [FAIL][2] +2 other tests fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-9/igt@xe_sriov_vram@vf-access-provisioned.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@xe_sriov_vram@vf-access-provisioned.html
#### Warnings ####
* igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-imm:
- shard-lnl: [SKIP][3] ([Intel XE#7136]) -> [ABORT][4]
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-lnl-8/igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-imm.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-8/igt@xe_exec_fault_mode@once-multi-queue-userptr-invalidate-imm.html
Known issues
------------
Here are the changes found in xe-pw-163606v3_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-bmg: [PASS][5] -> [FAIL][6] ([Intel XE#3718] / [Intel XE#6078])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-d-dp-2:
- shard-bmg: [PASS][7] -> [FAIL][8] ([Intel XE#6078])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-3/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-d-dp-2.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-d-dp-2.html
* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-bmg: [PASS][9] -> [FAIL][10] ([Intel XE#7571])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-10/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
* igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions:
- shard-lnl: NOTRUN -> [SKIP][11] ([Intel XE#323] / [Intel XE#6035])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-7/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2286] / [Intel XE#6035])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-lnl: [PASS][13] -> [FAIL][14] ([Intel XE#301]) +1 other test fail
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#4141])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
- shard-lnl: NOTRUN -> [SKIP][16] ([Intel XE#656] / [Intel XE#7905])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-2/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-fullscreen:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#7865])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-1/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-fullscreen.html
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2313])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-9/igt@kms_frontbuffer_tracking@psrhdr-1p-primscrn-spr-indfb-fullscreen.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [PASS][19] -> [SKIP][20] ([Intel XE#1503])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-1/igt@kms_hdr@invalid-hdr.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@kms_hdr@invalid-hdr.html
* igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010:
- shard-bmg: [PASS][21] -> [SKIP][22] ([Intel XE#7922]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-1/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@kms_hdr@invalid-hdr@pipe-a-hdmi-a-3-xrgb2101010.html
* igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [PASS][23] -> [SKIP][24] ([Intel XE#7915]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-5/igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-1/igt@kms_hdr@invalid-metadata-sizes@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@kms_hdr@static-toggle:
- shard-lnl: NOTRUN -> [SKIP][25] ([Intel XE#1503] / [Intel XE#7915])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-2/igt@kms_hdr@static-toggle.html
* igt@kms_hdr@static-toggle@pipe-a-edp-1-xrgb2101010:
- shard-lnl: NOTRUN -> [SKIP][26] ([Intel XE#7915]) +1 other test skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-2/igt@kms_hdr@static-toggle@pipe-a-edp-1-xrgb2101010.html
* igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#7915]) +1 other test skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-7/igt@kms_hdr@static-toggle@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier:
- shard-lnl: NOTRUN -> [SKIP][28] ([Intel XE#7283])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-1/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier.html
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#7283])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-9/igt@kms_plane@pixel-format-4-tiled-mtl-rc-ccs-modifier.html
* igt@kms_pm_dc@dc6-dpms:
- shard-lnl: [PASS][30] -> [FAIL][31] ([Intel XE#7340])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-lnl-7/igt@kms_pm_dc@dc6-dpms.html
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-1/igt@kms_pm_dc@dc6-dpms.html
* igt@kms_psr@fbc-psr-sprite-plane-move:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2234] / [Intel XE#2850])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-8/igt@kms_psr@fbc-psr-sprite-plane-move.html
* igt@xe_exec_balancer@once-cm-parallel-userptr:
- shard-lnl: NOTRUN -> [SKIP][33] ([Intel XE#7482]) +1 other test skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-7/igt@xe_exec_balancer@once-cm-parallel-userptr.html
* igt@xe_exec_fault_mode@twice-multi-queue-imm:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#7136])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-4/igt@xe_exec_fault_mode@twice-multi-queue-imm.html
- shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#7136])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-3/igt@xe_exec_fault_mode@twice-multi-queue-imm.html
* igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#7138])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-3/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic.html
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#7138])
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-1/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-basic.html
* igt@xe_pat@pt-caching-random-offsets:
- shard-bmg: [PASS][38] -> [ABORT][39] ([Intel XE#7893])
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-3/igt@xe_pat@pt-caching-random-offsets.html
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-10/igt@xe_pat@pt-caching-random-offsets.html
* igt@xe_pxp@pxp-src-to-pxp-dest-rendercopy:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#4733] / [Intel XE#7417])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@xe_pxp@pxp-src-to-pxp-dest-rendercopy.html
* igt@xe_sriov_flr@flr-vf1-clear:
- shard-bmg: [PASS][41] -> [FAIL][42] ([Intel XE#6569]) +1 other test fail
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-5/igt@xe_sriov_flr@flr-vf1-clear.html
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-3/igt@xe_sriov_flr@flr-vf1-clear.html
#### Possible fixes ####
* igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-dp-2:
- shard-bmg: [FAIL][43] ([Intel XE#6841]) -> [PASS][44] +2 other tests pass
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-dp-2.html
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-9/igt@kms_cursor_edge_walk@256x256-top-edge@pipe-a-dp-2.html
* igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010:
- shard-bmg: [SKIP][45] ([Intel XE#7915]) -> [PASS][46] +3 other tests pass
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-1/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010.html
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010.html
* igt@kms_pipe_crc_basic@suspend-read-crc:
- shard-bmg: [DMESG-WARN][47] -> [PASS][48] +1 other test pass
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_pipe_crc_basic@suspend-read-crc.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@kms_pipe_crc_basic@suspend-read-crc.html
* igt@kms_rotation_crc@multiplane-rotation-cropping-bottom:
- shard-bmg: [DMESG-FAIL][49] -> [PASS][50]
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-1/igt@kms_rotation_crc@multiplane-rotation-cropping-bottom.html
* igt@kms_vrr@max-min:
- shard-lnl: [FAIL][51] ([Intel XE#4227]) -> [PASS][52] +1 other test pass
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-lnl-3/igt@kms_vrr@max-min.html
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-1/igt@kms_vrr@max-min.html
* igt@xe_evict@evict-mixed-many-threads-small:
- shard-bmg: [INCOMPLETE][53] ([Intel XE#6321]) -> [PASS][54]
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-10/igt@xe_evict@evict-mixed-many-threads-small.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-3/igt@xe_evict@evict-mixed-many-threads-small.html
* igt@xe_exec_reset@long-spin-many-preempt-gt1-threads:
- shard-bmg: [FAIL][55] ([Intel XE#7956]) -> [PASS][56]
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-8/igt@xe_exec_reset@long-spin-many-preempt-gt1-threads.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-8/igt@xe_exec_reset@long-spin-many-preempt-gt1-threads.html
* igt@xe_exec_reset@long-spin-reuse-many-preempt-threads:
- shard-bmg: [FAIL][57] ([Intel XE#7850]) -> [PASS][58]
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-4/igt@xe_exec_reset@long-spin-reuse-many-preempt-threads.html
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-9/igt@xe_exec_reset@long-spin-reuse-many-preempt-threads.html
* igt@xe_exec_system_allocator@process-many-large-new-nomemset:
- shard-bmg: [SKIP][59] ([Intel XE#6557] / [Intel XE#6703]) -> [PASS][60] +1 other test pass
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_exec_system_allocator@process-many-large-new-nomemset.html
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@xe_exec_system_allocator@process-many-large-new-nomemset.html
* igt@xe_exec_system_allocator@process-many-mmap-remap-ro-eocheck:
- shard-lnl: [ABORT][61] -> [PASS][62]
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-lnl-2/igt@xe_exec_system_allocator@process-many-mmap-remap-ro-eocheck.html
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-2/igt@xe_exec_system_allocator@process-many-mmap-remap-ro-eocheck.html
* igt@xe_pmu@engine-activity-accuracy-90:
- shard-lnl: [FAIL][63] ([Intel XE#7072]) -> [PASS][64] +2 other tests pass
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-lnl-1/igt@xe_pmu@engine-activity-accuracy-90.html
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-lnl-4/igt@xe_pmu@engine-activity-accuracy-90.html
* igt@xe_survivability@runtime-survivability:
- shard-bmg: [DMESG-WARN][65] ([Intel XE#6627] / [Intel XE#7419]) -> [PASS][66]
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-1/igt@xe_survivability@runtime-survivability.html
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-4/igt@xe_survivability@runtime-survivability.html
* igt@xe_sysfs_preempt_timeout@preempt_timeout_us-timeout:
- shard-bmg: [SKIP][67] ([Intel XE#6703]) -> [PASS][68] +87 other tests pass
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_sysfs_preempt_timeout@preempt_timeout_us-timeout.html
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@xe_sysfs_preempt_timeout@preempt_timeout_us-timeout.html
#### Warnings ####
* igt@kms_big_fb@linear-32bpp-rotate-90:
- shard-bmg: [SKIP][69] ([Intel XE#6703]) -> [SKIP][70] ([Intel XE#2327])
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_big_fb@linear-32bpp-rotate-90.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-10/igt@kms_big_fb@linear-32bpp-rotate-90.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
- shard-bmg: [SKIP][71] ([Intel XE#6703]) -> [SKIP][72] ([Intel XE#1124])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-4/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip.html
* igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p:
- shard-bmg: [SKIP][73] ([Intel XE#6703]) -> [SKIP][74] ([Intel XE#7679])
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p.html
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@kms_bw@connected-linear-tiling-2-displays-target-3840x2160p.html
* igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc:
- shard-bmg: [SKIP][75] ([Intel XE#6703]) -> [SKIP][76] ([Intel XE#2887]) +2 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-bmg: [SKIP][77] ([Intel XE#6703]) -> [SKIP][78] ([Intel XE#2252])
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_dirtyfb@drrs-dirtyfb-ioctl:
- shard-bmg: [SKIP][79] ([Intel XE#6703]) -> [SKIP][80] ([Intel XE#1508])
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-3/igt@kms_dirtyfb@drrs-dirtyfb-ioctl.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-bmg: [SKIP][81] ([Intel XE#6703]) -> [SKIP][82] ([Intel XE#6126] / [Intel XE#776])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_fbcon_fbt@psr-suspend.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-8/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-bmg: [SKIP][83] ([Intel XE#6703]) -> [SKIP][84] ([Intel XE#7178] / [Intel XE#7349])
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-3/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt:
- shard-bmg: [SKIP][85] ([Intel XE#6703]) -> [SKIP][86] ([Intel XE#4141]) +4 other tests skip
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt.html
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-3/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-indfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move:
- shard-bmg: [SKIP][87] ([Intel XE#6703]) -> [SKIP][88] ([Intel XE#2311]) +9 other tests skip
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move.html
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-cur-indfb-move.html
* igt@kms_frontbuffer_tracking@fbcdrrs-argb161616f-draw-blt:
- shard-bmg: [SKIP][89] ([Intel XE#6703]) -> [SKIP][90] ([Intel XE#7061] / [Intel XE#7356])
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-argb161616f-draw-blt.html
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-argb161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@fbcdrrshdr-argb161616f-draw-mmap-wc:
- shard-bmg: [SKIP][91] ([Intel XE#6703]) -> [SKIP][92] ([Intel XE#7061])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrshdr-argb161616f-draw-mmap-wc.html
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcdrrshdr-argb161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcpsr-tiling-y:
- shard-bmg: [SKIP][93] ([Intel XE#6703]) -> [SKIP][94] ([Intel XE#2352] / [Intel XE#7399])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcpsr-tiling-y.html
* igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-blt:
- shard-bmg: [SKIP][95] ([Intel XE#6703]) -> [SKIP][96] ([Intel XE#2313]) +7 other tests skip
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-blt.html
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-3/igt@kms_frontbuffer_tracking@psrhdr-2p-scndscrn-pri-shrfb-draw-blt.html
* igt@kms_hdr@brightness-with-hdr:
- shard-bmg: [SKIP][97] ([Intel XE#3544] / [Intel XE#7915] / [Intel XE#7916]) -> [SKIP][98] ([Intel XE#3544] / [Intel XE#7916])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-3/igt@kms_hdr@brightness-with-hdr.html
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-9/igt@kms_hdr@brightness-with-hdr.html
* igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [SKIP][99] ([Intel XE#7915]) -> [SKIP][100] ([Intel XE#7916]) +1 other test skip
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-3/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-9/igt@kms_hdr@brightness-with-hdr@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@kms_plane_multiple@tiling-y:
- shard-bmg: [SKIP][101] ([Intel XE#6703]) -> [SKIP][102] ([Intel XE#5020] / [Intel XE#7348])
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_plane_multiple@tiling-y.html
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-2/igt@kms_plane_multiple@tiling-y.html
* igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area:
- shard-bmg: [SKIP][103] ([Intel XE#6703]) -> [SKIP][104] ([Intel XE#1489])
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-8/igt@kms_psr2_sf@fbc-psr2-overlay-primary-update-sf-dmg-area.html
* igt@kms_sharpness_filter@filter-toggle:
- shard-bmg: [SKIP][105] ([Intel XE#6703]) -> [SKIP][106] ([Intel XE#6503])
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_sharpness_filter@filter-toggle.html
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@kms_sharpness_filter@filter-toggle.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][107] ([Intel XE#2426] / [Intel XE#5848]) -> [FAIL][108] ([Intel XE#1729] / [Intel XE#7424])
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern.html
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][109] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][110] ([Intel XE#2426] / [Intel XE#5848])
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-7/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@kms_vrr@flipline:
- shard-bmg: [SKIP][111] ([Intel XE#6703]) -> [SKIP][112] ([Intel XE#1499])
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@kms_vrr@flipline.html
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@kms_vrr@flipline.html
* igt@xe_eudebug_online@pagefault-write-stress:
- shard-bmg: [SKIP][113] ([Intel XE#6703]) -> [SKIP][114] ([Intel XE#7636]) +2 other tests skip
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_eudebug_online@pagefault-write-stress.html
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-5/igt@xe_eudebug_online@pagefault-write-stress.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-rebind:
- shard-bmg: [SKIP][115] ([Intel XE#6703]) -> [SKIP][116] ([Intel XE#2322] / [Intel XE#7372])
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-rebind.html
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-7/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-rebind.html
* igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind-prefetch:
- shard-bmg: [SKIP][117] ([Intel XE#6703]) -> [SKIP][118] ([Intel XE#7136]) +3 other tests skip
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind-prefetch.html
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-6/igt@xe_exec_fault_mode@twice-multi-queue-userptr-rebind-prefetch.html
* igt@xe_exec_multi_queue@many-queues-close-fd:
- shard-bmg: [SKIP][119] ([Intel XE#6703]) -> [SKIP][120] ([Intel XE#6874]) +2 other tests skip
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_exec_multi_queue@many-queues-close-fd.html
[120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-4/igt@xe_exec_multi_queue@many-queues-close-fd.html
* igt@xe_exec_threads@threads-multi-queue-fd-userptr:
- shard-bmg: [SKIP][121] ([Intel XE#6703]) -> [SKIP][122] ([Intel XE#7138]) +1 other test skip
[121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_exec_threads@threads-multi-queue-fd-userptr.html
[122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-4/igt@xe_exec_threads@threads-multi-queue-fd-userptr.html
* igt@xe_madvise@atomic-global:
- shard-bmg: [SKIP][123] ([Intel XE#6703]) -> [FAIL][124] ([Intel XE#7969])
[123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_madvise@atomic-global.html
[124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-3/igt@xe_madvise@atomic-global.html
* igt@xe_peer2peer@write:
- shard-bmg: [SKIP][125] ([Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353]) -> [SKIP][126] ([Intel XE#2427] / [Intel XE#6953] / [Intel XE#7326] / [Intel XE#7353])
[125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_peer2peer@write.html
[126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-10/igt@xe_peer2peer@write.html
* igt@xe_pxp@pxp-stale-bo-exec-post-rpm:
- shard-bmg: [SKIP][127] ([Intel XE#6703]) -> [SKIP][128] ([Intel XE#4733] / [Intel XE#7417])
[127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_pxp@pxp-stale-bo-exec-post-rpm.html
[128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-7/igt@xe_pxp@pxp-stale-bo-exec-post-rpm.html
* igt@xe_wedged@wedged-at-any-timeout:
- shard-bmg: [SKIP][129] ([Intel XE#6703]) -> [DMESG-WARN][130] ([Intel XE#5545])
[129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472/shard-bmg-2/igt@xe_wedged@wedged-at-any-timeout.html
[130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/shard-bmg-7/igt@xe_wedged@wedged-at-any-timeout.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2286]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2286
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2427]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2427
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
[Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5020]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5020
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6126]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6126
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6557]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6557
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
[Intel XE#6627]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6627
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6841]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6841
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#6953]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6953
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7072]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7072
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7326]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7326
[Intel XE#7340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7340
[Intel XE#7348]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7348
[Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
[Intel XE#7353]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7353
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7419
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
[Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#776]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/776
[Intel XE#7850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7850
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7893
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
[Intel XE#7916]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7916
[Intel XE#7922]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7922
[Intel XE#7956]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7956
[Intel XE#7969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7969
Build changes
-------------
* IGT: IGT_8905 -> IGT_8906
* Linux: xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472 -> xe-pw-163606v3
IGT_8905: b04ca530eb2959c8edbf9d90f6bb98a9fdee2296 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8906: 6c27cc975b64ea72a6f46aa53cb3201fb73ce7cd @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5048-82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472: 82b65e2afc27ff2bad3e0dfa3fd40c4f39f9f472
xe-pw-163606v3: 163606v3
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-163606v3/index.html
[-- Attachment #2: Type: text/html, Size: 42565 bytes --]
^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2026-05-13 9:41 UTC | newest]
Thread overview: 25+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-12 13:05 [PATCH v4 00/20] drm/atomic: Rework initial state allocation Maxime Ripard
2026-05-12 13:05 ` [PATCH v4 01/20] drm/atomic: Document atomic commit lifetime Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 02/20] drm/colorop: Fix typos in the doc Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 03/20] drm/atomic: Drop drm_private_obj.state assignment from create_state Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 04/20] drm/atomic: Expand atomic_create_state expectations for drm_private_obj Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 05/20] drm/mode-config: Document drm_private_obj exclusion from drm_mode_config_reset() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 06/20] drm/colorop: Rename __drm_colorop_state_reset() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 07/20] drm/colorop: Create drm_atomic_helper_colorop_create_state() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 08/20] drm/atomic-state-helper: Fix __drm_atomic_helper_plane_reset() doc typo Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 09/20] drm/atomic-state-helper: Rename __drm_atomic_helper_plane_state_reset() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 10/20] drm/plane: Add new atomic_create_state callback Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 11/20] drm/atomic-state-helper: Rename __drm_atomic_helper_crtc_state_reset() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 12/20] drm/crtc: Add new atomic_create_state callback Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 13/20] drm/atomic-state-helper: Rename __drm_atomic_helper_connector_state_reset() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 14/20] drm/hdmi: Rename __drm_atomic_helper_connector_hdmi_reset() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 15/20] drm/connector: Add new atomic_create_state callback Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 16/20] drm/mode-config: Create drm_mode_config_create_initial_state() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 17/20] drm/drv: Switch skeleton to drm_mode_config_create_initial_state() Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 18/20] drm/tidss: Switch " Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 19/20] drm/tidss: Convert to atomic_create_state Maxime Ripard
2026-05-12 13:06 ` [PATCH v4 20/20] drm/bridge_connector: " Maxime Ripard
2026-05-12 18:03 ` ✗ CI.checkpatch: warning for drm/atomic: Rework initial state allocation (rev3) Patchwork
2026-05-12 18:05 ` ✓ CI.KUnit: success " Patchwork
2026-05-12 19:35 ` ✓ Xe.CI.BAT: " Patchwork
2026-05-13 9:41 ` ✗ Xe.CI.FULL: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox