From: Thomas Zimmermann <tzimmermann@suse.de>
To: Maxime Ripard <mripard@kernel.org>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>
Cc: dri-devel@lists.freedesktop.org,
Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Andrzej Hajda <andrzej.hajda@intel.com>,
Neil Armstrong <neil.armstrong@linaro.org>,
Robert Foss <rfoss@kernel.org>,
Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
Jonas Karlman <jonas@kwiboo.se>,
Jernej Skrabec <jernej.skrabec@gmail.com>
Subject: Re: [PATCH v4 04/15] drm/bridge: Switch private_obj initialization to atomic_create_state
Date: Mon, 9 Feb 2026 09:30:11 +0100 [thread overview]
Message-ID: <ead8313b-3823-467f-a402-d5436bfc13fa@suse.de> (raw)
In-Reply-To: <20260128-drm-private-obj-reset-v4-4-90891fa3d3b0@redhat.com>
Am 28.01.26 um 13:43 schrieb Maxime Ripard:
> The bridge implementation relies on a drm_private_obj, that is
> initialized by allocating and initializing a state, and then passing it
> to drm_private_obj_init.
>
> Since we're gradually moving away from that pattern to the more
> established one relying on a atomic_create_state implementation, let's
> migrate this instance to the new pattern.
>
> Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> Signed-off-by: Maxime Ripard <mripard@kernel.org>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
> ---
>
> Cc: Andrzej Hajda <andrzej.hajda@intel.com>
> Cc: Neil Armstrong <neil.armstrong@linaro.org>
> Cc: Robert Foss <rfoss@kernel.org>
> Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
> Cc: Jonas Karlman <jonas@kwiboo.se>
> Cc: Jernej Skrabec <jernej.skrabec@gmail.com>
> ---
> drivers/gpu/drm/drm_atomic_state_helper.c | 1 +
> drivers/gpu/drm/drm_bridge.c | 31 ++++++++++++++++---------------
> 2 files changed, 17 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c b/drivers/gpu/drm/drm_atomic_state_helper.c
> index d21f32f0ad51f4305f75d01be58dc404acf7674c..716631e8a10a04674ae498b7fcbfc64a668a051e 100644
> --- a/drivers/gpu/drm/drm_atomic_state_helper.c
> +++ b/drivers/gpu/drm/drm_atomic_state_helper.c
> @@ -823,10 +823,11 @@ EXPORT_SYMBOL(drm_atomic_helper_bridge_destroy_state);
> */
> void __drm_atomic_helper_bridge_reset(struct drm_bridge *bridge,
> struct drm_bridge_state *state)
> {
> memset(state, 0, sizeof(*state));
> + __drm_atomic_helper_private_obj_create_state(&bridge->base, &state->base);
> state->bridge = bridge;
> }
> EXPORT_SYMBOL(__drm_atomic_helper_bridge_reset);
>
> /**
> diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> index 3b165a0d1e779ebcf7fe710a28ce3d15d7ab9c81..94864e05619d1678ea6c0571e889f951e17d8d16 100644
> --- a/drivers/gpu/drm/drm_bridge.c
> +++ b/drivers/gpu/drm/drm_bridge.c
> @@ -458,11 +458,25 @@ drm_bridge_atomic_destroy_priv_state(struct drm_private_obj *obj,
> struct drm_bridge *bridge = drm_priv_to_bridge(obj);
>
> bridge->funcs->atomic_destroy_state(bridge, state);
> }
>
> +static struct drm_private_state *
> +drm_bridge_atomic_create_priv_state(struct drm_private_obj *obj)
> +{
> + struct drm_bridge *bridge = drm_priv_to_bridge(obj);
> + struct drm_bridge_state *state;
> +
> + state = bridge->funcs->atomic_reset(bridge);
> + if (IS_ERR(state))
> + return ERR_CAST(state);
> +
> + return &state->base;
> +}
> +
> static const struct drm_private_state_funcs drm_bridge_priv_state_funcs = {
> + .atomic_create_state = drm_bridge_atomic_create_priv_state,
> .atomic_duplicate_state = drm_bridge_atomic_duplicate_priv_state,
> .atomic_destroy_state = drm_bridge_atomic_destroy_priv_state,
> };
>
> static bool drm_bridge_is_atomic(struct drm_bridge *bridge)
> @@ -535,30 +549,17 @@ int drm_bridge_attach(struct drm_encoder *encoder, struct drm_bridge *bridge,
> ret = bridge->funcs->attach(bridge, encoder, flags);
> if (ret < 0)
> goto err_reset_bridge;
> }
>
> - if (drm_bridge_is_atomic(bridge)) {
> - struct drm_bridge_state *state;
> -
> - state = bridge->funcs->atomic_reset(bridge);
> - if (IS_ERR(state)) {
> - ret = PTR_ERR(state);
> - goto err_detach_bridge;
> - }
> -
> + if (drm_bridge_is_atomic(bridge))
> drm_atomic_private_obj_init(bridge->dev, &bridge->base,
> - &state->base,
> + NULL,
> &drm_bridge_priv_state_funcs);
> - }
>
> return 0;
>
> -err_detach_bridge:
> - if (bridge->funcs->detach)
> - bridge->funcs->detach(bridge);
> -
> err_reset_bridge:
> bridge->dev = NULL;
> bridge->encoder = NULL;
> list_del(&bridge->chain_node);
>
>
--
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstr. 146, 90461 Nürnberg, Germany, www.suse.com
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich, (HRB 36809, AG Nürnberg)
next prev parent reply other threads:[~2026-02-09 8:30 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-28 12:43 [PATCH v4 00/15] drm/atomic: Allocate drm_private_state through a callback Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 01/15] drm/atomic: Make drm_atomic_private_obj_init fallible Maxime Ripard
2026-02-09 8:29 ` Thomas Zimmermann
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 02/15] drm/atomic: Add new atomic_create_state callback to drm_private_obj Maxime Ripard
2026-02-09 8:29 ` Thomas Zimmermann
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 03/15] drm/atomic-helper: Add private_obj atomic_create_state helper Maxime Ripard
2026-02-09 8:29 ` Thomas Zimmermann
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 04/15] drm/bridge: Switch private_obj initialization to atomic_create_state Maxime Ripard
2026-02-09 8:30 ` Thomas Zimmermann [this message]
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 05/15] drm/dp_mst: " Maxime Ripard
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 06/15] drm/dp_tunnel: " Maxime Ripard
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 07/15] drm/amdgpu: " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 08/15] drm/arm: komeda: " Maxime Ripard
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 09/15] drm/ingenic: " Maxime Ripard
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 10/15] drm/msm: mdp5: " Maxime Ripard
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 11/15] drm/msm: dpu1: " Maxime Ripard
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 12/15] drm/omapdrm: " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 13/15] drm/tegra: " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 14/15] drm/vc4: " Maxime Ripard
2026-02-07 20:34 ` Maíra Canal
2026-02-10 9:13 ` Maxime Ripard
2026-02-10 9:11 ` (subset) " Maxime Ripard
2026-01-28 12:43 ` [PATCH v4 15/15] drm/atomic: Remove state argument to drm_atomic_private_obj_init Maxime Ripard
2026-02-07 20:37 ` Maíra Canal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ead8313b-3823-467f-a402-d5436bfc13fa@suse.de \
--to=tzimmermann@suse.de \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jernej.skrabec@gmail.com \
--cc=jonas@kwiboo.se \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=rfoss@kernel.org \
--cc=simona@ffwll.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox