FAILED: patch "[PATCH] drm/meson: Don't remove bridges which are created by other" failed to apply to 6.1-stable tree
Subsystems (5)
[email protected]
maintainerThe patch below does not apply to the 6.1-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.1.y
git checkout FETCH_HEAD
git cherry-pick -x bd915ae73a2d78559b376ad2caf5e4ef51de2455
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024022642-retool-clover-ecd7@gregkh' --subject-prefix 'PATCH 6.1.y' HEAD^..
Possible dependencies:
bd915ae73a2d ("drm/meson: Don't remove bridges which are created by other drivers") 42dcf15f901c ("drm/meson: add DSI encoder")6a044642988b ("drm/meson: fix unbind path if HDMI fails to bind")
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From bd915ae73a2d78559b376ad2caf5e4ef51de2455 Mon Sep 17 00:00:00 2001
From: Martin Blumenstingl <[email protected]>
Date: Thu, 15 Feb 2024 23:04:42 +0100
Subject: [PATCH] drm/meson: Don't remove bridges which are created by other
drivers
Stop calling drm_bridge_remove() for bridges allocated/managed by other drivers in the remove paths of meson_encoder_{cvbs,dsi,hdmi}. drm_bridge_remove() unregisters the bridge so it cannot be used anymore. Doing so for bridges we don't own can lead to the video pipeline not being able to come up after -EPROBE_DEFER of the VPU because we're unregistering a bridge that's managed by another driver. The other driver doesn't know that we have unregistered it's bridge and on subsequent .probe() we're not able to find those bridges anymore (since nobody re-creates them).
This fixes probe errors on Meson8b boards with the CVBS outputs enabled.
drivers/gpu/drm/meson/meson_encoder_cvbs.c +0 -1
@@ -294,6 +294,5 @@ void meson_encoder_cvbs_remove(struct meson_drm *priv)if (priv->encoders[MESON_ENC_CVBS ]) { meson_encoder_cvbs = priv->encoders[MESON_ENC_CVBS ];drm_bridge_remove (&meson_encoder_cvbs->bridge); -drm_bridge_remove (meson_encoder_cvbs->next_bridge); } }
drivers/gpu/drm/meson/meson_encoder_dsi.c +0 -1
@@ -168,6 +168,5 @@ void meson_encoder_dsi_remove(struct meson_drm *priv)if (priv->encoders[MESON_ENC_DSI ]) { meson_encoder_dsi = priv->encoders[MESON_ENC_DSI ];drm_bridge_remove (&meson_encoder_dsi->bridge); -drm_bridge_remove (meson_encoder_dsi->next_bridge); } }
drivers/gpu/drm/meson/meson_encoder_hdmi.c +0 -1
@@ -474,6 +474,5 @@ void meson_encoder_hdmi_remove(struct meson_drm *priv)if (priv->encoders[MESON_ENC_HDMI ]) { meson_encoder_hdmi = priv->encoders[MESON_ENC_HDMI ];drm_bridge_remove (&meson_encoder_hdmi->bridge); -drm_bridge_remove (meson_encoder_hdmi->next_bridge); } }