On Fri, Oct 11, 2024 at 04:55:30PM -0700, Mayank Rana wrote: > PCIe controller device (i.e. PCIe starfive device) is parent to PCIe host > bridge device. To enable runtime PM of PCIe host bridge device (child > device), it is must to enable parent device's runtime PM to avoid seeing > WARN_ON as "Enabling runtime PM for inactive device with active children". "to avoid seeing the below warning from PM core: pcie-starfive 940000000.pcie: Enabling runtime PM for inactive device with active children" > Fix this issue by enabling starfive pcie controller device's runtime PM > before calling into pci_host_probe() through plda_pcie_host_init(). "before calling pci_host_probe() in plda_pcie_host_init()" > > Tested-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> > Signed-off-by: Mayank Rana <quic_mrana@xxxxxxxxxxx> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@xxxxxxxxxx> - Mani > --- > v1->v2: Updated commit description based on Bjorn's feedback > Link to v1: https://patchwork.kernel.org/project/linux-pci/patch/20241010202950.3263899-1-quic_mrana@xxxxxxxxxxx/ > > drivers/pci/controller/plda/pcie-starfive.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/drivers/pci/controller/plda/pcie-starfive.c b/drivers/pci/controller/plda/pcie-starfive.c > index 0567ec373a3e..e73c1b7bc8ef 100644 > --- a/drivers/pci/controller/plda/pcie-starfive.c > +++ b/drivers/pci/controller/plda/pcie-starfive.c > @@ -404,6 +404,9 @@ static int starfive_pcie_probe(struct platform_device *pdev) > if (ret) > return ret; > > + pm_runtime_enable(&pdev->dev); > + pm_runtime_get_sync(&pdev->dev); > + > plda->host_ops = &sf_host_ops; > plda->num_events = PLDA_MAX_EVENT_NUM; > /* mask doorbell event */ > @@ -413,11 +416,12 @@ static int starfive_pcie_probe(struct platform_device *pdev) > plda->events_bitmap <<= PLDA_NUM_DMA_EVENTS; > ret = plda_pcie_host_init(&pcie->plda, &starfive_pcie_ops, > &stf_pcie_event); > - if (ret) > + if (ret) { > + pm_runtime_put_sync(&pdev->dev); > + pm_runtime_disable(&pdev->dev); > return ret; > + } > > - pm_runtime_enable(&pdev->dev); > - pm_runtime_get_sync(&pdev->dev); > platform_set_drvdata(pdev, pcie); > > return 0; > -- > 2.25.1 > -- மணிவண்ணன் சதாசிவம்