[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20241012035022.tvcffmnqzpqb7e6q@thinkpad>
Date: Sat, 12 Oct 2024 09:20:22 +0530
From: Manivannan Sadhasivam <manivannan.sadhasivam@...aro.org>
To: Mayank Rana <quic_mrana@...cinc.com>
Cc: kevin.xie@...rfivetech.com, lpieralisi@...nel.org, kw@...ux.com,
robh@...nel.org, bhelgaas@...gle.com, linux-pci@...r.kernel.org,
linux-kernel@...r.kernel.org, quic_krichai@...cinc.com,
Marek Szyprowski <m.szyprowski@...sung.com>
Subject: Re: [PATCH v2] PCI: starfive: Enable PCIe controller's runtime PM
before probing host bridge
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@...sung.com>
> Signed-off-by: Mayank Rana <quic_mrana@...cinc.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@...aro.org>
- 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@quicinc.com/
>
> 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
>
--
மணிவண்ணன் சதாசிவம்
Powered by blists - more mailing lists