All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luca Ceresoli <luca.ceresoli@bootlin.com>
To: Maxime Ripard <mripard@kernel.org>
Cc: "Simona Vetter" <simona@ffwll.ch>,
	"Inki Dae" <inki.dae@samsung.com>,
	"Jagan Teki" <jagan@amarulasolutions.com>,
	"Marek Szyprowski" <m.szyprowski@samsung.com>,
	"Catalin Marinas" <catalin.marinas@arm.com>,
	"Will Deacon" <will@kernel.org>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Fabio Estevam" <festevam@gmail.com>,
	"Daniel Thompson" <danielt@kernel.org>,
	"Andrzej Hajda" <andrzej.hajda@intel.com>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Sam Ravnborg" <sam@ravnborg.org>,
	"Boris Brezillon" <bbrezillon@kernel.org>,
	"Nicolas Ferre" <nicolas.ferre@microchip.com>,
	"Alexandre Belloni" <alexandre.belloni@bootlin.com>,
	"Claudiu Beznea" <claudiu.beznea@tuxon.dev>,
	"Jessica Zhang" <quic_jesszhan@quicinc.com>,
	"Paul Kocialkowski" <contact@paulk.fr>,
	"Dmitry Baryshkov" <dmitry.baryshkov@linaro.org>,
	"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>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Hervé Codina" <herve.codina@bootlin.com>,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-doc@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	"Paul Kocialkowski" <paul.kocialkowski@bootlin.com>
Subject: Re: [PATCH v6 14/26] drm/bridge: add support for refcounted DRM bridges
Date: Thu, 13 Mar 2025 12:56:56 +0100	[thread overview]
Message-ID: <20250313125656.70448d09@booty> (raw)
In-Reply-To: <20250207-ingenious-daffodil-dugong-51be57@houat>

Hello Maxime,

On Fri, 7 Feb 2025 12:47:51 +0100
Maxime Ripard <mripard@kernel.org> wrote:

> Hi,
> 
> On Thu, Feb 06, 2025 at 07:14:29PM +0100, Luca Ceresoli wrote:
> > DRM bridges are currently considered as a fixed element of a DRM card, and
> > thus their lifetime is assumed to extend for as long as the card
> > exists. New use cases, such as hot-pluggable hardware with video bridges,
> > require DRM bridges to be added and removed to a DRM card without tearing
> > the card down. This is possible for connectors already (used by DP MST), so
> > add this possibility to DRM bridges as well.
> > 
> > Implementation is based on drm_connector_init() as far as it makes sense,
> > and differs when it doesn't. A difference is that bridges are not exposed
> > to userspace, hence struct drm_bridge does not embed a struct
> > drm_mode_object which would provide the refcount. Instead we add to struct
> > drm_bridge a refcount field (we don't need other struct drm_mode_object
> > fields here) and instead of using the drm_mode_object_*() functions we
> > reimplement from those functions the few lines that drm_bridge needs for
> > refcounting.
> > 
> > Also add a new devm_drm_bridge_alloc() macro to allocate a new refcounted
> > bridge.
> > 
> > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>  
> 
> So, a couple of general comments:
> 
> - I've said it a couple of times already, but I really think you're
>   making it harder than necessary for you here. This (and only this!)
>   should be the very first series you should be pushing. The rest can
>   only ever work if that work goes through, and it's already hard enough
>   as it is. So, split that patch into a series of its own, get that
>   merged, and then we will be able to deal with panels conversion and
>   whatever. That's even more true with panels since there's ongoing work
>   that will make it easier for you too. So the best thing here is
>   probably to wait.
> 
> - This patch really needs to be split into several patches, something
>   along the lines of:
> 
>   + Creating devm_drm_bridge_alloc()
>   + Adding refcounting
>   + Taking the references in all the needed places
>   + Converting a bunch of drivers

After reading Anusha's "[PATCH RFC 0/2] drm/panel: Refcounted panel
allocation" [0] I think I need a clarification about the 4 steps you had
outlined in the above quoted text. Are you suggesting those are four
_series_, and you'd want to see a series only creating
devm_drm_bridge_alloc() as a first step, similarly to Anusha's work?

That was not my understanding so far, and so I've been working on a
series containing all 4 items, and it's growing very long due to item 3
needing to touch many dozen drivers which need to put a bridge (many
are identical oneliner patches though).

Luca

[0] https://lore.kernel.org/all/20250312-drm-panel-v1-0-e99cd69f6136@redhat.com/

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


  parent reply	other threads:[~2025-03-13 12:18 UTC|newest]

Thread overview: 131+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-06 18:14 [PATCH v6 00/26] Add support for hot-pluggable DRM bridges Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 01/26] drm/debugfs: fix printk format for bridge index Luca Ceresoli
2025-02-07  2:06   ` Dmitry Baryshkov
2025-02-07  2:06     ` Dmitry Baryshkov
2025-02-06 18:14 ` [PATCH v6 02/26] drm: of: drm_of_find_panel_or_bridge: move misplaced comment Luca Ceresoli
2025-02-07  2:20   ` Dmitry Baryshkov
2025-02-07  2:20     ` Dmitry Baryshkov
2025-02-06 18:14 ` [PATCH v6 03/26] drm/bridge: panel: use drm_bridge_is_panel() instead of open code Luca Ceresoli
2025-02-07  2:21   ` Dmitry Baryshkov
2025-02-07  2:21     ` Dmitry Baryshkov
2025-02-06 18:14 ` [PATCH v6 04/26] drm/bridge: panel: drm_panel_bridge_remove: warn when called on non-panel bridge Luca Ceresoli
2025-02-07  2:22   ` Dmitry Baryshkov
2025-02-07  2:22     ` Dmitry Baryshkov
2025-02-07  8:59     ` Luca Ceresoli
2025-02-07  8:59       ` Luca Ceresoli
2025-02-07  7:25   ` Maxime Ripard
2025-02-07  7:25     ` Maxime Ripard
2025-02-06 18:14 ` [PATCH v6 05/26] drm/debugfs: add top-level 'bridges' file showing all added bridges Luca Ceresoli
2025-02-07  2:41   ` Dmitry Baryshkov
2025-02-07  2:41     ` Dmitry Baryshkov
2025-02-07  8:54     ` Luca Ceresoli
2025-02-07  8:54       ` Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 06/26] drm/panel: move all code into bridge/panel.c Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 07/26] drm/bridge: panel: forbid initializing a panel with unknown connector type Luca Ceresoli
2025-02-07  2:44   ` Dmitry Baryshkov
2025-02-07  2:44     ` Dmitry Baryshkov
2025-02-06 18:14 ` [PATCH v6 08/26] drm/bridge: panel: add a panel_bridge to every panel Luca Ceresoli
2025-02-07  2:49   ` Dmitry Baryshkov
2025-02-07  2:49     ` Dmitry Baryshkov
2025-02-07  8:54     ` Luca Ceresoli
2025-02-07  8:54       ` Luca Ceresoli
2025-02-07 19:43       ` Dmitry Baryshkov
2025-02-07 19:43         ` Dmitry Baryshkov
2025-02-10 17:11         ` Luca Ceresoli
2025-02-10 17:11           ` Luca Ceresoli
2025-02-10 18:34   ` Maxime Ripard
2025-02-10 18:34     ` Maxime Ripard
2025-02-18  9:43     ` Chen-Yu Tsai
2025-02-18  9:43       ` Chen-Yu Tsai
2025-02-18 10:17       ` Maxime Ripard
2025-02-18 10:17         ` Maxime Ripard
2025-02-06 18:14 ` [PATCH v6 09/26] drm/bridge: move devm_drm_of_get_bridge and drmm_of_get_bridge to drm_bridge.c Luca Ceresoli
2025-02-07  2:52   ` Dmitry Baryshkov
2025-02-07  2:52     ` Dmitry Baryshkov
2025-02-07  8:54     ` Luca Ceresoli
2025-02-07  8:54       ` Luca Ceresoli
2025-02-07 19:47       ` Dmitry Baryshkov
2025-02-07 19:47         ` Dmitry Baryshkov
2025-02-06 18:14 ` [PATCH v6 10/26] drm/bridge: add devm_drm_of_get_bridge_by_node() Luca Ceresoli
2025-02-07  2:53   ` Dmitry Baryshkov
2025-02-07  2:53     ` Dmitry Baryshkov
2025-02-07  8:54     ` Luca Ceresoli
2025-02-07  8:54       ` Luca Ceresoli
2025-02-10 18:22   ` Maxime Ripard
2025-02-10 18:22     ` Maxime Ripard
2025-02-06 18:14 ` [PATCH v6 11/26] drm/bridge: samsung-dsim: use devm_drm_of_get_bridge[_by_node] to find the out_bridge Luca Ceresoli
2025-02-07  2:55   ` Dmitry Baryshkov
2025-02-07  2:55     ` Dmitry Baryshkov
2025-02-07  8:54     ` Luca Ceresoli
2025-02-07  8:54       ` Luca Ceresoli
2025-02-10 18:23   ` Maxime Ripard
2025-02-10 18:23     ` Maxime Ripard
2025-02-06 18:14 ` [PATCH v6 12/26] drm/bridge: allow bridges to be informed about added and removed bridges Luca Ceresoli
2025-02-07  3:01   ` Dmitry Baryshkov
2025-02-07  3:01     ` Dmitry Baryshkov
2025-02-06 18:14 ` [PATCH v6 13/26] drm/encoder: add drm_encoder_cleanup_from() Luca Ceresoli
2025-02-07  3:03   ` Dmitry Baryshkov
2025-02-07  3:03     ` Dmitry Baryshkov
2025-02-07  8:53     ` Luca Ceresoli
2025-02-07  8:53       ` Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 14/26] drm/bridge: add support for refcounted DRM bridges Luca Ceresoli
2025-02-07 11:47   ` Maxime Ripard
2025-02-07 11:47     ` Maxime Ripard
2025-02-07 19:54     ` Dmitry Baryshkov
2025-02-07 19:54       ` Dmitry Baryshkov
2025-02-10 12:31       ` Maxime Ripard
2025-02-10 12:31         ` Maxime Ripard
2025-02-10 14:23         ` Dmitry Baryshkov
2025-02-10 14:23           ` Dmitry Baryshkov
2025-02-10 17:12           ` Luca Ceresoli
2025-02-10 17:12             ` Luca Ceresoli
2025-02-10 18:16             ` Maxime Ripard
2025-02-10 18:16               ` Maxime Ripard
2025-02-10 18:17           ` Maxime Ripard
2025-02-10 18:17             ` Maxime Ripard
2025-02-10 17:12       ` Luca Ceresoli
2025-02-10 17:12         ` Luca Ceresoli
2025-02-10 23:14         ` Dmitry Baryshkov
2025-02-10 23:14           ` Dmitry Baryshkov
2025-02-11  8:48           ` Maxime Ripard
2025-02-11  8:48             ` Maxime Ripard
2025-02-12  0:55             ` Dmitry Baryshkov
2025-02-12  0:55               ` Dmitry Baryshkov
2025-02-12 10:08               ` Maxime Ripard
2025-02-12 10:08                 ` Maxime Ripard
2025-02-10 17:12     ` Luca Ceresoli
2025-02-10 17:12       ` Luca Ceresoli
2025-02-11 13:10       ` Maxime Ripard
2025-02-11 13:10         ` Maxime Ripard
2025-02-26 14:28         ` Luca Ceresoli
2025-02-26 14:28           ` Luca Ceresoli
2025-02-27  9:32           ` Maxime Ripard
2025-02-27  9:32             ` Maxime Ripard
2025-02-27 11:31             ` Luca Ceresoli
2025-02-27 11:31               ` Luca Ceresoli
2025-02-27 14:39               ` Maxime Ripard
2025-02-27 14:39                 ` Maxime Ripard
2025-03-13 11:56     ` Luca Ceresoli [this message]
2025-03-13 18:07       ` Maxime Ripard
2025-03-14  8:11         ` Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 15/26] drm/bridge: devm_drm_of_get_bridge and drmm_of_get_bridge: automatically put the bridge Luca Ceresoli
2025-02-07  3:17   ` Dmitry Baryshkov
2025-02-07  3:17     ` Dmitry Baryshkov
2025-02-07 10:44     ` Luca Ceresoli
2025-02-07 10:44       ` Luca Ceresoli
2025-02-07 19:57       ` Dmitry Baryshkov
2025-02-07 19:57         ` Dmitry Baryshkov
2025-02-10 18:00         ` Luca Ceresoli
2025-02-10 18:00           ` Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 16/26] drm/bridge: increment refcount in of_drm_find_bridge() Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 17/26] drm/bridge: add devm_drm_put_bridge() and devm_drm_put_and_clear_bridge() Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 18/26] drm/bridge: add documentation of refcounted bridges Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 19/26] drm/tests: bridge: add KUnit tests for DRM bridges (init and destroy) Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 20/26] drm/debugfs: bridges_show: show refcount Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 21/26] drm/bridge: add list of removed refcounted bridges Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 22/26] drm/debugfs: show removed bridges Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 23/26] drm/bridge: samsung-dsim: use refcounting for the out_bridge Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 24/26] drm/bridge: panel: use dynamic lifetime management Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 25/26] drm/bridge: ti-sn65dsi83: " Luca Ceresoli
2025-02-06 18:14 ` [PATCH v6 26/26] drm/bridge: hotplug-bridge: add driver to support hot-pluggable DSI bridges Luca Ceresoli
2025-02-07  9:01 ` [PATCH v6 00/26] Add support for hot-pluggable DRM bridges 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=20250313125656.70448d09@booty \
    --to=luca.ceresoli@bootlin.com \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=andrzej.hajda@intel.com \
    --cc=bbrezillon@kernel.org \
    --cc=catalin.marinas@arm.com \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=contact@paulk.fr \
    --cc=corbet@lwn.net \
    --cc=danielt@kernel.org \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=festevam@gmail.com \
    --cc=herve.codina@bootlin.com \
    --cc=inki.dae@samsung.com \
    --cc=jagan@amarulasolutions.com \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.szyprowski@samsung.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=neil.armstrong@linaro.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=paul.kocialkowski@bootlin.com \
    --cc=quic_jesszhan@quicinc.com \
    --cc=rfoss@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=sam@ravnborg.org \
    --cc=shawnguo@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=tzimmermann@suse.de \
    --cc=will@kernel.org \
    /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.