Hello, > qcom_pcie_enable_resources() is called by qcom_pcie_ep_probe() and it > enables the controller resources like clocks, regulator, PHY. On one of the > new unreleased Qcom SoC, PHY enablement depends on the active refclk. And > on all of the supported Qcom endpoint SoCs, refclk comes from the host > (RC). So calling qcom_pcie_enable_resources() without refclk causes the > NoC (Network On Chip) error in the endpoint SoC and in turn results in a > whole SoC crash and rebooting into EDL (Emergency Download) mode which is > an unrecoverable state. > > But qcom_pcie_enable_resources() is already called by > qcom_pcie_perst_deassert() when PERST# is deasserted, and refclk is > available at that time. > > Hence, remove the unnecessary call to qcom_pcie_enable_resources() from > qcom_pcie_ep_probe() to prevent the above mentioned crash. > > It should be noted that this commit prevents the crash only under normal > working condition (booting endpoint before host), but the crash may also > occur if PERST# assert happens at the wrong time. For avoiding the crash > completely, it is recommended to use SRIS mode which allows the endpoint > SoC to generate its own refclk. The driver is not supporting SRIS mode > currently, but will be added in the future. Applied to controller/qcom, thank you! [1/1] PCI: qcom-ep: Enable controller resources like PHY only after refclk is available https://git.kernel.org/pci/pci/c/d3745e3ae6c0 Krzysztof