Linux SCSI subsystem development
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Louis-Alexis Eyraud" <louisalexis.eyraud@collabora.com>
Cc: devicetree@vger.kernel.org, linux-phy@lists.infradead.org,
	olteanv@gmail.com, robh@kernel.org, neil.armstrong@linaro.org,
	conor+dt@kernel.org, vkoul@kernel.org,
	linux-scsi@vger.kernel.org
Subject: Re: [PATCH v13 14/24] scsi: ufs: mediatek: Use the common PHY framework
Date: Thu, 01 Oct 2026 08:33:59 +0000	[thread overview]
Message-ID: <20261001083359.B69411F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20261001-mt8196-ufs-v13-14-60854adab6d9@collabora.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] ufs: PM state mismatch on PHY power off failure in suspend
- [Medium] ufs: MTCMOS power leak on PHY power on failure in resume
--

commit 9793309b55b85fbb5631e6f681c0c84e2da2dd42
Author: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>

scsi: ufs: mediatek: Use the common PHY framework

This commit switches the Mediatek UFS driver to use the common PHY framework
instead of manually parsing the OF tree for the PHY node. It updates the
initialization, resume, and suspend paths to power the PHY on and off using
the framework's APIs.

> diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c
> index e4b41de4de3a2..6d5687f5e7558 100644
> --- a/drivers/ufs/host/ufs-mediatek.c
> +++ b/drivers/ufs/host/ufs-mediatek.c

[ ... ]

> @@ -2502,9 +2447,8 @@ static int ufs_mtk_system_resume(struct device *dev)
>  static int ufs_mtk_runtime_suspend(struct device *dev)
>  {
>  	struct ufs_hba *hba = dev_get_drvdata(dev);
> -	struct ufs_mtk_host *host = ufshcd_get_variant(hba);
>  	struct arm_smccc_res res;
> -	int ret = 0;
> +	int ret;
>  
>  	ret = ufshcd_runtime_suspend(dev);
>  	if (ret)
> @@ -2515,8 +2459,11 @@ static int ufs_mtk_runtime_suspend(struct device *dev)
>  	if (ufs_mtk_is_rtff_mtcmos(hba))
>  		ufs_mtk_mtcmos_ctrl(false, res);
>  
> -	if (host->phy_dev)
> -		pm_runtime_put_sync(host->phy_dev);
> +	ret = ufs_mtk_mphy_power_on(hba, false);
> +	if (ret) {
> +		dev_err(dev, "Failed to power off PHY: %pe\n", ERR_PTR(ret));
> +		return ret;

[Severity: High]
Does returning the error directly here leave the PM state mismatched?

If ufs_mtk_mphy_power_on() fails, this returns early without rolling back the
already suspended UFS hardware (suspended via ufshcd_runtime_suspend()
earlier in this function).

The PM core may mark the device as RPM_ACTIVE because the callback failed,
despite the hardware physically being suspended. Could this cause subsequent
I/O to assume the device is active and hang?

> +	}
>  
>  	return 0;
>  }
> @@ -2524,14 +2471,17 @@ static int ufs_mtk_runtime_suspend(struct device *dev)
>  static int ufs_mtk_runtime_resume(struct device *dev)
>  {
>  	struct ufs_hba *hba = dev_get_drvdata(dev);
> -	struct ufs_mtk_host *host = ufshcd_get_variant(hba);
>  	struct arm_smccc_res res;
> +	int ret;
>  
>  	if (ufs_mtk_is_rtff_mtcmos(hba))
>  		ufs_mtk_mtcmos_ctrl(true, res);
>  
> -	if (host->phy_dev)
> -		pm_runtime_get_sync(host->phy_dev);
> +	ret = ufs_mtk_mphy_power_on(hba, true);
> +	if (ret) {
> +		dev_err(dev, "Failed to power on PHY: %pe\n", ERR_PTR(ret));
> +		return ret;

[Severity: Medium]
Can this leak the MTCMOS power state if ufs_mtk_mphy_power_on() fails?

If ufs_mtk_mphy_power_on() fails, the function returns early without rolling
back the MTCMOS power state that was just enabled via
ufs_mtk_mtcmos_ctrl(true, res).

Does this leave the MTCMOS domain powered on indefinitely after a failed
resume attempt?

> +	}
>  
>  	ufs_mtk_dev_vreg_set_lpm(hba, false);
>

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261001-mt8196-ufs-v13-0-60854adab6d9@collabora.com?part=14

  reply	other threads:[~2026-10-01  8:34 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01  8:21 [PATCH v13 00/24] MediaTek UFS Cleanup and MT8196 Enablement Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 01/24] dt-bindings: phy: Add mediatek,mt8196-ufsphy variant Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 02/24] dt-bindings: ufs: mediatek,ufs: Complete the binding Louis-Alexis Eyraud
2026-10-01  8:38   ` sashiko-bot
2026-10-01  8:21 ` [PATCH v13 03/24] dt-bindings: ufs: mediatek,ufs: Add mt8196 variant Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 04/24] scsi: ufs: mediatek: Move MTK_SIP_UFS_CONTROL to mtk_sip_svc.h Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 05/24] phy: mediatek: ufs: Add support for resets Louis-Alexis Eyraud
2026-10-01  8:38   ` sashiko-bot
2026-10-01  8:21 ` [PATCH v13 06/24] scsi: ufs: mediatek: Rework resets Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 07/24] scsi: ufs: mediatek: Rework 0.9V regulator Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 08/24] scsi: ufs: mediatek: Add dual 0.9V supply support Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 09/24] scsi: ufs: mediatek: Rework init function Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 10/24] scsi: ufs: mediatek: Rework the crypt-boost stuff Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 11/24] scsi: ufs: mediatek: Handle misc host voltage regulators Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 12/24] scsi: ufs: mediatek: Remove undocumented downstream reset cruft Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 13/24] scsi: ufs: mediatek: Remove vendor kernel quirks cruft Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 14/24] scsi: ufs: mediatek: Use the common PHY framework Louis-Alexis Eyraud
2026-10-01  8:33   ` sashiko-bot [this message]
2026-10-01  8:21 ` [PATCH v13 15/24] scsi: ufs: mediatek: Remove mediatek,ufs-broken-rtc property Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 16/24] scsi: ufs: mediatek: Rework _ufs_mtk_clk_scale error paths Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 17/24] scsi: ufs: mediatek: Clean up logging prints Louis-Alexis Eyraud
2026-10-01  8:32   ` sashiko-bot
2026-10-01  8:21 ` [PATCH v13 18/24] scsi: ufs: mediatek: Rework ufs_mtk_wait_idle_state Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 19/24] scsi: ufs: mediatek: Don't acquire dvfsrc-vcore twice Louis-Alexis Eyraud
2026-10-01  8:30   ` sashiko-bot
2026-10-01  8:21 ` [PATCH v13 20/24] scsi: ufs: mediatek: Rework hardware version reading Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 21/24] scsi: ufs: mediatek: Back up idle timer in per-instance struct Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 22/24] scsi: ufs: mediatek: Remove ret local from link_startup_notify Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 23/24] scsi: ufs: mediatek: Remove undocumented "clk-scale-up-vcore-min" Louis-Alexis Eyraud
2026-10-01  8:21 ` [PATCH v13 24/24] scsi: ufs: mediatek: Add MT8196 compatible, update copyright Louis-Alexis Eyraud

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=20261001083359.B69411F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=louisalexis.eyraud@collabora.com \
    --cc=neil.armstrong@linaro.org \
    --cc=olteanv@gmail.com \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox