imx.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 00/22] drm: convert all bridges to devm_drm_bridge_alloc()
@ 2025-05-09 13:53 Luca Ceresoli
  2025-05-09 13:53 ` [PATCH v3 01/22] Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API" Luca Ceresoli
                   ` (23 more replies)
  0 siblings, 24 replies; 55+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Jagan Teki,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Douglas Anderson, Chun-Kuang Hu, Krzysztof Kozlowski
  Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, Hui Pu,
	Thomas Petazzoni, dri-devel, asahi, linux-kernel, chrome-platform,
	imx, linux-arm-kernel, linux-mediatek, linux-amlogic,
	linux-renesas-soc, platform-driver-x86, linux-samsung-soc,
	linux-arm-msm, freedreno, linux-stm32, Luca Ceresoli,
	Louis Chauvet, Alim Akhtar, Inki Dae, Kyungmin Park,
	Seung-Woo Kim, Manikandan Muralidharan, Adam Ford,
	Adrien Grassein, Aleksandr Mishin, Andy Yan,
	AngeloGioacchino Del Regno, Benson Leung, Biju Das,
	Christoph Fritz, Cristian Ciocaltea, Detlev Casanova,
	Dharma Balasubiramani, Guenter Roeck, Heiko Stuebner, Jani Nikula,
	Janne Grunau, Jerome Brunet, Jesse Van Gavere, Kevin Hilman,
	Kieran Bingham, Liu Ying, Martin Blumenstingl, Matthias Brugger,
	Philipp Zabel, Phong LE, Sasha Finkelstein, Sugar Zhang,
	Sui Jingfeng, Tomi Valkeinen, Vitalii Mordan, Rob Herring (Arm),
	Hsin-Te Yuan, Pin-yen Lin, Xin Ji, Aradhya Bhatia, Tomi Valkeinen,
	Ian Ray, Martyn Welch, Peter Senna Tschudin, Helge Deller,
	Kuninori Morimoto, Laurent Pinchart, Alexandre Torgue,
	Maxime Coquelin, Philippe Cornu, Raphael Gallais-Pou,
	Yannick Fertre, Alain Volmat, Raphael Gallais-Pou,
	Laurent Pinchart, Michal Simek, Jonathan Corbet, linux-doc

devm_drm_bridge_alloc() [0] is the new API to allocate and initialize a DRM
bridge, and the only one supported from now on. It is the first milestone
towards removal of bridges from a still existing DRM pipeline without
use-after-free.

The steps in the grand plan [1] are:

 1. ➜ add refcounting to DRM bridges (struct drm_bridge)
 2. handle gracefully atomic updates during bridge removal
 3. avoid DSI host drivers to have dangling pointers to DSI devices
 4. finish the hotplug bridge work, removing the "always-disconnected"
    connector, moving code to the core and potentially removing the
    hotplug-bridge itself (this needs to be clarified as points 1-3 are
    developed)

This series is part of step 1 of the grand plan.

Current tasks in step 1 of the grand plan:

 A. ✔ add new alloc API and refcounting -> (now in drm-misc-next)
 B. ➜ convert all bridge drivers to new API (this series)
 C. … documentation, kunit tests (v1 under discussion)
 D. after (B), add get/put to drm_bridge_add/remove() + attach/detech()
 E. after (B), convert accessors; this is a large work and can be done
    in chunks
 F. debugfs improvements

More info about this series in the v2 cover [2].

Luca

[0] https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/0cc6aadd7fc1e629b715ea3d1ba537ef2da95eec
[1] https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com/t/#u
[2] https://lore.kernel.org/lkml/20250424-drm-bridge-convert-to-alloc-api-v2-0-8f91a404d86b@bootlin.com/

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Changes in v3:
- Fixed issues reported for some patches
- Added review tags
- Removed patches that have been applied
- Added revert for the exynos patch, applied by mistake
- Update cover with grand plan info and trim some of it
- Updated bouncing e-mail address in Cc list
- Link to v2: https://lore.kernel.org/lkml/20250424-drm-bridge-convert-to-alloc-api-v2-0-8f91a404d86b@bootlin.com/

Changes in v2:
- Improved cover letter with link to commit adding devm_drm_bridge_alloc()
- add review tags
- fix bugs in zynqmp, vc4 patches
- fix patch 1 error code checking
- Link to v1: https://lore.kernel.org/r/20250407-drm-bridge-convert-to-alloc-api-v1-0-42113ff8d9c0@bootlin.com

---
Luca Ceresoli (22):
      Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API"
      drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API
      drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API
      drm/bridge: cdns-dsi: convert to devm_drm_bridge_alloc() API
      drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: convert to devm_drm_bridge_alloc() API
      drm/bridge: nxp-ptn3460: convert to devm_drm_bridge_alloc() API
      drm/bridge: sii902x: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: dpi: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: dsi: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: hdmi4: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: hdmi5: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: sdi: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: venc: convert to devm_drm_bridge_alloc() API
      drm/rcar-du: dsi: convert to devm_drm_bridge_alloc() API
      drm/bridge: stm_lvds: convert to devm_drm_bridge_alloc() API
      drm/sti: dvo: convert to devm_drm_bridge_alloc() API
      drm: zynqmp_dp: convert to devm_drm_bridge_alloc() API
      drm/bridge: imx8qxp-pixel-combiner: convert to devm_drm_bridge_alloc() API
      drm/bridge: tc358767: convert to devm_drm_bridge_alloc() API
      drm/bridge: add devm_drm_put_bridge()
      drm/bridge: panel: convert to devm_drm_bridge_alloc() API
      drm/todo: add entry to remove devm_drm_put_bridge()

 Documentation/gpu/todo.rst                         | 15 ++++++
 drivers/gpu/drm/adp/adp-mipi.c                     |  8 ++--
 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c       |  8 ++--
 drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c |  9 ++--
 drivers/gpu/drm/bridge/analogix/anx7625.c          |  7 ++-
 drivers/gpu/drm/bridge/aux-bridge.c                |  8 ++--
 drivers/gpu/drm/bridge/aux-hpd-bridge.c            |  9 ++--
 drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c     |  8 ++--
 .../gpu/drm/bridge/cadence/cdns-mhdp8546-core.c    |  8 ++--
 drivers/gpu/drm/bridge/chipone-icn6211.c           |  8 ++--
 drivers/gpu/drm/bridge/chrontel-ch7033.c           |  8 ++--
 drivers/gpu/drm/bridge/cros-ec-anx7688.c           |  8 ++--
 drivers/gpu/drm/bridge/fsl-ldb.c                   |  7 ++-
 drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c     |  8 ++--
 drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c       |  8 ++--
 .../gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c    | 27 ++++++-----
 drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c    |  8 ++--
 drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c       |  8 ++--
 drivers/gpu/drm/bridge/ite-it6263.c                |  8 ++--
 drivers/gpu/drm/bridge/ite-it6505.c                |  8 ++--
 drivers/gpu/drm/bridge/ite-it66121.c               |  8 ++--
 drivers/gpu/drm/bridge/lontium-lt8912b.c           |  8 ++--
 drivers/gpu/drm/bridge/lontium-lt9211.c            |  7 ++-
 drivers/gpu/drm/bridge/lontium-lt9611.c            |  8 ++--
 drivers/gpu/drm/bridge/lvds-codec.c                |  9 ++--
 .../drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c   | 11 ++---
 drivers/gpu/drm/bridge/microchip-lvds.c            |  8 ++--
 drivers/gpu/drm/bridge/nwl-dsi.c                   |  8 ++--
 drivers/gpu/drm/bridge/nxp-ptn3460.c               |  9 ++--
 drivers/gpu/drm/bridge/panel.c                     | 12 ++---
 drivers/gpu/drm/bridge/parade-ps8622.c             |  8 ++--
 drivers/gpu/drm/bridge/parade-ps8640.c             |  8 ++--
 drivers/gpu/drm/bridge/sii902x.c                   |  7 ++-
 drivers/gpu/drm/bridge/sii9234.c                   |  8 ++--
 drivers/gpu/drm/bridge/sil-sii8620.c               |  8 ++--
 drivers/gpu/drm/bridge/simple-bridge.c             |  8 ++--
 drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c       |  8 ++--
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c      |  8 ++--
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c     |  8 ++--
 drivers/gpu/drm/bridge/tc358762.c                  |  8 ++--
 drivers/gpu/drm/bridge/tc358764.c                  |  8 ++--
 drivers/gpu/drm/bridge/tc358767.c                  | 56 +++++++++++++++-------
 drivers/gpu/drm/bridge/tc358768.c                  |  8 ++--
 drivers/gpu/drm/bridge/tc358775.c                  |  8 ++--
 drivers/gpu/drm/bridge/thc63lvd1024.c              |  8 ++--
 drivers/gpu/drm/bridge/ti-dlpc3433.c               |  8 ++--
 drivers/gpu/drm/bridge/ti-tdp158.c                 |  8 ++--
 drivers/gpu/drm/bridge/ti-tfp410.c                 |  8 ++--
 drivers/gpu/drm/bridge/ti-tpd12s015.c              |  8 ++--
 drivers/gpu/drm/drm_bridge.c                       | 17 +++++++
 drivers/gpu/drm/exynos/exynos_drm_mic.c            |  7 +--
 drivers/gpu/drm/mediatek/mtk_dp.c                  |  8 ++--
 drivers/gpu/drm/mediatek/mtk_dpi.c                 |  8 ++--
 drivers/gpu/drm/mediatek/mtk_dsi.c                 |  8 ++--
 drivers/gpu/drm/mediatek/mtk_hdmi.c                |  8 ++--
 drivers/gpu/drm/meson/meson_encoder_cvbs.c         | 10 ++--
 drivers/gpu/drm/meson/meson_encoder_dsi.c          | 10 ++--
 drivers/gpu/drm/meson/meson_encoder_hdmi.c         | 10 ++--
 drivers/gpu/drm/omapdrm/dss/dpi.c                  |  7 ++-
 drivers/gpu/drm/omapdrm/dss/dsi.c                  |  7 ++-
 drivers/gpu/drm/omapdrm/dss/hdmi4.c                | 26 ++++------
 drivers/gpu/drm/omapdrm/dss/hdmi5.c                | 26 ++++------
 drivers/gpu/drm/omapdrm/dss/sdi.c                  | 25 ++++------
 drivers/gpu/drm/omapdrm/dss/venc.c                 | 23 ++++-----
 drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c        |  8 ++--
 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c    |  8 ++--
 drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c     |  8 ++--
 drivers/gpu/drm/sti/sti_dvo.c                      | 29 +++++------
 drivers/gpu/drm/stm/lvds.c                         |  7 ++-
 drivers/gpu/drm/xlnx/zynqmp_dp.c                   | 31 +++++-------
 drivers/gpu/drm/xlnx/zynqmp_dpsub.c                |  1 -
 include/drm/drm_bridge.h                           |  4 ++
 72 files changed, 390 insertions(+), 379 deletions(-)
---
base-commit: 94c60d3c1079fc044e356a78ffc68ca7b0603039
change-id: 20250404-drm-bridge-convert-to-alloc-api-614becf62294

Best regards,
-- 
Luca Ceresoli <luca.ceresoli@bootlin.com>


^ permalink raw reply	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2025-05-27 10:21 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-09 13:53 [PATCH v3 00/22] drm: convert all bridges to devm_drm_bridge_alloc() Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 01/22] Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API" Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 02/22] drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API Luca Ceresoli
2025-05-10  8:43   ` Maxime Ripard
2025-05-25 19:40   ` Adam Ford
2025-05-27  9:27     ` Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 03/22] drm/bridge: anx7625: convert " Luca Ceresoli
2025-05-10  8:43   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 04/22] drm/bridge: cdns-dsi: " Luca Ceresoli
2025-05-10  8:44   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 05/22] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Luca Ceresoli
2025-05-10  8:52   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 06/22] drm/bridge: nxp-ptn3460: " Luca Ceresoli
2025-05-10  8:52   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 07/22] drm/bridge: sii902x: " Luca Ceresoli
2025-05-10  8:52   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 08/22] drm/omap: dss: dpi: " Luca Ceresoli
2025-05-10  8:54   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 09/22] drm/omap: dss: dsi: " Luca Ceresoli
2025-05-10  8:54   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 10/22] drm/omap: dss: hdmi4: " Luca Ceresoli
2025-05-10  8:54   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 11/22] drm/omap: dss: hdmi5: " Luca Ceresoli
2025-05-10  8:54   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 12/22] drm/omap: dss: sdi: " Luca Ceresoli
2025-05-10  8:58   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 13/22] drm/omap: dss: venc: " Luca Ceresoli
2025-05-10  8:55   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 14/22] drm/rcar-du: dsi: " Luca Ceresoli
2025-05-10  8:56   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 15/22] drm/bridge: stm_lvds: " Luca Ceresoli
2025-05-10  8:56   ` Maxime Ripard
2025-05-20 11:37   ` Raphael Gallais-Pou
2025-05-09 13:53 ` [PATCH v3 16/22] drm/sti: dvo: " Luca Ceresoli
2025-05-10  8:57   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 17/22] drm: zynqmp_dp: " Luca Ceresoli
2025-05-10  8:57   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 18/22] drm/bridge: imx8qxp-pixel-combiner: " Luca Ceresoli
2025-05-27  1:48   ` Liu Ying
2025-05-09 13:53 ` [PATCH v3 19/22] drm/bridge: tc358767: " Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 20/22] drm/bridge: add devm_drm_put_bridge() Luca Ceresoli
2025-05-10  9:15   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 21/22] drm/bridge: panel: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-05-10  9:42   ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 22/22] drm/todo: add entry to remove devm_drm_put_bridge() Luca Ceresoli
2025-05-10  9:42   ` Maxime Ripard
2025-05-21 14:22 ` [PATCH v3 00/22] drm: convert all bridges to devm_drm_bridge_alloc() Luca Ceresoli
2025-05-22  3:20   ` Liu Ying
2025-05-22  7:28     ` Luca Ceresoli
2025-05-22 15:01     ` Maxime Ripard
2025-05-22 14:57   ` Maxime Ripard
2025-05-22 15:56     ` Luca Ceresoli
2025-05-22 15:11   ` Inki Dae
2025-05-23 13:23     ` Luca Ceresoli
2025-05-27 10:21 ` (subset) " Luca Ceresoli

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).