[PATCH v5 phy-next 09/27] scsi: ufs: exynos: stop poking into struct phy guts
Alim Akhtar
alim.akhtar at samsung.com
Mon Mar 23 10:26:51 PDT 2026
HI Vladimir,
> -----Original Message-----
> From: Vladimir Oltean <vladimir.oltean at nxp.com>
> Sent: Friday, March 20, 2026 4:02 AM
> To: linux-phy at lists.infradead.org
> Cc: Vinod Koul <vkoul at kernel.org>; Neil Armstrong
> <neil.armstrong at linaro.org>; dri-devel at lists.freedesktop.org;
> freedreno at lists.freedesktop.org; linux-arm-kernel at lists.infradead.org;
> linux-arm-msm at vger.kernel.org; linux-can at vger.kernel.org; linux-
> gpio at vger.kernel.org; linux-ide at vger.kernel.org; linux-
> kernel at vger.kernel.org; linux-media at vger.kernel.org; linux-
> pci at vger.kernel.org; linux-renesas-soc at vger.kernel.org; linux-
> riscv at lists.infradead.org; linux-rockchip at lists.infradead.org;
linux-samsung-
> soc at vger.kernel.org; linux-scsi at vger.kernel.org;
linux-sunxi at lists.linux.dev;
> linux-tegra at vger.kernel.org; linux-usb at vger.kernel.org;
> netdev at vger.kernel.org; spacemit at lists.linux.dev;
> UNGLinuxDriver at microchip.com; Bart Van Assche <bvanassche at acm.org>;
> Alim Akhtar <alim.akhtar at samsung.com>; Peter Griffin
> <peter.griffin at linaro.org>; James E.J. Bottomley
> <James.Bottomley at HansenPartnership.com>; Martin K. Petersen
> <martin.petersen at oracle.com>; Krzysztof Kozlowski <krzk at kernel.org>;
> Chanho Park <chanho61.park at samsung.com>
> Subject: [PATCH v5 phy-next 09/27] scsi: ufs: exynos: stop poking into
struct
> phy guts
>
> The Exynos host controller driver is clearly a PHY consumer (gets the
> ufs->phy using devm_phy_get()), but pokes into the guts of struct phy
> to get the generic_phy->power_count.
>
> The UFS core (specifically ufshcd_link_startup()) may call the variant
> operation exynos_ufs_pre_link() -> exynos_ufs_phy_init() multiple times if
> the link startup fails and needs to be retried.
>
> However ufs-exynos shouldn't be doing what it's doing, i.e. looking at the
> generic_phy->power_count, because in the general sense of the API, a
> single Generic PHY may have multiple consumers. If ufs-exynos looks at
> generic_phy->power_count, there's no guarantee that this ufs-exynos
> instance is the one who previously bumped that power count. So it may be
> powering down the PHY on behalf of another consumer.
>
> The correct way in which this should be handled is ufs-exynos should
> *remember* whether it has initialized and powered up the PHY before, and
> power it down during link retries. Not rely on the power_count (which,
btw,
> on the writer side is modified under &phy->mutex, but on the reader side
is
> accessed unlocked). This is a discouraged pattern even if here it doesn't
> cause functional problems.
>
> Signed-off-by: Vladimir Oltean <vladimir.oltean at nxp.com>
> Reviewed-by: Bart Van Assche <bvanassche at acm.org>
> ---
Thanks for the patch
Acked-by: Alim Akhtar <alim.akhtar at samsung.com>
Tested this patch for basic UFS functionality, UFS still works.
Feel free to add
Tested-by: Alim Akhtar <alim.akhtar at samsung.com>
More information about the Linux-rockchip
mailing list