All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Ceresoli <luca.ceresoli@bootlin.com>
To: Liu Ying <victor.liu@nxp.com>
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>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	Hui Pu <Hui.Pu@gehealthcare.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Zijun Hu <quic_zijuhu@quicinc.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Subject: Re: [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge()
Date: Mon, 4 Aug 2025 08:31:36 +0200	[thread overview]
Message-ID: <20250804083136.058353f9@booty> (raw)
In-Reply-To: <1ebad5ca-26f3-4a5f-a812-8211129c764a@nxp.com>

Hello Liu,

thanks for having reviewed this series.

On Mon, 4 Aug 2025 12:02:48 +0800
Liu Ying <victor.liu@nxp.com> wrote:

> Hi Luca,
> 
> On 08/01/2025, Luca Ceresoli wrote:
> > Note: the cover in v1 was mentioning by mistake
> > drm_bridge_get_last_bridge() instead of drm_bridge_get_next_bridge().
> >                ^^^^
> > 
> > This series adds drm_bridge_get/put() calls for DRM bridges returned by
> > drm_bridge_get_next_bridge().
> > 
> > This is part of the work towards removal of bridges from a still existing
> > DRM pipeline without use-after-free. The grand plan was discussed in [1].
> > Here's the work breakdown (➜ marks the current series):
> > 
> >  1. ➜ add refcounting to DRM bridges (struct drm_bridge)
> >     (based on devm_drm_bridge_alloc() [0])
> >     A. ✔ add new alloc API and refcounting (in v6.16-rc1)
> >     B. ✔ convert all bridge drivers to new API (now in drm-misc-next)
> >     C. ✔ kunit tests (now in drm-misc-next)
> >     D. ✔ add get/put to drm_bridge_add/remove() + attach/detach()
> >          and warn on old allocation pattern (now in drm-misc-next)
> >     E. ➜ add get/put on drm_bridge accessors
> >        1. ✔ drm_bridge_chain_get_first_bridge() + add a cleanup action
> >        2. ✔ drm_bridge_get_prev_bridge()
> >        3. ➜ drm_bridge_get_next_bridge()
> >        4. … drm_for_each_bridge_in_chain()
> >        5. drm_bridge_connector_init
> >        6. of_drm_find_bridge
> >        7. drm_of_find_panel_or_bridge, *_of_get_bridge
> >     F. debugfs improvements
> >  2. handle gracefully atomic updates during bridge removal
> >  3. … avoid DSI host drivers to have dangling pointers to DSI devices
> >  4. finish the hotplug bridge work, removing the "always-disconnected"
> >     connector, moving code to the core and potentially removing the
> >     hotplug-bridge itself (this needs to be clarified as points 1-3 are
> >     developed)
> > 
> > There are various users of drm_bridge_get_next_bridge() which cannot be
> > converted easily. Luckily they are not really looking for the next bridge,
> > but for something else, such as getting the last bridge in the encoder
> > chain or checking whether a bridge is the last in the encoder chain. So
> > introduce better functions for those users and use them instead of
> > drm_bridge_get_next_bridge(), making the code cleaner at the same time.
> > 
> > Finally add a drm_bridge_get() to drm_bridge_get_next_bridge() and
> > drm_bridge_put() to the remaining, and legitimate, calls.
> > 
> > [0] https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/0cc6aadd7fc1e629b715ea3d1ba537ef2da95eec
> > [1] https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com/t/#u
> > 
> > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
> > ---
> > Changes in v2:
> > - Use cleanup action in patches 4, 8 and 9
> > - Fix: replace get_last -> get_next in cover
> > - Link to v1: https://lore.kernel.org/r/20250709-drm-bridge-alloc-getput-drm_bridge_get_next_bridge-v1-0-48920b9cf369@bootlin.com
> > 
> > ---
> > Luca Ceresoli (9):
> >       list: add list_last_entry_or_null()
> >       drm/bridge: add drm_bridge_chain_get_last_bridge()
> >       drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge()
> >       drm/omapdrm: use drm_bridge_chain_get_last_bridge()
> >       drm/bridge: add drm_bridge_is_last()
> >       drm/display: bridge_connector: use drm_bridge_is_last()
> >       drm/bridge: get the bridge returned by drm_bridge_get_next_bridge()
> >       drm/bridge: put the bridge returned by drm_bridge_get_next_bridge()
> >       drm/imx: parallel-display: put the bridge returned by drm_bridge_get_next_bridge()
> > 
> >  drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c    | 12 ++++------
> >  drivers/gpu/drm/display/drm_bridge_connector.c |  5 ++--
> >  drivers/gpu/drm/drm_bridge.c                   |  3 +--
> >  drivers/gpu/drm/imx/ipuv3/parallel-display.c   |  4 ++--
> >  drivers/gpu/drm/omapdrm/omap_drv.c             |  6 ++---
> >  include/drm/drm_bridge.h                       | 32 +++++++++++++++++++++++++-
> >  include/linux/list.h                           | 14 +++++++++++
> >  7 files changed, 57 insertions(+), 19 deletions(-)  
> 
> Looks like this one needs to be handled by this patch series?
> 
> drivers/gpu/drm/omapdrm/omap_encoder.c:101:
> bridge = drm_bridge_get_next_bridge(bridge)) {

This is handled in a better way in a separate series, converting the
for_each loops around the bridges in an encoder chain:

https://lore.kernel.org/all/20250723-drm-bridge-alloc-getput-for_each_bridge-v1-9-be8f4ae006e9@bootlin.com/

Luca

-- 
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

  reply	other threads:[~2025-08-04  6:31 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-01 17:05 [PATCH v2 0/9] drm/bridge: get/put the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 1/9] list: add list_last_entry_or_null() Luca Ceresoli
2025-08-05 21:55   ` Andy Shevchenko
2025-08-14 16:36     ` Luca Ceresoli
2025-08-20 13:43       ` Andy Shevchenko
2025-09-02 11:57         ` Luca Ceresoli
2025-09-02 12:10           ` Jani Nikula
2025-09-02 13:36             ` Luca Ceresoli
2025-09-02 12:22           ` Maxime Ripard
2025-09-02 12:33             ` Andy Shevchenko
2025-08-01 17:05 ` [PATCH v2 2/9] drm/bridge: add drm_bridge_chain_get_last_bridge() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 3/9] drm/bridge: imx93-mipi-dsi: use drm_bridge_chain_get_last_bridge() Luca Ceresoli
2025-08-04  3:42   ` Liu Ying
2025-08-01 17:05 ` [PATCH v2 4/9] drm/omapdrm: " Luca Ceresoli
2025-08-19 13:58   ` Maxime Ripard
2025-08-01 17:05 ` [PATCH v2 5/9] drm/bridge: add drm_bridge_is_last() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 6/9] drm/display: bridge_connector: use drm_bridge_is_last() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 7/9] drm/bridge: get the bridge returned by drm_bridge_get_next_bridge() Luca Ceresoli
2025-08-01 17:05 ` [PATCH v2 8/9] drm/bridge: put " Luca Ceresoli
2025-08-19 13:58   ` Maxime Ripard
2025-08-01 17:05 ` [PATCH v2 9/9] drm/imx: parallel-display: " Luca Ceresoli
2025-08-15  8:51   ` Philipp Zabel
2025-08-19 13:58   ` Maxime Ripard
2025-08-04  4:02 ` [PATCH v2 0/9] drm/bridge: get/put " Liu Ying
2025-08-04  6:31   ` Luca Ceresoli [this message]
2025-09-02 13:25 ` (subset) " Luca Ceresoli
2025-09-16 13:30   ` Luca Ceresoli

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=20250804083136.058353f9@booty \
    --to=luca.ceresoli@bootlin.com \
    --cc=Hui.Pu@gehealthcare.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=andrzej.hajda@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=imx@lists.linux.dev \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=neil.armstrong@linaro.org \
    --cc=p.zabel@pengutronix.de \
    --cc=quic_zijuhu@quicinc.com \
    --cc=rfoss@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=tomi.valkeinen@ideasonboard.com \
    --cc=tzimmermann@suse.de \
    --cc=victor.liu@nxp.com \
    /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.