All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simona Vetter <simona.vetter@ffwll.ch>
To: Maxime Ripard <mripard@kernel.org>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	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>,
	Douglas Anderson <dianders@chromium.org>,
	dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 22/29] drm/bridge: Rename atomic hooks parameters to drop old prefix
Date: Fri, 17 Jan 2025 16:32:29 +0100	[thread overview]
Message-ID: <Z4p4DYBtC0_f6n0a@phenom.ffwll.local> (raw)
In-Reply-To: <20250117-magpie-of-unreal-pride-efb244@houat>

On Fri, Jan 17, 2025 at 03:50:09PM +0100, Maxime Ripard wrote:
> On Thu, Jan 16, 2025 at 12:34:12PM +0100, Simona Vetter wrote:
> > On Wed, Jan 15, 2025 at 10:05:29PM +0100, Maxime Ripard wrote:
> > > All the bridge atomic hooks were using the old_bridge_state name for
> > > their drm_bridge_state parameter. However, this state is the current
> > > state being committed for all of them, which ends up being confusing.
> > > 
> > > Let's rename it to bridge_state for all of them.
> > > 
> > > Signed-off-by: Maxime Ripard <mripard@kernel.org>
> > > ---
> > >  include/drm/drm_bridge.h | 8 ++++----
> > >  1 file changed, 4 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
> > > index 4b84faf14e368310dd20aa964e8178ec80aa6fa7..8e18130be8bb85fc2463917dde9bf1d281934184 100644
> > > --- a/include/drm/drm_bridge.h
> > > +++ b/include/drm/drm_bridge.h
> > > @@ -303,11 +303,11 @@ struct drm_bridge_funcs {
> > >  	 * there is one) when this callback is called.
> > >  	 *
> > >  	 * The @atomic_pre_enable callback is optional.
> > >  	 */
> > >  	void (*atomic_pre_enable)(struct drm_bridge *bridge,
> > > -				  struct drm_bridge_state *old_bridge_state);
> > > +				  struct drm_bridge_state *bridge_state);
> > >  
> > >  	/**
> > >  	 * @atomic_enable:
> > >  	 *
> > >  	 * This callback should enable the bridge. It is called right after
> > > @@ -323,11 +323,11 @@ struct drm_bridge_funcs {
> > >  	 * chain if there is one.
> > >  	 *
> > >  	 * The @atomic_enable callback is optional.
> > >  	 */
> > >  	void (*atomic_enable)(struct drm_bridge *bridge,
> > > -			      struct drm_bridge_state *old_bridge_state);
> > > +			      struct drm_bridge_state *bridge_state);
> > 
> > Checked this one, and it very clearly passes the old state.
> 
> Urgh, you're right
> 
> > Because the new state you can get by looking at bridge->state.
> 
> Bridge->state doesn't exist though.

Yeah it's defacto your helper to go find the private object, deref the
->state pointer in there and then cast to the right type. But that again
has a bit the locking issue since sometimes you must hold the modeset
lock, sometimes not.

If we instead always go through the drm_atomic_state lookup then we can
require the modeset lock in the other helper for the bridge ->
bridge_state lookup, and things become much harder for drivers to get
wrong.

> > So this looks very wrong.
> > 
> > If you want to fully update the pattern, pass the drm_atomic_state
> > instead, and let callbacks lookup any additional states they use as
> > needed.
> 
> Yeah, that's probably the best option. I think I still have the
> coccinelle scripts I used for the others somewhere.

Yeah cocci would help here.
-Sima
-- 
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

  reply	other threads:[~2025-01-17 15:32 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-15 21:05 [PATCH 00/29] drm/bridge: Various quality of life improvements Maxime Ripard
2025-01-15 21:05 ` [PATCH 01/29] drm/atomic-helper: Fix commit_tail state variable name Maxime Ripard
2025-01-16  1:36   ` Dmitry Baryshkov
2025-01-16 11:27     ` Simona Vetter
2025-01-15 21:05 ` [PATCH 02/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_wait_for_dependencies() Maxime Ripard
2025-01-15 21:05 ` [PATCH 03/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_tail() Maxime Ripard
2025-01-15 21:05 ` [PATCH 04/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_tail_rpm() Maxime Ripard
2025-01-15 21:05 ` [PATCH 05/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_modeset_disables() Maxime Ripard
2025-01-15 21:05 ` [PATCH 06/29] drm/atomic-helper: Change parameter name of disable_outputs() Maxime Ripard
2025-01-15 21:05 ` [PATCH 07/29] drm/bridge: Change parameter name of drm_atomic_bridge_chain_disable() Maxime Ripard
2025-01-15 21:05 ` [PATCH 08/29] drm/bridge: Change parameter name of drm_atomic_bridge_chain_post_disable() Maxime Ripard
2025-01-15 21:05 ` [PATCH 09/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_update_legacy_modeset_state() Maxime Ripard
2025-01-15 21:05 ` [PATCH 10/29] drm/atomic-helper: Change parameter name of crtc_set_mode() Maxime Ripard
2025-01-15 21:05 ` [PATCH 11/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_planes() Maxime Ripard
2025-01-15 21:05 ` [PATCH 12/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_modeset_enables() Maxime Ripard
2025-01-15 21:05 ` [PATCH 13/29] drm/bridge: Change parameter name of drm_atomic_bridge_chain_pre_enable() Maxime Ripard
2025-01-15 21:05 ` [PATCH 14/29] drm/bridge: Change parameter name of drm_atomic_bridge_chain_enable() Maxime Ripard
2025-01-15 21:05 ` [PATCH 15/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_writebacks() Maxime Ripard
2025-01-15 21:05 ` [PATCH 16/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_fake_vblank() Maxime Ripard
2025-01-15 21:05 ` [PATCH 17/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_hw_done() Maxime Ripard
2025-01-15 21:05 ` [PATCH 18/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_wait_for_vblanks() Maxime Ripard
2025-01-15 21:05 ` [PATCH 19/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_cleanup_planes() Maxime Ripard
2025-01-15 21:05 ` [PATCH 20/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_commit_cleanup_done() Maxime Ripard
2025-01-15 21:05 ` [PATCH 21/29] drm/atomic-helper: Change parameter name of drm_atomic_helper_wait_for_flip_done() Maxime Ripard
2025-01-15 21:05 ` [PATCH 22/29] drm/bridge: Rename atomic hooks parameters to drop old prefix Maxime Ripard
2025-01-16 11:34   ` Simona Vetter
2025-01-17 14:50     ` Maxime Ripard
2025-01-17 15:32       ` Simona Vetter [this message]
2025-01-15 21:05 ` [PATCH 23/29] drm/bridge: Provide a helper to retrieve current bridge state Maxime Ripard
2025-01-16  0:43   ` Dmitry Baryshkov
2025-01-16  8:30     ` Maxime Ripard
2025-01-16 11:35     ` Simona Vetter
2025-01-15 21:05 ` [PATCH 24/29] drm/bridge: Provide a helper to get the global state from a " Maxime Ripard
2025-01-16 11:31   ` Simona Vetter
2025-01-15 21:05 ` [PATCH 25/29] drm/bridge: Provide pointers to the connector and crtc in " Maxime Ripard
2025-01-16  1:04   ` Dmitry Baryshkov
2025-01-16  8:42     ` Maxime Ripard
2025-01-16  9:53       ` Dmitry Baryshkov
2025-01-15 21:05 ` [PATCH 26/29] drm/bridge: cdns-csi: Switch to atomic helpers Maxime Ripard
2025-01-16  1:06   ` Dmitry Baryshkov
2025-01-15 21:05 ` [PATCH 27/29] drm/bridge: tc358775: Switch to atomic commit Maxime Ripard
2025-01-16  1:06   ` Dmitry Baryshkov
2025-01-15 21:05 ` [PATCH 28/29] drm/bridge: tc358768: Convert to atomic helpers Maxime Ripard
2025-01-15 21:05 ` [PATCH 29/29] drm/bridge: ti-sn65dsi86: Use bridge_state crtc pointer Maxime Ripard
2025-01-16  1:08   ` Dmitry Baryshkov
2025-02-03 10:01     ` Maxime Ripard
2025-02-03 17:49       ` Dmitry Baryshkov
2025-02-04  8:23         ` Maxime Ripard

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=Z4p4DYBtC0_f6n0a@phenom.ffwll.local \
    --to=simona.vetter@ffwll.ch \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=andrzej.hajda@intel.com \
    --cc=dianders@chromium.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.