On Wed, Apr 07, 2021 at 04:37:15PM +0300, Dmitry Baryshkov wrote: > Hi, > > On Wed, 7 Apr 2021 at 16:12, Dmitry Baryshkov > <dmitry.baryshkov@xxxxxxxxxx> wrote: > > > > The commit 9ea483375ded ("PCI: dwc: Move forward the iATU detection > > process") broke PCIe support on Qualcomm SM8250 (and maybe other > > platforms) since it moves the call to dw_pcie_iatu_detect() at the > > beginning of the dw_pcie_host_init(), before ops->host_init() callback. > > Accessing PCIe registers at this point causes the board to reboot since > > not all clocks are enabled, making PCIe registers unavailable. > > > > Move dw_pcie_iatu_detect() call after calling ops->host_init() callback, > > so that all register are accessible. > > > > Cc: Hou Zhiqiang <Zhiqiang.Hou@xxxxxxx> > > Fixes: 9ea483375ded ("PCI: dwc: Move forward the iATU detection process") > > Please disregard the Fixes: tag here, the patch in question came to me > from a local tree, which I failed to notice. > The patch still applies on top of the previously dropped patch (and it > is the same fix as the one proposed for exynos by Marek Szyprowski at > https://lore.kernel.org/linux-pci/b777ab31-e0b9-bbc0-9631-72b93097919e@xxxxxxxxxxx/. Ok. Can you integrate Bjorn's changes (reported in the thread above) to the commit log and resend it with Marek in CC so that I can merge it please ? Thanks, Lorenzo > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@xxxxxxxxxx> > > --- > > drivers/pci/controller/dwc/pcie-designware-host.c | 3 +-- > > 1 file changed, 1 insertion(+), 2 deletions(-) > > > > diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c > > index 52f6887179cd..24192b40e3a2 100644 > > --- a/drivers/pci/controller/dwc/pcie-designware-host.c > > +++ b/drivers/pci/controller/dwc/pcie-designware-host.c > > @@ -319,8 +319,6 @@ int dw_pcie_host_init(struct pcie_port *pp) > > return PTR_ERR(pci->dbi_base); > > } > > > > - dw_pcie_iatu_detect(pci); > > - > > bridge = devm_pci_alloc_host_bridge(dev, 0); > > if (!bridge) > > return -ENOMEM; > > @@ -400,6 +398,7 @@ int dw_pcie_host_init(struct pcie_port *pp) > > if (ret) > > goto err_free_msi; > > } > > + dw_pcie_iatu_detect(pci); > > > > dw_pcie_setup_rc(pp); > > dw_pcie_msi_init(pp); > > -- > > 2.30.2 > > > > > -- > With best wishes > Dmitry