Thread (37 messages) 37 messages, 3 authors, 2026-03-27

RE: [PATCH v5 phy-next 09/27] scsi: ufs: exynos: stop poking into struct phy guts

From: "Alim Akhtar" <alim.akhtar@samsung.com>
Date: 2026-03-24 02:30:04
Also in: dri-devel, linux-arm-kernel, linux-arm-msm, linux-can, linux-gpio, linux-ide, linux-media, linux-pci, linux-phy, linux-renesas-soc, linux-riscv, linux-rockchip, linux-samsung-soc, linux-scsi, linux-sunxi, linux-tegra, linux-usb, lkml, spacemit

HI Vladimir,
-----Original Message-----
From: Vladimir Oltean <vladimir.oltean@nxp.com>
Sent: Friday, March 20, 2026 4:02 AM
To: linux-phy@lists.infradead.org
Cc: Vinod Koul <vkoul@kernel.org>; Neil Armstrong
[off-list ref]; dri-devel@lists.freedesktop.org;
freedreno@lists.freedesktop.org; linux-arm-kernel@lists.infradead.org;
linux-arm-msm@vger.kernel.org; linux-can@vger.kernel.org; linux-
gpio@vger.kernel.org; linux-ide@vger.kernel.org; linux-
kernel@vger.kernel.org; linux-media@vger.kernel.org; linux-
pci@vger.kernel.org; linux-renesas-soc@vger.kernel.org; linux-
riscv@lists.infradead.org; linux-rockchip@lists.infradead.org;
linux-samsung-
soc@vger.kernel.org; linux-scsi@vger.kernel.org;
linux-sunxi@lists.linux.dev;
linux-tegra@vger.kernel.org; linux-usb@vger.kernel.org;
netdev@vger.kernel.org; spacemit@lists.linux.dev;
UNGLinuxDriver@microchip.com; Bart Van Assche [off-list ref];
Alim Akhtar [off-list ref]; Peter Griffin
[off-list ref]; James E.J. Bottomley
[off-list ref]; Martin K. Petersen
[off-list ref]; Krzysztof Kozlowski [off-list ref];
Chanho Park [off-list ref]
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@nxp.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
---
Thanks for the patch
Acked-by: Alim Akhtar <alim.akhtar@samsung.com>

Tested this patch for basic UFS functionality, UFS still works. 
Feel free to add
Tested-by: Alim Akhtar <alim.akhtar@samsung.com>


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help