All of lore.kernel.org
 help / color / mirror / Atom feed
From: Johan Hovold <johan+linaro@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>,
	Andrzej Hajda <andrzej.hajda@intel.com>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Robert Foss <rfoss@kernel.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
	Vinod Koul <vkoul@kernel.org>
Cc: Jonas Karlman <jonas@kwiboo.se>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Jernej Skrabec <jernej.skrabec@gmail.com>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Kishon Vijay Abraham I <kishon@kernel.org>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Rob Clark <robdclark@gmail.com>,
	Abhinav Kumar <quic_abhinavk@quicinc.com>,
	Kuogee Hsieh <quic_khsieh@quicinc.com>,
	freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	linux-phy@lists.infradead.org, Rob Clark <robdclark@chromium.org>,
	stable@vger.kernel.org, Johan Hovold <johan+linaro@kernel.org>
Subject: [PATCH 4/6] soc: qcom: pmic_glink: Fix boot when QRTR=m
Date: Sat, 17 Feb 2024 16:02:26 +0100	[thread overview]
Message-ID: <20240217150228.5788-5-johan+linaro@kernel.org> (raw)
In-Reply-To: <20240217150228.5788-1-johan+linaro@kernel.org>

From: Rob Clark <robdclark@chromium.org>

We need to bail out before adding/removing devices if we are going to
-EPROBE_DEFER. Otherwise boot can get stuck in a probe deferral loop due
to a long-standing issue in driver core (see fbc35b45f9f6 ("Add
documentation on meaning of -EPROBE_DEFER")).

Deregistering the altmode child device can potentially also trigger bugs
in the DRM bridge implementation, which does not expect bridges to go
away.

Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
Link: https://lore.kernel.org/r/20231213210644.8702-1-robdclark@gmail.com
[ johan: rebase on 6.8-rc4, amend commit message and mention DRM ]
Fixes: 58ef4ece1e41 ("soc: qcom: pmic_glink: Introduce base PMIC GLINK driver")
Cc: stable@vger.kernel.org      # 6.3
Cc: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
 drivers/soc/qcom/pmic_glink.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/soc/qcom/pmic_glink.c b/drivers/soc/qcom/pmic_glink.c
index f4bfd24386f1..f913e9bd57ed 100644
--- a/drivers/soc/qcom/pmic_glink.c
+++ b/drivers/soc/qcom/pmic_glink.c
@@ -265,10 +265,17 @@ static int pmic_glink_probe(struct platform_device *pdev)
 
 	pg->client_mask = *match_data;
 
+	pg->pdr = pdr_handle_alloc(pmic_glink_pdr_callback, pg);
+	if (IS_ERR(pg->pdr)) {
+		ret = dev_err_probe(&pdev->dev, PTR_ERR(pg->pdr),
+				    "failed to initialize pdr\n");
+		return ret;
+	}
+
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) {
 		ret = pmic_glink_add_aux_device(pg, &pg->ucsi_aux, "ucsi");
 		if (ret)
-			return ret;
+			goto out_release_pdr_handle;
 	}
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) {
 		ret = pmic_glink_add_aux_device(pg, &pg->altmode_aux, "altmode");
@@ -281,17 +288,11 @@ static int pmic_glink_probe(struct platform_device *pdev)
 			goto out_release_altmode_aux;
 	}
 
-	pg->pdr = pdr_handle_alloc(pmic_glink_pdr_callback, pg);
-	if (IS_ERR(pg->pdr)) {
-		ret = dev_err_probe(&pdev->dev, PTR_ERR(pg->pdr), "failed to initialize pdr\n");
-		goto out_release_aux_devices;
-	}
-
 	service = pdr_add_lookup(pg->pdr, "tms/servreg", "msm/adsp/charger_pd");
 	if (IS_ERR(service)) {
 		ret = dev_err_probe(&pdev->dev, PTR_ERR(service),
 				    "failed adding pdr lookup for charger_pd\n");
-		goto out_release_pdr_handle;
+		goto out_release_aux_devices;
 	}
 
 	mutex_lock(&__pmic_glink_lock);
@@ -300,8 +301,6 @@ static int pmic_glink_probe(struct platform_device *pdev)
 
 	return 0;
 
-out_release_pdr_handle:
-	pdr_handle_release(pg->pdr);
 out_release_aux_devices:
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_BATT))
 		pmic_glink_del_aux_device(pg, &pg->ps_aux);
@@ -311,6 +310,8 @@ static int pmic_glink_probe(struct platform_device *pdev)
 out_release_ucsi_aux:
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI))
 		pmic_glink_del_aux_device(pg, &pg->ucsi_aux);
+out_release_pdr_handle:
+	pdr_handle_release(pg->pdr);
 
 	return ret;
 }
-- 
2.43.0


WARNING: multiple messages have this Message-ID (diff)
From: Johan Hovold <johan+linaro@kernel.org>
To: Bjorn Andersson <andersson@kernel.org>,
	Andrzej Hajda <andrzej.hajda@intel.com>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Robert Foss <rfoss@kernel.org>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
	Vinod Koul <vkoul@kernel.org>
Cc: Jonas Karlman <jonas@kwiboo.se>,
	Laurent Pinchart <Laurent.pinchart@ideasonboard.com>,
	Jernej Skrabec <jernej.skrabec@gmail.com>,
	Konrad Dybcio <konrad.dybcio@linaro.org>,
	Kishon Vijay Abraham I <kishon@kernel.org>,
	Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
	Rob Clark <robdclark@gmail.com>,
	Abhinav Kumar <quic_abhinavk@quicinc.com>,
	Kuogee Hsieh <quic_khsieh@quicinc.com>,
	freedreno@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	linux-phy@lists.infradead.org, Rob Clark <robdclark@chromium.org>,
	stable@vger.kernel.org, Johan Hovold <johan+linaro@kernel.org>
Subject: [PATCH 4/6] soc: qcom: pmic_glink: Fix boot when QRTR=m
Date: Sat, 17 Feb 2024 16:02:26 +0100	[thread overview]
Message-ID: <20240217150228.5788-5-johan+linaro@kernel.org> (raw)
In-Reply-To: <20240217150228.5788-1-johan+linaro@kernel.org>

From: Rob Clark <robdclark@chromium.org>

We need to bail out before adding/removing devices if we are going to
-EPROBE_DEFER. Otherwise boot can get stuck in a probe deferral loop due
to a long-standing issue in driver core (see fbc35b45f9f6 ("Add
documentation on meaning of -EPROBE_DEFER")).

Deregistering the altmode child device can potentially also trigger bugs
in the DRM bridge implementation, which does not expect bridges to go
away.

Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Rob Clark <robdclark@chromium.org>
Link: https://lore.kernel.org/r/20231213210644.8702-1-robdclark@gmail.com
[ johan: rebase on 6.8-rc4, amend commit message and mention DRM ]
Fixes: 58ef4ece1e41 ("soc: qcom: pmic_glink: Introduce base PMIC GLINK driver")
Cc: stable@vger.kernel.org      # 6.3
Cc: Bjorn Andersson <andersson@kernel.org>
Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
---
 drivers/soc/qcom/pmic_glink.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/drivers/soc/qcom/pmic_glink.c b/drivers/soc/qcom/pmic_glink.c
index f4bfd24386f1..f913e9bd57ed 100644
--- a/drivers/soc/qcom/pmic_glink.c
+++ b/drivers/soc/qcom/pmic_glink.c
@@ -265,10 +265,17 @@ static int pmic_glink_probe(struct platform_device *pdev)
 
 	pg->client_mask = *match_data;
 
+	pg->pdr = pdr_handle_alloc(pmic_glink_pdr_callback, pg);
+	if (IS_ERR(pg->pdr)) {
+		ret = dev_err_probe(&pdev->dev, PTR_ERR(pg->pdr),
+				    "failed to initialize pdr\n");
+		return ret;
+	}
+
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI)) {
 		ret = pmic_glink_add_aux_device(pg, &pg->ucsi_aux, "ucsi");
 		if (ret)
-			return ret;
+			goto out_release_pdr_handle;
 	}
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_ALTMODE)) {
 		ret = pmic_glink_add_aux_device(pg, &pg->altmode_aux, "altmode");
@@ -281,17 +288,11 @@ static int pmic_glink_probe(struct platform_device *pdev)
 			goto out_release_altmode_aux;
 	}
 
-	pg->pdr = pdr_handle_alloc(pmic_glink_pdr_callback, pg);
-	if (IS_ERR(pg->pdr)) {
-		ret = dev_err_probe(&pdev->dev, PTR_ERR(pg->pdr), "failed to initialize pdr\n");
-		goto out_release_aux_devices;
-	}
-
 	service = pdr_add_lookup(pg->pdr, "tms/servreg", "msm/adsp/charger_pd");
 	if (IS_ERR(service)) {
 		ret = dev_err_probe(&pdev->dev, PTR_ERR(service),
 				    "failed adding pdr lookup for charger_pd\n");
-		goto out_release_pdr_handle;
+		goto out_release_aux_devices;
 	}
 
 	mutex_lock(&__pmic_glink_lock);
@@ -300,8 +301,6 @@ static int pmic_glink_probe(struct platform_device *pdev)
 
 	return 0;
 
-out_release_pdr_handle:
-	pdr_handle_release(pg->pdr);
 out_release_aux_devices:
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_BATT))
 		pmic_glink_del_aux_device(pg, &pg->ps_aux);
@@ -311,6 +310,8 @@ static int pmic_glink_probe(struct platform_device *pdev)
 out_release_ucsi_aux:
 	if (pg->client_mask & BIT(PMIC_GLINK_CLIENT_UCSI))
 		pmic_glink_del_aux_device(pg, &pg->ucsi_aux);
+out_release_pdr_handle:
+	pdr_handle_release(pg->pdr);
 
 	return ret;
 }
-- 
2.43.0


-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

  parent reply	other threads:[~2024-02-17 15:03 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-17 15:02 [PATCH 0/6] soc: qcom: pmic_glink_altmode: fix drm bridge use-after-free Johan Hovold
2024-02-17 15:02 ` Johan Hovold
2024-02-17 15:02 ` [PATCH 1/6] drm/bridge: aux-hpd: fix OF node leaks Johan Hovold
2024-02-17 15:02   ` Johan Hovold
2024-02-19 17:48   ` Markus Elfring
2024-02-19 17:48     ` Markus Elfring
2024-02-20  7:24     ` Johan Hovold
2024-02-20  7:24       ` Johan Hovold
2024-02-20 11:52       ` Julia Lawall
2024-02-20 11:52         ` Julia Lawall
2024-02-20 11:55         ` Dmitry Baryshkov
2024-02-20 11:55           ` Dmitry Baryshkov
2024-02-20 12:56           ` Julia Lawall
2024-02-20 12:56             ` Julia Lawall
2024-02-20 13:35             ` Dmitry Baryshkov
2024-02-20 13:35               ` Dmitry Baryshkov
2024-02-22  1:22   ` Bjorn Andersson
2024-02-22  1:22     ` Bjorn Andersson
2024-02-22 21:00   ` Dmitry Baryshkov
2024-02-22 21:00     ` Dmitry Baryshkov
2024-02-23 10:56   ` Neil Armstrong
2024-02-23 10:56     ` Neil Armstrong
2024-02-23 10:56   ` Neil Armstrong
2024-02-23 10:56     ` Neil Armstrong
2024-02-17 15:02 ` [PATCH 2/6] drm/bridge: aux-hpd: separate allocation and registration Johan Hovold
2024-02-17 15:02   ` Johan Hovold
2024-02-22  2:06   ` Bjorn Andersson
2024-02-22  2:06     ` Bjorn Andersson
2024-02-22 16:06     ` Johan Hovold
2024-02-22 16:06       ` Johan Hovold
2024-02-22 20:57   ` Dmitry Baryshkov
2024-02-22 20:57     ` Dmitry Baryshkov
2024-02-23 12:46     ` Johan Hovold
2024-02-23 12:46       ` Johan Hovold
2024-02-17 15:02 ` [PATCH 3/6] soc: qcom: pmic_glink_altmode: fix drm bridge use-after-free Johan Hovold
2024-02-17 15:02   ` Johan Hovold
2024-02-20  8:25   ` Markus Elfring
2024-02-20  8:25     ` Markus Elfring
2024-02-20 10:55   ` Markus Elfring
2024-02-20 10:55     ` Markus Elfring
2024-02-20 11:26     ` Johan Hovold
2024-02-20 11:26       ` Johan Hovold
2024-02-20 12:40       ` [3/6] " Markus Elfring
2024-02-20 12:40         ` Markus Elfring
2024-02-22  2:11   ` [PATCH 3/6] " Bjorn Andersson
2024-02-22  2:11     ` Bjorn Andersson
2024-02-22 21:10   ` Dmitry Baryshkov
2024-02-22 21:10     ` Dmitry Baryshkov
2024-02-17 15:02 ` Johan Hovold [this message]
2024-02-17 15:02   ` [PATCH 4/6] soc: qcom: pmic_glink: Fix boot when QRTR=m Johan Hovold
2024-02-22  2:18   ` Bjorn Andersson
2024-02-22  2:18     ` Bjorn Andersson
2024-02-22 21:10   ` Dmitry Baryshkov
2024-02-22 21:10     ` Dmitry Baryshkov
2024-02-23 11:04   ` Neil Armstrong
2024-02-23 11:04     ` Neil Armstrong
2024-02-17 15:02 ` [PATCH 5/6] phy: qcom-qmp-combo: fix drm bridge registration Johan Hovold
2024-02-17 15:02   ` Johan Hovold
2024-02-19  9:03   ` Neil Armstrong
2024-02-19  9:03     ` Neil Armstrong
2024-02-22  2:21   ` Bjorn Andersson
2024-02-22  2:21     ` Bjorn Andersson
2024-02-22 21:11   ` Dmitry Baryshkov
2024-02-22 21:11     ` Dmitry Baryshkov
2024-02-23 12:09   ` Vinod Koul
2024-02-23 12:09     ` Vinod Koul
2024-02-17 15:02 ` [PATCH 6/6] phy: qcom-qmp-combo: fix type-c switch registration Johan Hovold
2024-02-17 15:02   ` Johan Hovold
2024-02-22  2:23   ` Bjorn Andersson
2024-02-22  2:23     ` Bjorn Andersson
2024-02-22 21:12   ` Dmitry Baryshkov
2024-02-22 21:12     ` Dmitry Baryshkov
2024-02-23 12:10   ` Vinod Koul
2024-02-23 12:10     ` Vinod Koul
2024-02-23 11:02 ` [PATCH 0/6] soc: qcom: pmic_glink_altmode: fix drm bridge use-after-free Neil Armstrong
2024-02-23 11:02   ` Neil Armstrong
2024-02-23 11:03   ` Neil Armstrong
2024-02-23 11:03     ` Neil Armstrong
2024-02-23 12:51     ` Johan Hovold
2024-02-23 12:51       ` Johan Hovold
2024-02-23 13:52       ` Neil Armstrong
2024-02-23 13:52         ` Neil Armstrong
2024-02-23 14:18         ` Dmitry Baryshkov
2024-02-23 14:18           ` Dmitry Baryshkov
2024-02-23 14:28           ` Johan Hovold
2024-02-23 14:28             ` Johan Hovold
2024-02-23 14:21         ` Johan Hovold
2024-02-23 14:21           ` Johan Hovold
2024-02-23 14:38           ` Neil Armstrong
2024-02-23 14:38             ` Neil Armstrong
2024-02-23 14:52             ` Johan Hovold
2024-02-23 14:52               ` Johan Hovold
2024-02-23 14:55               ` Neil Armstrong
2024-02-23 14:55                 ` Neil Armstrong
2024-02-23 15:07                 ` Dmitry Baryshkov
2024-02-23 15:07                   ` Dmitry Baryshkov
2024-02-23 14:54 ` Neil Armstrong
2024-02-23 14:54   ` Neil Armstrong
2024-02-23 15:06 ` (subset) " Dmitry Baryshkov
2024-02-23 15:06   ` Dmitry Baryshkov
2024-03-06 17:47 ` Vinod Koul
2024-03-06 17:47   ` Vinod Koul

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240217150228.5788-5-johan+linaro@kernel.org \
    --to=johan+linaro@kernel.org \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=andersson@kernel.org \
    --cc=andrzej.hajda@intel.com \
    --cc=daniel@ffwll.ch \
    --cc=dmitry.baryshkov@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=freedreno@lists.freedesktop.org \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=kishon@kernel.org \
    --cc=konrad.dybcio@linaro.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=neil.armstrong@linaro.org \
    --cc=quic_abhinavk@quicinc.com \
    --cc=quic_khsieh@quicinc.com \
    --cc=rfoss@kernel.org \
    --cc=robdclark@chromium.org \
    --cc=robdclark@gmail.com \
    --cc=stable@vger.kernel.org \
    --cc=tzimmermann@suse.de \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.