Message ID | 20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com |
---|---|
Headers | show |
Series | drm: convert all bridges to devm_drm_bridge_alloc() | expand |
On 05/21/2025, Luca Ceresoli wrote: > Hello Maxime, Shawn, Liu, all, > > On Fri, 09 May 2025 15:53:26 +0200 > Luca Ceresoli <luca.ceresoli@bootlin.com> wrote: > >> 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. > > I applied on drm-misc-next patches 3-17,20-21 as they match all the > criteria: > - At least a Acked-by (or R-by maintainers) > - patch is for drm-misc > > Being my very first commits to drm-misc, I tried to be careful, and > double checked all the patches with Louis (thanks!). > > Here are the pending questions and plan for the remaining patches. > >> Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API" > > This reverts the commit applied my mistake: > https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/91c5c7b5bb2dd09b43b025bce6d790d3c79f4518 > > Neither the original patch nor the revert has been reviewed/acked. > > As the commit was a mistake, I'm applying the revert by the end of this > week (i.e. on Friday) unless there are better instructions. > >> drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API > > This patch affects multiple drivers. Running get_maintainers.pl > points at Shawn Guo's repository. After reviewing the MAINTAINERS file, > this looks like due to the 'N:' line in: > > ARM/FREESCALE IMX / MXC ARM ARCHITECTURE > M: Shawn Guo <shawnguo@kernel.org> > M: Sascha Hauer <s.hauer@pengutronix.de> > R: Pengutronix Kernel Team <kernel@pengutronix.de> > ... > T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git > N: imx > ... > > (https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/MAINTAINERS?ref_type=heads#L2511-2528) > > Here 'imx' matches the 'drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c' > file that is touched by the patch. That regexp appears overly generic to me. > > Shawn, can it be fixed by making it less generic? > > If not, can we at least add a band-aid 'X:' entry for > drivers/gpu/drm/bridge/imx? > > I think the other matching entry is the one to consider: > > DRM DRIVERS FOR FREESCALE IMX BRIDGE > M: Liu Ying <victor.liu@nxp.com> > L: dri-devel@lists.freedesktop.org > S: Maintained > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-ldb.yaml > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-combiner.yaml > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-link.yaml > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pxl2dpi.yaml > F: drivers/gpu/drm/bridge/imx/ > > (https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/MAINTAINERS?ref_type=heads#L7940-7948) > > However it does not list any trees. I _guess_ drm-misc applies here as > a fallback as well as common sense. > > Liu, should this entry have a 'T:' line for drm/misc? These bridge drivers also don't have a 'T:' line: DRM DRIVER FOR CHIPONE ICN6211 MIPI-DSI to RGB CONVERTER BRIDGE DRM DRIVER FOR PARADE PS8640 BRIDGE CHIP DRM DRIVER FOR TI DLPC3433 MIPI DSI TO DMD BRIDGE DRM DRIVER FOR TI SN65DSI86 BRIDGE CHIP LONTIUM LT8912B MIPI TO HDMI BRIDGE MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES MICROCHIP SAM9x7-COMPATIBLE LVDS CONTROLLER I think that they fallback to drm-misc since "DRM DRIVERS FOR BRIDGE CHIPS" covers them. I don't have strong opinion on adding a "T" line to them, at least to "DRM DRIVERS FOR FREESCALE IMX BRIDGE". Anyway, it would be good to know comments from maintainers for "DRM DRIVERS FOR BRIDGE CHIPS" and "DRM DRIVERS". > >> drm/bridge: imx8qxp-pixel-combiner: convert to devm_drm_bridge_alloc() API > > Not acked/reviewed, some discussion happened. I am resending it in v4, > possibly with updates based on the discussion. I still think the main structures in imx8qxp-pixel-combiner.c and imx*-ldb.c should have the same lifetime with the allocated bridges. I added a new comment on this driver in v2 just now. > > But it has the same issue discussed above, with get_maintiners.pl > pointing at Shawn Guo's tree, so in the future I'm assuming this goes > to drm-misc unless there are news about that. > >> drm/bridge: tc358767: convert to devm_drm_bridge_alloc() API > > No feedback, resending in v4. > >> drm/todo: add entry to remove devm_drm_put_bridge() > > This involves documentation maintained on another tree. Where should it > be applied? There are two matching entries in MAINTAINERS: > > * DRM DRIVERS -> the drm tree > * DRM DRIVERS AND MISC GPU PATCHES -> the drm-misc tree > > To me it looks like the second is obviously the closest match as we are > dealing with DRM bridges, so I'm applying this as well on Friday unless > there are better instructions. > > Best regards, > Luca >
On Wed, May 21, 2025 at 04:22:16PM +0200, Luca Ceresoli wrote: > Hello Maxime, Shawn, Liu, all, > > On Fri, 09 May 2025 15:53:26 +0200 > Luca Ceresoli <luca.ceresoli@bootlin.com> wrote: > > > 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. > > I applied on drm-misc-next patches 3-17,20-21 as they match all the > criteria: > - At least a Acked-by (or R-by maintainers) > - patch is for drm-misc > > Being my very first commits to drm-misc, I tried to be careful, and > double checked all the patches with Louis (thanks!). > > Here are the pending questions and plan for the remaining patches. > > > Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API" > > This reverts the commit applied my mistake: > https://gitlab.freedesktop.org/drm/misc/kernel/-/commit/91c5c7b5bb2dd09b43b025bce6d790d3c79f4518 > > Neither the original patch nor the revert has been reviewed/acked. > > As the commit was a mistake, I'm applying the revert by the end of this > week (i.e. on Friday) unless there are better instructions. Given the lack of answers, and that it looks correct to me, just leave it there. We can always revert later on if things turned out to be broken. > > drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API > > This patch affects multiple drivers. Running get_maintainers.pl > points at Shawn Guo's repository. After reviewing the MAINTAINERS file, > this looks like due to the 'N:' line in: > > ARM/FREESCALE IMX / MXC ARM ARCHITECTURE > M: Shawn Guo <shawnguo@kernel.org> > M: Sascha Hauer <s.hauer@pengutronix.de> > R: Pengutronix Kernel Team <kernel@pengutronix.de> > ... > T: git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git > N: imx > ... > > (https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/MAINTAINERS?ref_type=heads#L2511-2528) > > Here 'imx' matches the 'drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c' > file that is touched by the patch. That regexp appears overly generic to me. I agree, or at least, we shouldn't wait for Shawn or Sasha... > Shawn, can it be fixed by making it less generic? > > If not, can we at least add a band-aid 'X:' entry for > drivers/gpu/drm/bridge/imx? > > I think the other matching entry is the one to consider: > > DRM DRIVERS FOR FREESCALE IMX BRIDGE > M: Liu Ying <victor.liu@nxp.com> > L: dri-devel@lists.freedesktop.org > S: Maintained > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-ldb.yaml > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-combiner.yaml > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pixel-link.yaml > F: Documentation/devicetree/bindings/display/bridge/fsl,imx8qxp-pxl2dpi.yaml > F: drivers/gpu/drm/bridge/imx/ > > (https://gitlab.freedesktop.org/drm/misc/kernel/-/blob/drm-misc-next/MAINTAINERS?ref_type=heads#L7940-7948) ... As long as Ying is fine with it, because it does look like they are the actual maintainer. > However it does not list any trees. I _guess_ drm-misc applies here as > a fallback as well as common sense. > > Liu, should this entry have a 'T:' line for drm/misc? > > > drm/bridge: imx8qxp-pixel-combiner: convert to devm_drm_bridge_alloc() API > > Not acked/reviewed, some discussion happened. I am resending it in v4, > possibly with updates based on the discussion. > > But it has the same issue discussed above, with get_maintiners.pl > pointing at Shawn Guo's tree, so in the future I'm assuming this goes > to drm-misc unless there are news about that. > > > drm/bridge: tc358767: convert to devm_drm_bridge_alloc() API > > No feedback, resending in v4. > > > drm/todo: add entry to remove devm_drm_put_bridge() > > This involves documentation maintained on another tree. Where should it > be applied? There are two matching entries in MAINTAINERS: > > * DRM DRIVERS -> the drm tree > * DRM DRIVERS AND MISC GPU PATCHES -> the drm-misc tree > > To me it looks like the second is obviously the closest match as we are > dealing with DRM bridges, so I'm applying this as well on Friday unless > there are better instructions. Yes, they should be applied to drm-misc. That being said, putting a two days timeout on *any* email is really over-the-top. I doubt you reply to any of your mail in such a short timeframe. We have rules for a reason, I'd expect you to follow them, no matter how frustrating the lack of answers can be. Maxime
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,