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