Thread (8 messages) flat view 8 messages, 2 authors, 15d ago

Re: [PATCH v7 3/4] phy: ti-pipe3: Fix EPROBE_DEFER handling for clock resources

From: sashiko-bot@kernel.org
Date: 2026-09-09 11:42:32

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] A redundant dev_err() call immediately before dev_err_probe() defeats the probe deferral suppression mechanism and causes double logging.
--

commit 09edabe83e95cc967698ec0a56b8901416907e0e
Author: Hongling Zeng [off-list ref]

phy: ti-pipe3: Fix EPROBE_DEFER handling for clock resources

This commit fixes EPROBE_DEFER handling in ti_pipe3_get_clk() by propagating
the actual error code for the system clock instead of returning -EINVAL. It
also uses devm_clk_get_optional() for the SATA refclk to correctly handle
missing optional clocks while properly propagating probe deferrals.
quoted hunk ↗ jump to hunk
diff --git a/drivers/phy/ti/phy-ti-pipe3.c b/drivers/phy/ti/phy-ti-pipe3.c
index 021657cbce481..a67f5da43c83b 100644
--- a/drivers/phy/ti/phy-ti-pipe3.c
+++ b/drivers/phy/ti/phy-ti-pipe3.c
[ ... ]
quoted hunk ↗ jump to hunk
@@ -608,14 +608,21 @@ static int ti_pipe3_get_clk(struct ti_pipe3 *phy)
 	struct clk *clk;
 	struct device *dev = phy->dev;
 
-	phy->refclk = devm_clk_get(dev, "refclk");
+	/*
+	 * refclk is optional for SATA PHY to support older DTBs, but
+	 * required for other modes. Use devm_clk_get_optional() for SATA
+	 * which returns NULL for -ENOENT, allowing us to propagate all
+	 * other errors including -EPROBE_DEFER.
+	 */
+	if (phy->mode == PIPE3_MODE_SATA)
+		phy->refclk = devm_clk_get_optional(dev, "refclk");
+	else
+		phy->refclk = devm_clk_get(dev, "refclk");
+
 	if (IS_ERR(phy->refclk)) {
 		dev_err(dev, "unable to get refclk\n");
-		/* older DTBs have missing refclk in SATA PHY
-		 * so don't bail out in case of SATA PHY.
-		 */
-		if (phy->mode != PIPE3_MODE_SATA)
-			return PTR_ERR(phy->refclk);
+		return dev_err_probe(dev, PTR_ERR(phy->refclk),
+				"unable to get refclk\n");
[Severity: Low]
Does keeping this dev_err() call defeat the purpose of using dev_err_probe()
below it?

Since dev_err_probe() suppresses logging during -EPROBE_DEFER, leaving the
unconditional dev_err() here will still output "unable to get refclk" to
the kernel log during normal probe deferrals. It will also cause the same
error message to be logged twice on actual failures.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260909113433.1287454-1-zenghongling@kylinos.cn?part=3

-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help