public inbox for drm-ai-reviews@public-inbox.freedesktop.org
 help / color / mirror / Atom feed
From: Maxime Ripard <mripard@kernel.org>
To: Thomas Zimmermann <tzimmermann@suse.de>
Cc: 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>,
	Luca Ceresoli <luca.ceresoli@bootlin.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	Dmitry Baryshkov <lumag@kernel.org>,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 04/76] drm/bridge: Add new atomic_create_state callback
Date: Tue, 2 Jun 2026 09:26:53 +0200	[thread overview]
Message-ID: <20260602-burrowing-fox-of-expression-e0ac77@houat> (raw)
In-Reply-To: <d640577b-ea48-43ce-ad2f-c0e92b6f1248@suse.de>

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

On Tue, Jun 02, 2026 at 09:24:29AM +0200, Thomas Zimmermann wrote:
> Hi
> 
> Am 30.05.26 um 15:59 schrieb 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: atomic_create_state, a dedicated hook that allocates and
> > initializes a pristine state without any side effect.
> > 
> > The bridge atomic_reset callback is already fallible and in practice
> > only allocates and initializes state without touching hardware.
> > However, the reset name does not make this contract clear: callers
> > and implementers cannot tell from the name alone whether the hardware
> > will be affected or when the hook is safe to call.
> > 
> > Add an atomic_create_state callback to drm_bridge_funcs to make the
> > contract explicit: allocate a pristine state, initialize it, no side
> > effects. The core calls it when available, falling back to
> > atomic_reset otherwise.
> > 
> > Signed-off-by: Maxime Ripard <mripard@kernel.org>
> > ---
> >   drivers/gpu/drm/drm_bridge.c |  8 ++++++--
> >   include/drm/drm_bridge.h     | 33 +++++++++++----------------------
> >   2 files changed, 17 insertions(+), 24 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
> > index 687b36eea0c7..ef06c1aa509a 100644
> > --- a/drivers/gpu/drm/drm_bridge.c
> > +++ b/drivers/gpu/drm/drm_bridge.c
> > @@ -498,11 +498,14 @@ 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 (bridge->funcs->atomic_create_state)
> > +		state = bridge->funcs->atomic_create_state(bridge);
> > +	else
> > +		state = bridge->funcs->atomic_reset(bridge);
> >   	if (IS_ERR(state))
> >   		return ERR_CAST(state);
> >   	return &state->base;
> >   }
> > @@ -513,11 +516,12 @@ static const struct drm_private_state_funcs drm_bridge_priv_state_funcs = {
> >   	.atomic_destroy_state = drm_bridge_atomic_destroy_priv_state,
> >   };
> >   static bool drm_bridge_is_atomic(struct drm_bridge *bridge)
> >   {
> > -	return bridge->funcs->atomic_reset != NULL;
> > +	return (bridge->funcs->atomic_create_state ||
> > +		bridge->funcs->atomic_reset);
> >   }
> >   /**
> >    * drm_bridge_attach - attach the bridge to an encoder's chain
> >    *
> > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> > index 4ba3a5deef9a..a6c07d339afa 100644
> > --- a/include/drm/drm_bridge.h
> > +++ b/include/drm/drm_bridge.h
> > @@ -502,35 +502,24 @@ struct drm_bridge_funcs {
> >   			    struct drm_bridge_state *bridge_state,
> >   			    struct drm_crtc_state *crtc_state,
> >   			    struct drm_connector_state *conn_state);
> >   	/**
> > -	 * @atomic_reset:
> > +	 * @atomic_create_state:
> >   	 *
> > -	 * Reset the bridge to a predefined state (or retrieve its current
> > -	 * state) and return a &drm_bridge_state object matching this state.
> > -	 * This function is called at attach time.
> > -	 *
> > -	 * The atomic_reset hook is mandatory if the bridge implements any of
> > -	 * the atomic hooks, and should be left unassigned otherwise. For
> > -	 * bridges that don't subclass &drm_bridge_state, the
> > -	 * drm_atomic_helper_bridge_reset() helper function shall be used to
> > -	 * implement this hook.
> > -	 *
> > -	 * Note that the atomic_reset() semantics is not exactly matching the
> > -	 * reset() semantics found on other components (connector, plane, ...).
> > -	 *
> > -	 * 1. The reset operation happens when the bridge is attached, not when
> > -	 *    drm_mode_config_reset() is called
> > -	 * 2. It's meant to be used exclusively on bridges that have been
> > -	 *    converted to the ATOMIC API
> > +	 * Allocate a pristine, initialized, state for the bridge
> > +	 * 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 valid drm_bridge_state object in case of success, an ERR_PTR()
> > -	 * giving the reason of the failure otherwise.
> > +	 *
> > +	 * A new, pristine, bridge state instance or an error pointer
> > +	 * on failure.
> >   	 */
> > -	struct drm_bridge_state *(*atomic_reset)(struct drm_bridge *bridge);
> 
> This needs to remain for now, right?

Yeah, Liu Ying pointed it out too, it's a screwup. I'll keep
atomic_reset until all drivers are converted.

Thanks for your review!
Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]

  reply	other threads:[~2026-06-02  7:26 UTC|newest]

Thread overview: 118+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-30 13:59 [PATCH 00/76] drm/bridge: Convert all reset users to create_state Maxime Ripard
2026-05-30 13:59 ` [PATCH 01/76] drm/atomic-state-helper: Rename __drm_atomic_helper_bridge_reset() Maxime Ripard
2026-06-02  7:03   ` Thomas Zimmermann
2026-06-03 14:07   ` Luca Ceresoli
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 13:59 ` [PATCH 02/76] drm/atomic-state-helper: Reorder __drm_atomic_helper_bridge_state_init() arguments Maxime Ripard
2026-06-02  7:03   ` Thomas Zimmermann
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 13:59 ` [PATCH 03/76] drm/atomic-state-helper: Drop memset from __drm_atomic_helper_bridge_state_init() Maxime Ripard
2026-06-02  7:06   ` Thomas Zimmermann
2026-06-03 14:07   ` Luca Ceresoli
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 13:59 ` [PATCH 04/76] drm/bridge: Add new atomic_create_state callback Maxime Ripard
2026-05-31  3:15   ` Liu Ying
2026-06-02  7:24   ` Thomas Zimmermann
2026-06-02  7:26     ` Maxime Ripard [this message]
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 13:59 ` [PATCH 05/76] drm/atomic-state-helper: Add drm_atomic_helper_bridge_create_state() Maxime Ripard
2026-06-02  7:35   ` Thomas Zimmermann
2026-06-03 14:07   ` Luca Ceresoli
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 13:59 ` [PATCH 06/76] drm/bridge: adv7511: Switch to atomic_create_state Maxime Ripard
2026-05-30 13:59 ` [PATCH 07/76] drm/bridge: analogix_dp: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 08/76] drm/bridge: anx7625: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 09/76] drm/bridge: chipone-icn6211: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 10/76] drm/bridge: display-connector: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 11/76] drm/bridge: fsl-ldb: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 12/76] drm/bridge: imx8mp-hdmi-pvi: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 13/76] drm/bridge: imx8qm-ldb: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 14/76] drm/bridge: imx8qxp-ldb: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 15/76] drm/bridge: imx8qxp-pixel-combiner: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 16/76] drm/bridge: imx8qxp-pixel-link: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 17/76] drm/bridge: imx8qxp-pxl2dpi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 18/76] drm/bridge: inno-hdmi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 19/76] drm/bridge: ite-it6263: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 20/76] drm/bridge: ite-it6505: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 21/76] drm/bridge: ite-it66121: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 22/76] drm/bridge: lontium-lt9211: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 23/76] drm/bridge: lontium-lt9611: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 24/76] drm/bridge: lvds-codec: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 25/76] drm/bridge: nwl-dsi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 26/76] drm/bridge: panel: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 27/76] drm/bridge: parade-ps8640: " Maxime Ripard
2026-06-02  0:20   ` Doug Anderson
2026-05-30 13:59 ` [PATCH 28/76] drm/bridge: samsung-dsim: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 29/76] drm/bridge: sii902x: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 30/76] drm/bridge: ssd2825: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 31/76] drm/bridge: dw-dp: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 32/76] drm/bridge: dw-hdmi-qp: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 33/76] drm/bridge: dw-hdmi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 34/76] drm/bridge: dw-mipi-dsi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 35/76] drm/bridge: dw-mipi-dsi2: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 36/76] drm/bridge: tc358762: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 37/76] drm/bridge: tc358767: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 38/76] drm/bridge: tc358768: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 39/76] drm/bridge: tc358775: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 40/76] drm/bridge: ti-dlpc3433: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 41/76] drm/bridge: ti-sn65dsi83: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 42/76] drm/bridge: ti-sn65dsi86: " Maxime Ripard
2026-06-02  0:19   ` Doug Anderson
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 13:59 ` [PATCH 43/76] drm/bridge: ti-tdp158: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 44/76] drm/bridge: ti-tfp410: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 45/76] drm/imx: parallel-display: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 46/76] drm/ingenic: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 47/76] drm/mediatek: dp: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 48/76] drm/mediatek: dpi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 49/76] drm/mediatek: dsi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 50/76] drm/mediatek: hdmi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 51/76] drm/mediatek: hdmi_v2: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 52/76] drm/meson: encoder_cvbs: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 53/76] drm/meson: encoder_dsi: " Maxime Ripard
2026-05-30 13:59 ` [PATCH 54/76] drm/meson: encoder_hdmi: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 55/76] drm/msm: dp: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 56/76] drm/msm: hdmi: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 57/76] drm/omap: hdmi4: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 58/76] drm/omap: hdmi5: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 59/76] drm/renesas: rcar-du: lvds: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 60/76] drm/renesas: rcar-du: mipi_dsi: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 61/76] drm/renesas: rz-du: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 62/76] drm/rockchip: cdn-dp: " Maxime Ripard
2026-06-02 15:02   ` Heiko Stuebner
2026-05-30 14:00 ` [PATCH 63/76] drm/rockchip: rk3066_hdmi: " Maxime Ripard
2026-06-02 15:02   ` Heiko Stuebner
2026-05-30 14:00 ` [PATCH 64/76] drm/rockchip: lvds: " Maxime Ripard
2026-06-02 15:03   ` Heiko Stuebner
2026-05-30 14:00 ` [PATCH 65/76] drm/stm: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 66/76] drm/tests: bridge: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 67/76] drm/tidss: encoder: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 68/76] drm/tidss: oldi: " Maxime Ripard
2026-05-30 14:00 ` [PATCH 69/76] drm/vc4: dsi: " Maxime Ripard
2026-06-01 14:32   ` Maíra Canal
2026-06-01 14:59   ` Dave Stevenson
2026-05-30 14:00 ` [PATCH 70/76] drm/verisilicon: " Maxime Ripard
2026-05-31 10:08   ` Icenowy Zheng
2026-05-30 14:00 ` [PATCH 71/76] drm/xlnx: zynqmp_dp: " Maxime Ripard
2026-06-03 14:07   ` Luca Ceresoli
2026-05-30 14:00 ` [PATCH 72/76] drm/atomic-state-helper: Remove drm_atomic_helper_bridge_reset() Maxime Ripard
2026-06-02  7:36   ` Thomas Zimmermann
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 14:00 ` [PATCH 73/76] drm/bridge: cdns-dsi: Use __drm_atomic_helper_bridge_state_init() Maxime Ripard
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 14:00 ` [PATCH 74/76] drm/bridge: cdns-dsi: Switch to atomic_create_state Maxime Ripard
2026-06-02  7:39   ` Thomas Zimmermann
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 14:00 ` [PATCH 75/76] drm/bridge: cdns-mhdp8546: " Maxime Ripard
2026-06-02  8:00   ` Thomas Zimmermann
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-05-30 14:00 ` [PATCH 76/76] drm/bridge: Remove atomic_reset support Maxime Ripard
2026-06-04  5:45   ` Claude review: " Claude Code Review Bot
2026-06-04  5:45 ` Claude review: drm/bridge: Convert all reset users to create_state Claude Code Review Bot

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=20260602-burrowing-fox-of-expression-e0ac77@houat \
    --to=mripard@kernel.org \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=andrzej.hajda@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=luca.ceresoli@bootlin.com \
    --cc=lumag@kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=neil.armstrong@linaro.org \
    --cc=rfoss@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    /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