From: "Luca Ceresoli" <luca.ceresoli@bootlin.com>
To: "Jani Nikula" <jani.nikula@linux.intel.com>,
"Luca Ceresoli" <luca.ceresoli@bootlin.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>,
"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>,
"Jessica Zhang" <jesszhan0024@gmail.com>,
"Linus Walleij" <linusw@kernel.org>,
"Inki Dae" <inki.dae@samsung.com>,
"Jagan Teki" <jagan@amarulasolutions.com>,
"Marek Szyprowski" <m.szyprowski@samsung.com>
Cc: "Albert Esteve" <aesteve@redhat.com>,
"Anusha Srivatsa" <asrivats@redhat.com>,
"Dmitry Baryshkov" <dmitry.baryshkov@oss.qualcomm.com>,
"Hui Pu" <Hui.Pu@gehealthcare.com>,
"Ian Ray" <ian.ray@gehealthcare.com>,
"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
"Ville Syrjälä" <ville.syrjala@linux.intel.com>
Subject: Re: [PATCH RFC v2 05/19] drm/panel: embed a drm_bridge into every drm_panel
Date: Wed, 09 Sep 2026 09:52:05 +0200 [thread overview]
Message-ID: <DLAMF47GKNSA.1PJ5V8Z86U1C6@bootlin.com> (raw)
In-Reply-To: <678ddef7e56703d9adffff5c490d4857af515343@intel.com>
Hello Jani,
On Tue Sep 8, 2026 at 6:18 PM CEST, Jani Nikula wrote:
> On Thu, 03 Sep 2026, Luca Ceresoli <luca.ceresoli@bootlin.com> wrote:
>> Adding a drm_panel does currently not add a panel_bridge wrapping
>> it. Usually the panel_bridge creation happens later, when some other driver
>> (e.g. the previous bridge or the encoder) calls *_of_get_bridge() and the
>> following element in the pipeline is a panel.
>>
>> This has some drawbacks:
>>
>> * the bridge API is currently the best practice to access various
>> components of the pipeline, especially with complex cards where bridges
>> can be combined in different ways on different hardware
>> * the panel_bridge is not created in the context of the driver of the
>> underlying physical device (the panel driver), but of some other driver
>> * that other driver is not aware of whether the returned drm_bridge
>> pointer is a panel_bridge created on the fly, a pre-existing
>> panel_bridge or a non-panel bridge
>> * removal of a panel_bridge requires calling drm_panel_bridge_remove(),
>> but that other driver doesn't know whether this is needed because it
>> doesn't know whether it has created a panel_bridge or not
>>
>> Other drivers call [a variant of] drm_panel_bridge_add(), which also has
>> some of the above drawbacks.
>>
>> So far the current approach was working mostly because devm and drmm ensure
>> the panel bridge would be dealloacted at some later point. However with the
>> upcoming implementation of bridge hotplug and dynamic bridge lifetime this
>> will get more complicated.
>>
>> Switch to the new approach: embed a drm_bridge inside every drm_panel,
>> which behaves just like the current drm_panel_bridge.
>
> What does this mean for drivers like i915 that use drm_panel *only* for
> handling panel followers? We don't need the bridge for anything. It'll
> just be excess midlayer baggage.
i915 does not call drm_bridge_attach() nor drm_bridge_add(), right? So the
newly embedded bridge would not even be observable, it would not even be in
the global bridge_list. The only effect would be some extra allocated
memory.
> I'm also concerned about the embedded struct drm_connector being added,
> since that can't and will not be a drm_connector that we'll use.
The drm_connector is added only if drm_bridge_attach() is called (with the
DRM_BRIDGE_ATTACH_NO_CONNECTOR flag not set). As above, i915 does not call
drm_bridge_attach() at all, so no drm_connector is added.
> All of
> our drm_connector are embedded in intel_connector, and all of our
> codebase expects this, and we init them ourselves. Having additional
> drm_connector (not embedded in intel_connector) added by library code
> *will* oops in our driver.
It would be great if you could test this series (even without reviewing if
you can't). Based on my analysis above there should be no regression, and
having that confirmed runtime would be helpful.
And if you can review, this is the one patch that matters. The following
only affect bridge-based drivers. The previous ones are about moving code
around across modules and will be different in v4.
> I haven't had the time for an in-depth look, but it feels like this
> assumes a certain driver model, instead of providing building blocks for
> drivers to use.
For drivers not using drm_bridge, this patch should be just implementation
details changes and some more allocated memory.
Luca
--
Luca Ceresoli, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
next prev parent reply other threads:[~2026-09-09 7:52 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-03 8:11 [PATCH RFC v2 00/19] " Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 01/19] drm: of: move drm_of_find_panel_or_bridge() from drm_of.c to bridge/panel.c Luca Ceresoli
2026-09-03 9:51 ` Maxime Ripard
2026-09-03 13:42 ` Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 02/19] drm/bridge: panel: move to a new module Luca Ceresoli
2026-09-03 9:59 ` Maxime Ripard
2026-09-03 8:11 ` [PATCH RFC v2 03/19] drm/panel: " Luca Ceresoli
2026-09-03 9:59 ` Maxime Ripard
2026-09-03 8:11 ` [PATCH RFC v2 04/19] drm/bridge: panel: rename drm_bridge_is_panel() -> drm_bridge_is_panel_bridge() Luca Ceresoli
2026-09-03 13:59 ` Albert Esteve
2026-09-03 15:38 ` Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 05/19] drm/panel: embed a drm_bridge into every drm_panel Luca Ceresoli
2026-09-03 10:22 ` Maxime Ripard
2026-09-03 13:37 ` Luca Ceresoli
2026-09-08 15:21 ` Maxime Ripard
2026-09-08 16:18 ` Jani Nikula
2026-09-09 7:52 ` Luca Ceresoli [this message]
2026-09-09 9:57 ` Maxime Ripard
2026-09-09 14:02 ` Jani Nikula
2026-09-09 14:28 ` Maxime Ripard
2026-09-09 15:57 ` Jani Nikula
2026-09-10 7:03 ` Maxime Ripard
2026-09-03 8:11 ` [PATCH RFC v2 06/19] drm/bridge: tc358767: don't create a panel_bridge Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 07/19] drm/bridge: waveshare-dsi: " Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 08/19] drm/mcde: dsi: simplify device_node management using scoped for_each variant Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 09/19] drm/mcde: dsi: remove unused includes Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 10/19] drm/mcde: dsi: don't create a panel_bridge Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 11/19] drm/bridge: fsl-ldb: " Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 12/19] drm/bridge: samsung-dsim: " Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 13/19] drm/bridge: tc358768: " Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 14/19] drm/bridge: ssd2825: " Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 15/19] drm/omap: dsi: remove unused includes Luca Ceresoli
2026-09-03 10:24 ` Maxime Ripard
2026-09-03 8:11 ` [PATCH RFC v2 16/19] drm/omap: dss: don't create a panel_bridge Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 17/19] drm/tve200: remove unused includes Luca Ceresoli
2026-09-03 10:25 ` Maxime Ripard
2026-09-03 8:11 ` [PATCH RFC v2 18/19] drm/tve200: don't create a panel_bridge Luca Ceresoli
2026-09-03 8:11 ` [PATCH RFC v2 19/19] drm/bridge: analogix_dp: " 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=DLAMF47GKNSA.1PJ5V8Z86U1C6@bootlin.com \
--to=luca.ceresoli@bootlin.com \
--cc=Hui.Pu@gehealthcare.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=aesteve@redhat.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=asrivats@redhat.com \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=ian.ray@gehealthcare.com \
--cc=inki.dae@samsung.com \
--cc=jagan@amarulasolutions.com \
--cc=jani.nikula@linux.intel.com \
--cc=jernej.skrabec@gmail.com \
--cc=jesszhan0024@gmail.com \
--cc=jonas@kwiboo.se \
--cc=linusw@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=rfoss@kernel.org \
--cc=simona@ffwll.ch \
--cc=thomas.petazzoni@bootlin.com \
--cc=tzimmermann@suse.de \
--cc=ville.syrjala@linux.intel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®