From: Luca Ceresoli <luca.ceresoli@bootlin.com>
To: 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>, Marek Vasut <marex@denx.de>,
Stefan Agner <stefan@agner.ch>, Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Pengutronix Kernel Team <kernel@pengutronix.de>,
Fabio Estevam <festevam@gmail.com>,
Inki Dae <inki.dae@samsung.com>,
Jagan Teki <jagan@amarulasolutions.com>,
Marek Szyprowski <m.szyprowski@samsung.com>
Cc: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
"Anusha Srivatsa" <asrivats@redhat.com>,
"Paul Kocialkowski" <paulk@sys-base.io>,
"Dmitry Baryshkov" <lumag@kernel.org>,
"Hervé Codina" <herve.codina@bootlin.com>,
"Hui Pu" <Hui.Pu@gehealthcare.com>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org,
imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org,
"Luca Ceresoli" <luca.ceresoli@bootlin.com>
Subject: [PATCH v7 08/11] drm/atomic-helper: put the bridge returned by drm_bridge_chain_get_first_bridge()
Date: Fri, 14 Mar 2025 11:31:21 +0100 [thread overview]
Message-ID: <20250314-drm-bridge-refcount-v7-8-152571f8c694@bootlin.com> (raw)
In-Reply-To: <20250314-drm-bridge-refcount-v7-0-152571f8c694@bootlin.com>
The bridge returned by drm_bridge_chain_get_first_bridge() is
refcounted. Put it when done.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Note: I suspect most or all of the involved functions here could just
receive the encoder instead of the first bridge in the chain, and then walk
the encoder chain on their own. For the sake of simplicity and to show how
to put a bridge in general I've kept this patch in this form, for the time
being.
This patch was added in v7.
---
drivers/gpu/drm/drm_atomic_helper.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c
index 5302ab3248985d3e0a47e40fd3deb7ad0d9f775b..fcd9139ef98e9f57659b7e447cf57702e99a5165 100644
--- a/drivers/gpu/drm/drm_atomic_helper.c
+++ b/drivers/gpu/drm/drm_atomic_helper.c
@@ -455,6 +455,7 @@ mode_fixup(struct drm_atomic_state *state)
ret = drm_atomic_bridge_chain_check(bridge,
new_crtc_state,
new_conn_state);
+ drm_bridge_put(bridge);
if (ret) {
drm_dbg_atomic(encoder->dev, "Bridge atomic check failed\n");
return ret;
@@ -526,6 +527,7 @@ static enum drm_mode_status mode_valid_path(struct drm_connector *connector,
bridge = drm_bridge_chain_get_first_bridge(encoder);
ret = drm_bridge_chain_mode_valid(bridge, &connector->display_info,
mode);
+ drm_bridge_put(bridge);
if (ret != MODE_OK) {
drm_dbg_atomic(encoder->dev, "[BRIDGE] mode_valid() failed\n");
return ret;
@@ -1226,6 +1228,7 @@ disable_outputs(struct drm_device *dev, struct drm_atomic_state *state)
}
drm_atomic_bridge_chain_post_disable(bridge, state);
+ drm_bridge_put(bridge);
}
for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
@@ -1433,6 +1436,7 @@ crtc_set_mode(struct drm_device *dev, struct drm_atomic_state *state)
bridge = drm_bridge_chain_get_first_bridge(encoder);
drm_bridge_chain_mode_set(bridge, mode, adjusted_mode);
+ drm_bridge_put(bridge);
}
}
@@ -1564,6 +1568,7 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
}
drm_atomic_bridge_chain_enable(bridge, state);
+ drm_bridge_put(bridge);
}
drm_atomic_helper_commit_writebacks(dev, state);
--
2.48.1
next prev parent reply other threads:[~2025-03-14 10:47 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-14 10:31 [PATCH v7 00/11] drm/bridge: add devm_drm_bridge_alloc() with bridge refcount Luca Ceresoli
2025-03-14 10:31 ` [PATCH v7 01/11] drm/bridge: add devm_drm_bridge_alloc() Luca Ceresoli
2025-03-14 17:58 ` Maxime Ripard
2025-03-14 10:31 ` [PATCH v7 02/11] drm/bridge: add support for refcounting Luca Ceresoli
2025-03-14 18:04 ` Maxime Ripard
2025-03-17 14:56 ` Luca Ceresoli
2025-03-14 10:31 ` [PATCH v7 03/11] drm/bridge: get/put the bridge reference in drm_bridge_add/remove() Luca Ceresoli
2025-03-14 18:04 ` Maxime Ripard
2025-03-14 10:31 ` [PATCH v7 04/11] drm/bridge: get/put the bridge reference in drm_bridge_attach/detach() Luca Ceresoli
2025-03-14 18:05 ` Maxime Ripard
2025-03-14 10:31 ` [PATCH v7 05/11] drm/bridge: add a cleanup action for scope-based drm_bridge_put() invocation Luca Ceresoli
2025-03-14 18:08 ` Maxime Ripard
2025-03-17 14:57 ` Luca Ceresoli
2025-03-14 10:31 ` [PATCH v7 06/11] drm/bridge: get the bridge returned by drm_bridge_chain_get_first_bridge() Luca Ceresoli
2025-03-14 18:10 ` Maxime Ripard
2025-03-17 14:57 ` Luca Ceresoli
2025-03-14 10:31 ` [PATCH v7 07/11] drm/mxsfb: put " Luca Ceresoli
2025-03-14 18:11 ` Maxime Ripard
2025-03-14 10:31 ` Luca Ceresoli [this message]
2025-03-14 18:12 ` [PATCH v7 08/11] drm/atomic-helper: " Maxime Ripard
2025-03-14 10:31 ` [PATCH v7 09/11] drm/probe-helper: " Luca Ceresoli
2025-03-14 18:12 ` Maxime Ripard
2025-03-14 10:31 ` [PATCH v7 10/11] drm/bridge: ti-sn65dsi83: use dynamic lifetime management Luca Ceresoli
2025-03-14 18:17 ` Maxime Ripard
2025-03-14 10:31 ` [PATCH v7 11/11] drm/bridge: samsung-dsim: " Luca Ceresoli
2025-03-14 18:18 ` Maxime Ripard
2025-03-14 18:21 ` [PATCH v7 00/11] drm/bridge: add devm_drm_bridge_alloc() with bridge refcount Maxime Ripard
2025-03-17 14:56 ` Luca Ceresoli
2025-03-19 16:16 ` Maxime Ripard
2025-03-20 7:41 ` 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=20250314-drm-bridge-refcount-v7-8-152571f8c694@bootlin.com \
--to=luca.ceresoli@bootlin.com \
--cc=Hui.Pu@gehealthcare.com \
--cc=Laurent.pinchart@ideasonboard.com \
--cc=airlied@gmail.com \
--cc=andrzej.hajda@intel.com \
--cc=asrivats@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=festevam@gmail.com \
--cc=herve.codina@bootlin.com \
--cc=imx@lists.linux.dev \
--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-kernel@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=m.szyprowski@samsung.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marex@denx.de \
--cc=mripard@kernel.org \
--cc=neil.armstrong@linaro.org \
--cc=paulk@sys-base.io \
--cc=rfoss@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=simona@ffwll.ch \
--cc=stefan@agner.ch \
--cc=thomas.petazzoni@bootlin.com \
--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;
as well as URLs for NNTP newsgroup(s).