[PATCH v3] PCI: keystone: Fix race condition when initializing PHYs
Krzysztof Wilczyński
kw at linux.com
Mon Jan 8 19:41:59 PST 2024
Hello,
> 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.
Applied to controller/keystone, thank you!
[1/1] PCI: keystone: Fix race condition when initializing PHYs
https://git.kernel.org/pci/pci/c/c12ca110c613
Krzysztof
More information about the linux-arm-kernel
mailing list