* [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression
@ 2025-10-14 11:30 Luca Ceresoli
2025-10-14 11:30 ` [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API Luca Ceresoli
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Luca Ceresoli @ 2025-10-14 11:30 UTC (permalink / raw)
To: Ernest Van Hoecke, Philipp Zabel, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: Hui Pu, Thomas Petazzoni, dri-devel, imx, linux-arm-kernel,
linux-kernel, Luca Ceresoli
This series fixes the WARNING regressions reported by Ernest [0] and due to
the missing conversion of the DRM_IMX driver to the new
devm_drm_bridge_alloc() API.
The second patch also adds drm_bridge_add(), which is a good practice and
proposed to become mandatory [1].
[0] https://lore.kernel.org/all/hlf4wdopapxnh4rekl5s3kvoi6egaga3lrjfbx6r223ar3txri@3ik53xw5idyh/
[1] https://lore.kernel.org/lkml/20251003-b4-drm-bridge-alloc-add-before-attach-v1-0-92fb40d27704@bootlin.com/
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Luca Ceresoli (2):
drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API
drm/imx: parallel-display: add the bridge before attaching it
drivers/gpu/drm/imx/ipuv3/parallel-display.c | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
---
base-commit: 48a710760e10a4f36e11233a21860796ba204b1e
change-id: 20251014-drm-bridge-alloc-imx-ipuv3-9b792f659cf9
Best regards,
--
Luca Ceresoli <luca.ceresoli@bootlin.com>
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API
2025-10-14 11:30 [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression Luca Ceresoli
@ 2025-10-14 11:30 ` Luca Ceresoli
2025-10-14 11:57 ` Ernest Van Hoecke
2025-10-30 14:18 ` Louis Chauvet
2025-10-14 11:30 ` [PATCH 2/2] drm/imx: parallel-display: add the bridge before attaching it Luca Ceresoli
2025-10-30 15:59 ` [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression Philipp Zabel
2 siblings, 2 replies; 7+ messages in thread
From: Luca Ceresoli @ 2025-10-14 11:30 UTC (permalink / raw)
To: Ernest Van Hoecke, Philipp Zabel, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: Hui Pu, Thomas Petazzoni, dri-devel, imx, linux-arm-kernel,
linux-kernel, Luca Ceresoli
This is the new API for allocating DRM bridges.
This conversion was missed during the initial conversion of all bridges to
the new API. Thus all kernels with commit 94d50c1a2ca3 ("drm/bridge:
get/put the bridge reference in drm_bridge_attach/detach()") and using this
driver now warn due to drm_bridge_attach() incrementing the refcount, which
is not initialized without using devm_drm_bridge_alloc() for allocation.
To make the conversion simple and straightforward without messing up with
the drmm_simple_encoder_alloc(), move the struct drm_bridge from struct
imx_parallel_display_encoder to struct imx_parallel_display.
Also remove the 'struct imx_parallel_display *pd' from struct
imx_parallel_display_encoder, not needed anymore.
Fixes: 94d50c1a2ca3 ("drm/bridge: get/put the bridge reference in drm_bridge_attach/detach()")
Reported-by: Ernest Van Hoecke <ernestvanhoecke@gmail.com>
Closes: https://lore.kernel.org/all/hlf4wdopapxnh4rekl5s3kvoi6egaga3lrjfbx6r223ar3txri@3ik53xw5idyh/
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
drivers/gpu/drm/imx/ipuv3/parallel-display.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/imx/ipuv3/parallel-display.c b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
index 6d8325c766979aa3ba98970f00806e99c139d3c3..3d0de9c6e925978b7532b6d13caf6909cc343dd7 100644
--- a/drivers/gpu/drm/imx/ipuv3/parallel-display.c
+++ b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
@@ -25,19 +25,18 @@
struct imx_parallel_display_encoder {
struct drm_encoder encoder;
- struct drm_bridge bridge;
- struct imx_parallel_display *pd;
};
struct imx_parallel_display {
struct device *dev;
u32 bus_format;
struct drm_bridge *next_bridge;
+ struct drm_bridge bridge;
};
static inline struct imx_parallel_display *bridge_to_imxpd(struct drm_bridge *b)
{
- return container_of(b, struct imx_parallel_display_encoder, bridge)->pd;
+ return container_of(b, struct imx_parallel_display, bridge);
}
static const u32 imx_pd_bus_fmts[] = {
@@ -195,15 +194,13 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
if (IS_ERR(imxpd_encoder))
return PTR_ERR(imxpd_encoder);
- imxpd_encoder->pd = imxpd;
encoder = &imxpd_encoder->encoder;
- bridge = &imxpd_encoder->bridge;
+ bridge = &imxpd->bridge;
ret = imx_drm_encoder_parse_of(drm, encoder, imxpd->dev->of_node);
if (ret)
return ret;
- bridge->funcs = &imx_pd_bridge_funcs;
drm_bridge_attach(encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);
connector = drm_bridge_connector_init(drm, encoder);
@@ -228,9 +225,10 @@ static int imx_pd_probe(struct platform_device *pdev)
u32 bus_format = 0;
const char *fmt;
- imxpd = devm_kzalloc(dev, sizeof(*imxpd), GFP_KERNEL);
- if (!imxpd)
- return -ENOMEM;
+ imxpd = devm_drm_bridge_alloc(dev, struct imx_parallel_display, bridge,
+ &imx_pd_bridge_funcs);
+ if (IS_ERR(imxpd))
+ return PTR_ERR(imxpd);
/* port@1 is the output port */
imxpd->next_bridge = devm_drm_of_get_bridge(dev, np, 1, 0);
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] drm/imx: parallel-display: add the bridge before attaching it
2025-10-14 11:30 [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression Luca Ceresoli
2025-10-14 11:30 ` [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API Luca Ceresoli
@ 2025-10-14 11:30 ` Luca Ceresoli
2025-10-30 14:20 ` Louis Chauvet
2025-10-30 15:59 ` [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression Philipp Zabel
2 siblings, 1 reply; 7+ messages in thread
From: Luca Ceresoli @ 2025-10-14 11:30 UTC (permalink / raw)
To: Ernest Van Hoecke, Philipp Zabel, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: Hui Pu, Thomas Petazzoni, dri-devel, imx, linux-arm-kernel,
linux-kernel, Luca Ceresoli
Invoking drm_bridge_add() is good practice, so add it to this driver.
Link: https://lore.kernel.org/all/DDHZ5GO9MPF0.CGYTVBI74FOZ@bootlin.com
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Note: there is a proposal to make drm_bridge_add() mandatory before
drm_bridge_attach():
https://lore.kernel.org/lkml/20251003-b4-drm-bridge-alloc-add-before-attach-v1-3-92fb40d27704@bootlin.com/
---
drivers/gpu/drm/imx/ipuv3/parallel-display.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/imx/ipuv3/parallel-display.c b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
index 3d0de9c6e925978b7532b6d13caf6909cc343dd7..7fc6af7033078eef6be0672ff0d1c7bddda88ba1 100644
--- a/drivers/gpu/drm/imx/ipuv3/parallel-display.c
+++ b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
@@ -256,6 +256,8 @@ static int imx_pd_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, imxpd);
+ devm_drm_bridge_add(dev, &imxpd->bridge);
+
return component_add(dev, &imx_pd_ops);
}
--
2.51.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API
2025-10-14 11:30 ` [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API Luca Ceresoli
@ 2025-10-14 11:57 ` Ernest Van Hoecke
2025-10-30 14:18 ` Louis Chauvet
1 sibling, 0 replies; 7+ messages in thread
From: Ernest Van Hoecke @ 2025-10-14 11:57 UTC (permalink / raw)
To: Luca Ceresoli
Cc: Philipp Zabel, Maarten Lankhorst, Maxime Ripard,
Thomas Zimmermann, David Airlie, Simona Vetter, Shawn Guo,
Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Hui Pu,
Thomas Petazzoni, dri-devel, imx, linux-arm-kernel, linux-kernel
On Tue, Oct 14, 2025 at 01:30:51PM +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> This conversion was missed during the initial conversion of all bridges to
> the new API. Thus all kernels with commit 94d50c1a2ca3 ("drm/bridge:
> get/put the bridge reference in drm_bridge_attach/detach()") and using this
> driver now warn due to drm_bridge_attach() incrementing the refcount, which
> is not initialized without using devm_drm_bridge_alloc() for allocation.
>
> To make the conversion simple and straightforward without messing up with
> the drmm_simple_encoder_alloc(), move the struct drm_bridge from struct
> imx_parallel_display_encoder to struct imx_parallel_display.
>
> Also remove the 'struct imx_parallel_display *pd' from struct
> imx_parallel_display_encoder, not needed anymore.
>
> Fixes: 94d50c1a2ca3 ("drm/bridge: get/put the bridge reference in drm_bridge_attach/detach()")
> Reported-by: Ernest Van Hoecke <ernestvanhoecke@gmail.com>
> Closes: https://lore.kernel.org/all/hlf4wdopapxnh4rekl5s3kvoi6egaga3lrjfbx6r223ar3txri@3ik53xw5idyh/
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Applying fixed all the WARNING regressions I saw before, thanks!
Tested-by: Ernest Van Hoecke <ernest.vanhoecke@toradex.com>
Kind regards,
Ernest
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API
2025-10-14 11:30 ` [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-10-14 11:57 ` Ernest Van Hoecke
@ 2025-10-30 14:18 ` Louis Chauvet
1 sibling, 0 replies; 7+ messages in thread
From: Louis Chauvet @ 2025-10-30 14:18 UTC (permalink / raw)
To: Luca Ceresoli, Ernest Van Hoecke, Philipp Zabel,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam
Cc: Hui Pu, Thomas Petazzoni, dri-devel, imx, linux-arm-kernel,
linux-kernel
Le 14/10/2025 à 13:30, Luca Ceresoli a écrit :
> This is the new API for allocating DRM bridges.
>
> This conversion was missed during the initial conversion of all bridges to
> the new API. Thus all kernels with commit 94d50c1a2ca3 ("drm/bridge:
> get/put the bridge reference in drm_bridge_attach/detach()") and using this
> driver now warn due to drm_bridge_attach() incrementing the refcount, which
> is not initialized without using devm_drm_bridge_alloc() for allocation.
>
> To make the conversion simple and straightforward without messing up with
> the drmm_simple_encoder_alloc(), move the struct drm_bridge from struct
> imx_parallel_display_encoder to struct imx_parallel_display.
>
> Also remove the 'struct imx_parallel_display *pd' from struct
> imx_parallel_display_encoder, not needed anymore.
>
> Fixes: 94d50c1a2ca3 ("drm/bridge: get/put the bridge reference in drm_bridge_attach/detach()")
> Reported-by: Ernest Van Hoecke <ernestvanhoecke@gmail.com>
> Closes: https://lore.kernel.org/all/hlf4wdopapxnh4rekl5s3kvoi6egaga3lrjfbx6r223ar3txri@3ik53xw5idyh/
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com>
> ---
> drivers/gpu/drm/imx/ipuv3/parallel-display.c | 16 +++++++---------
> 1 file changed, 7 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/imx/ipuv3/parallel-display.c b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
> index 6d8325c766979aa3ba98970f00806e99c139d3c3..3d0de9c6e925978b7532b6d13caf6909cc343dd7 100644
> --- a/drivers/gpu/drm/imx/ipuv3/parallel-display.c
> +++ b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
> @@ -25,19 +25,18 @@
>
> struct imx_parallel_display_encoder {
> struct drm_encoder encoder;
> - struct drm_bridge bridge;
> - struct imx_parallel_display *pd;
> };
>
> struct imx_parallel_display {
> struct device *dev;
> u32 bus_format;
> struct drm_bridge *next_bridge;
> + struct drm_bridge bridge;
> };
>
> static inline struct imx_parallel_display *bridge_to_imxpd(struct drm_bridge *b)
> {
> - return container_of(b, struct imx_parallel_display_encoder, bridge)->pd;
> + return container_of(b, struct imx_parallel_display, bridge);
> }
>
> static const u32 imx_pd_bus_fmts[] = {
> @@ -195,15 +194,13 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
> if (IS_ERR(imxpd_encoder))
> return PTR_ERR(imxpd_encoder);
>
> - imxpd_encoder->pd = imxpd;
> encoder = &imxpd_encoder->encoder;
> - bridge = &imxpd_encoder->bridge;
> + bridge = &imxpd->bridge;
>
> ret = imx_drm_encoder_parse_of(drm, encoder, imxpd->dev->of_node);
> if (ret)
> return ret;
>
> - bridge->funcs = &imx_pd_bridge_funcs;
> drm_bridge_attach(encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR);
>
> connector = drm_bridge_connector_init(drm, encoder);
> @@ -228,9 +225,10 @@ static int imx_pd_probe(struct platform_device *pdev)
> u32 bus_format = 0;
> const char *fmt;
>
> - imxpd = devm_kzalloc(dev, sizeof(*imxpd), GFP_KERNEL);
> - if (!imxpd)
> - return -ENOMEM;
> + imxpd = devm_drm_bridge_alloc(dev, struct imx_parallel_display, bridge,
> + &imx_pd_bridge_funcs);
> + if (IS_ERR(imxpd))
> + return PTR_ERR(imxpd);
>
> /* port@1 is the output port */
> imxpd->next_bridge = devm_drm_of_get_bridge(dev, np, 1, 0);
>
--
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/2] drm/imx: parallel-display: add the bridge before attaching it
2025-10-14 11:30 ` [PATCH 2/2] drm/imx: parallel-display: add the bridge before attaching it Luca Ceresoli
@ 2025-10-30 14:20 ` Louis Chauvet
0 siblings, 0 replies; 7+ messages in thread
From: Louis Chauvet @ 2025-10-30 14:20 UTC (permalink / raw)
To: Luca Ceresoli, Ernest Van Hoecke, Philipp Zabel,
Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
Simona Vetter, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam
Cc: Hui Pu, Thomas Petazzoni, dri-devel, imx, linux-arm-kernel,
linux-kernel
Le 14/10/2025 à 13:30, Luca Ceresoli a écrit :
> Invoking drm_bridge_add() is good practice, so add it to this driver.
>
> Link: https://lore.kernel.org/all/DDHZ5GO9MPF0.CGYTVBI74FOZ@bootlin.com
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Reviewed-by: Louis Chauvet <louis.chauvet@bootlin.com>
> ---
>
> Note: there is a proposal to make drm_bridge_add() mandatory before
> drm_bridge_attach():
> https://lore.kernel.org/lkml/20251003-b4-drm-bridge-alloc-add-before-attach-v1-3-92fb40d27704@bootlin.com/
> ---
> drivers/gpu/drm/imx/ipuv3/parallel-display.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/gpu/drm/imx/ipuv3/parallel-display.c b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
> index 3d0de9c6e925978b7532b6d13caf6909cc343dd7..7fc6af7033078eef6be0672ff0d1c7bddda88ba1 100644
> --- a/drivers/gpu/drm/imx/ipuv3/parallel-display.c
> +++ b/drivers/gpu/drm/imx/ipuv3/parallel-display.c
> @@ -256,6 +256,8 @@ static int imx_pd_probe(struct platform_device *pdev)
>
> platform_set_drvdata(pdev, imxpd);
>
> + devm_drm_bridge_add(dev, &imxpd->bridge);
> +
> return component_add(dev, &imx_pd_ops);
> }
>
>
--
--
Louis Chauvet, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression
2025-10-14 11:30 [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression Luca Ceresoli
2025-10-14 11:30 ` [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-10-14 11:30 ` [PATCH 2/2] drm/imx: parallel-display: add the bridge before attaching it Luca Ceresoli
@ 2025-10-30 15:59 ` Philipp Zabel
2 siblings, 0 replies; 7+ messages in thread
From: Philipp Zabel @ 2025-10-30 15:59 UTC (permalink / raw)
To: Luca Ceresoli, Ernest Van Hoecke, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam
Cc: Hui Pu, Thomas Petazzoni, dri-devel, imx, linux-arm-kernel,
linux-kernel
On Di, 2025-10-14 at 13:30 +0200, Luca Ceresoli wrote:
> This series fixes the WARNING regressions reported by Ernest [0] and due to
> the missing conversion of the DRM_IMX driver to the new
> devm_drm_bridge_alloc() API.
>
> The second patch also adds drm_bridge_add(), which is a good practice and
> proposed to become mandatory [1].
>
> [0] https://lore.kernel.org/all/hlf4wdopapxnh4rekl5s3kvoi6egaga3lrjfbx6r223ar3txri@3ik53xw5idyh/
> [1] https://lore.kernel.org/lkml/20251003-b4-drm-bridge-alloc-add-before-attach-v1-0-92fb40d27704@bootlin.com/
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Applied to drm-misc-fixes, thanks!
regards
Philipp
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-10-30 16:00 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-14 11:30 [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression Luca Ceresoli
2025-10-14 11:30 ` [PATCH 1/2] drm/imx: parallel-display: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-10-14 11:57 ` Ernest Van Hoecke
2025-10-30 14:18 ` Louis Chauvet
2025-10-14 11:30 ` [PATCH 2/2] drm/imx: parallel-display: add the bridge before attaching it Luca Ceresoli
2025-10-30 14:20 ` Louis Chauvet
2025-10-30 15:59 ` [PATCH 0/2] drm/imx: parallel-display: fix drm/panel/panel-simple v6.17 WARNING regression Philipp Zabel
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).