[PATCH 2/2] drm/tidss: Fix missing drm_bridge_attach() call

Tomi Valkeinen posted 2 patches 4 weeks ago
There is a newer version of this series
[PATCH 2/2] drm/tidss: Fix missing drm_bridge_attach() call
Posted by Tomi Valkeinen 4 weeks ago
tidss encoder-bridge is not added with drm_bridge_add() call, which
leads to:

[drm] Missing drm_bridge_add() before attach

Add the missing call, using devm_drm_bridge_add() variant to get the
drm_bridge_remove() handled automatically.

The commit marked with the Fixes tag (from v6.6) is the commit that
added the encoder bridge without drm_bridge_add(). However, this fix is
not directly applicable there as devm_drm_bridge_alloc() was not used to
alloc the bridge, so using devm version for drm_bridge_add() wouldn't be
safe. Instead, drm_bridge_add() and drm_bridge_remove() would be needed
there, but that would require new plumbing code as we don't have a
separate cleanup function in the tidss_encoder.c, not in the tidss_kms.c
from which the encoder is created.

Also, there has been no reported bugs caused by the missing
drm_bridge_add(). The drm_bridge_add() initializes the bridge's
hpd_mutex, but HPD is not used for the encoder bridge. drm_bridge_add()
also adds the bridge to the global bridge_list, which is only used in
of_drm_find_bridge(), and again that is not used for the encoder bridge.

Thus, while the original commit is not right, there should be no bugs
caused by it, and for the time being I'm not sending a patch for the
stable kernels for the original commit.

This fix applies on top of commit 66cdf05f8548 ("drm/tidss: encoder:
convert to devm_drm_bridge_alloc()"), which changes the tidss_encoder.c
to use the devm variant (added in v6.17). The warning print was added in
v6.19, so applying this fix to v6.17+ gets rid of the warning for all
kernel versions.

Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Cc: <stable@vger.kernel.org> # v6.17+
Fixes: c932ced6b585 ("drm/tidss: Update encoder/bridge chain connect model")
---
 drivers/gpu/drm/tidss/tidss_encoder.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/tidss/tidss_encoder.c b/drivers/gpu/drm/tidss/tidss_encoder.c
index 81a04f767770..db467bbcdb77 100644
--- a/drivers/gpu/drm/tidss/tidss_encoder.c
+++ b/drivers/gpu/drm/tidss/tidss_encoder.c
@@ -106,6 +106,8 @@ int tidss_encoder_create(struct tidss_device *tidss,
 	enc = &t_enc->encoder;
 	enc->possible_crtcs = possible_crtcs;
 
+	devm_drm_bridge_add(tidss->dev, &t_enc->bridge);
+
 	/* Attaching first bridge to the encoder */
 	ret = drm_bridge_attach(enc, &t_enc->bridge, NULL,
 				DRM_BRIDGE_ATTACH_NO_CONNECTOR);

-- 
2.43.0
Re: [PATCH 2/2] drm/tidss: Fix missing drm_bridge_attach() call
Posted by Maxime Ripard 4 weeks ago
On Wed, Mar 11, 2026 at 10:16:29AM +0200, Tomi Valkeinen wrote:
> tidss encoder-bridge is not added with drm_bridge_add() call, which
> leads to:
> 
> [drm] Missing drm_bridge_add() before attach
> 
> Add the missing call, using devm_drm_bridge_add() variant to get the
> drm_bridge_remove() handled automatically.

The patch itself is fine, but the commit title mentions a missing
drm_bridge_attach() call when it should be drm_bridge_add()

With that fixed
Acked-by: Maxime Ripard <mripard@kernel.org>

Maxime
Re: [PATCH 2/2] drm/tidss: Fix missing drm_bridge_attach() call
Posted by Tomi Valkeinen 4 weeks ago
Hi,

On 11/03/2026 11:08, Maxime Ripard wrote:
> On Wed, Mar 11, 2026 at 10:16:29AM +0200, Tomi Valkeinen wrote:
>> tidss encoder-bridge is not added with drm_bridge_add() call, which
>> leads to:
>>
>> [drm] Missing drm_bridge_add() before attach
>>
>> Add the missing call, using devm_drm_bridge_add() variant to get the
>> drm_bridge_remove() handled automatically.
> 
> The patch itself is fine, but the commit title mentions a missing
> drm_bridge_attach() call when it should be drm_bridge_add()
> 
> With that fixed
> Acked-by: Maxime Ripard <mripard@kernel.org>
Indeed. Fixed in v2. Thanks!

 Tomi