Skip to content
Commit bdc11d78 authored by Siddharth Vadapalli's avatar Siddharth Vadapalli Committed by Xulin Sun
Browse files

PCI: keystone: Fix race condition when initializing PHYs

commit ff9c25f31f8dbe4c19559f13253f96b2fbc18df7 from
git://git.ti.com/ti-linux-kernel/ti-linux-kernel.git

The PCI driver invokes the PHY APIs using the ks_pcie_enable_phy()
function. The PHY in this case is the Serdes. It is possible that the
PCI instance is configured for 2 lane operation across two different
Serdes instances, using 1 lane of each Serdes. In such a configuration,
if the reference clock for one Serdes is provided by the other Serdes,
it results in a race condition. After the Serdes providing the reference
clock is initialized by the PCI driver by invoking its PHY APIs, it is
not guaranteed that this Serdes remains powered on long enough for the
PHY APIs based initialization of the dependent Serdes. In such cases,
the PLL of the dependent Serdes fails to lock due to the absence of the
reference clock from the former Serdes which has been powered off by the
PM Core.

Fix this by obtaining reference to the PHYs before invoking the PHY
initialization APIs and releasing reference after the initialization is
complete.

Fixes: 49229238

 ("PCI: keystone: Cleanup PHY handling")
Link: https://lore.kernel.org/r/20230927041845.1222080-1-s-vadapalli@ti.com/
Signed-off-by: default avatarSiddharth Vadapalli <s-vadapalli@ti.com>
Acked-by: default avatarRavi Gunasekaran <r-gunasekaran@ti.com>
Signed-off-by: default avatarXulin Sun <xulin.sun@windriver.com>
parent c4fa47d4
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment