Devicetree
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Louis-Alexis Eyraud" <louisalexis.eyraud@collabora.com>
Cc: devicetree@vger.kernel.org, vkoul@kernel.org, olteanv@gmail.com,
	linux-scsi@vger.kernel.org, neil.armstrong@linaro.org,
	linux-phy@lists.infradead.org, conor+dt@kernel.org,
	robh@kernel.org
Subject: Re: [PATCH v12 14/24] scsi: ufs: mediatek: Use the common PHY framework
Date: Mon, 14 Sep 2026 12:58:40 +0000	[thread overview]
Message-ID: <20260914125840.98F0D1F0089A@smtp.kernel.org> (raw)
In-Reply-To: <20260914-mt8196-ufs-v12-14-9279d7ef814d@collabora.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

New issues:
- [High] Returning an error in `ufs_mtk_runtime_suspend` without rolling back the hardware state causes a fatal PM state desync.

Pre-existing issues:
- [High] `ufs_mtk_mphy_power_on` fails to update `mphy_powered_on` when returning an error, permanently desynchronizing the PHY state.
--

commit 090d0e1cc91ef448f0346929e47ee45484365fd1
Author: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>

scsi: ufs: mediatek: Use the common PHY framework

This commit changes the driver to use the common PHY framework to acquire the
device's PHY during initialization. This simplifies the driver by removing
reinvented PHY framework code and OF parsing.

> diff --git a/drivers/ufs/host/ufs-mediatek.c b/drivers/ufs/host/ufs-mediatek.c
> index 3c10a9fd09dfc..538009e3b1f17 100644
> --- a/drivers/ufs/host/ufs-mediatek.c
> +++ b/drivers/ufs/host/ufs-mediatek.c
[ ... ]
> @@ -2497,9 +2442,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)
> @@ -2510,8 +2454,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);

[Severity: High]
This is a pre-existing issue, but ufs_mtk_mphy_power_on() fails to update
mphy_powered_on when returning an error, which can permanently desynchronize
the PHY state.

Looking at ufs_mtk_mphy_power_on():

drivers/ufs/host/ufs-mediatek.c:ufs_mtk_mphy_power_on() {
    ...
	} else {
		phy_power_off(mphy);
		ret = ufs_mtk_09v_off(host);
		if (ret)
			return ret;
	}

	host->mphy_powered_on = on;

	return 0;
}

If ufs_mtk_09v_off() fails during power off, it returns the error immediately,
leaving host->mphy_powered_on as true.

On the next resume, ufs_mtk_mphy_power_on(hba, true) will return early because
on == host->mphy_powered_on, skipping phy_power_on(mphy).

Can this permanently leave the PHY powered off and make the storage
inaccessible?

> +	if (ret) {
> +		dev_err(dev, "Failed to power off PHY: %pe\n", ERR_PTR(ret));
> +		return ret;

[Severity: High]
If ufs_mtk_mphy_power_on() fails, this returns an error immediately without
rolling back the earlier suspend operations.

Since the UFS hardware is already left physically suspended (clocks gated,
VREGs and MTCMOS powered down via ufshcd_runtime_suspend and 
ufs_mtk_dev_vreg_set_lpm), returning an error causes the PM core to mismatch
the physical hardware state and consider the device active.

Can this cause a fatal PM state desync, where subsequent I/O requests crash or
hang the bus because the PM core will skip calling runtime_resume?

> +	}
>  
>  	return 0;
>  }

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260914-mt8196-ufs-v12-0-9279d7ef814d@collabora.com?part=14

  reply	other threads:[~2026-09-14 12:58 UTC|newest]

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

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=20260914125840.98F0D1F0089A@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