From: Bjorn Helgaas <helgaas@kernel.org> To: Richard Zhu <hongxing.zhu@nxp.com> Cc: l.stach@pengutronix.de, bhelgaas@google.com, robh+dt@kernel.org, broonie@kernel.org, lorenzo.pieralisi@arm.com, festevam@gmail.com, francesco.dolcini@toradex.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@pengutronix.de, linux-imx@nxp.com Subject: Re: [PATCH v10 6/7] PCI: imx6: Mark the link down as none fatal error Date: Mon, 13 Jun 2022 17:21:19 -0500 [thread overview] Message-ID: <20220613222119.GA716475@bhelgaas> (raw) In-Reply-To: <1655110538-10914-7-git-send-email-hongxing.zhu@nxp.com> On Mon, Jun 13, 2022 at 04:55:37PM +0800, Richard Zhu wrote: > let the driver probe successfully, return zero in imx6_pcie_start_link() > when PCIe link is down. > > Because i.MX PCIe doesn't support hot-plug feature. > In this link down scenario, only start the PCIe link training in resume > when the link is up before system suspend to avoid the long latency in > the link training period. This looks like two changes that should be separate patches: 1) Make driver probe successful even if link is down. 2) Reduce resume time by only starting the link if it was up before suspend. > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> > --- > drivers/pci/controller/dwc/pci-imx6.c | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c > index c02748393aac..ac6ec2d691a0 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -67,6 +67,7 @@ struct imx6_pcie { > struct dw_pcie *pci; > int reset_gpio; > bool gpio_active_high; > + bool link_is_up; > struct clk *pcie_bus; > struct clk *pcie_phy; > struct clk *pcie_inbound_axi; > @@ -845,7 +846,9 @@ static int imx6_pcie_start_link(struct dw_pcie *pci) > /* Start LTSSM. */ > imx6_pcie_ltssm_enable(dev); > > - dw_pcie_wait_for_link(pci); > + ret = dw_pcie_wait_for_link(pci); > + if (ret) > + goto err_reset_phy; > > if (pci->link_gen == 2) { > /* Allow Gen2 mode after the link is up. */ > @@ -881,11 +884,14 @@ static int imx6_pcie_start_link(struct dw_pcie *pci) > } > > /* Make sure link training is finished as well! */ > - dw_pcie_wait_for_link(pci); > + ret = dw_pcie_wait_for_link(pci); > + if (ret) > + goto err_reset_phy; > } else { > dev_info(dev, "Link: Gen2 disabled\n"); > } > > + imx6_pcie->link_is_up = true; > tmp = dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); > dev_info(dev, "Link up, Gen%i\n", tmp & PCI_EXP_LNKSTA_CLS); > return 0; > @@ -895,7 +901,7 @@ static int imx6_pcie_start_link(struct dw_pcie *pci) > dw_pcie_readl_dbi(pci, PCIE_PORT_DEBUG0), > dw_pcie_readl_dbi(pci, PCIE_PORT_DEBUG1)); > imx6_pcie_reset_phy(imx6_pcie); > - return ret; > + return 0; > } > > static int imx6_pcie_host_init(struct pcie_port *pp) > @@ -1022,10 +1028,8 @@ static int imx6_pcie_resume_noirq(struct device *dev) > imx6_pcie_init_phy(imx6_pcie); > imx6_pcie_deassert_core_reset(imx6_pcie); > dw_pcie_setup_rc(pp); > - > - ret = imx6_pcie_start_link(imx6_pcie->pci); > - if (ret < 0) > - dev_info(dev, "pcie link is down after resume.\n"); > + if (imx6_pcie->link_is_up) > + imx6_pcie_start_link(imx6_pcie->pci); > > return 0; > } > -- > 2.25.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org> To: Richard Zhu <hongxing.zhu@nxp.com> Cc: l.stach@pengutronix.de, bhelgaas@google.com, robh+dt@kernel.org, broonie@kernel.org, lorenzo.pieralisi@arm.com, festevam@gmail.com, francesco.dolcini@toradex.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@pengutronix.de, linux-imx@nxp.com Subject: Re: [PATCH v10 6/7] PCI: imx6: Mark the link down as none fatal error Date: Mon, 13 Jun 2022 17:21:19 -0500 [thread overview] Message-ID: <20220613222119.GA716475@bhelgaas> (raw) In-Reply-To: <1655110538-10914-7-git-send-email-hongxing.zhu@nxp.com> On Mon, Jun 13, 2022 at 04:55:37PM +0800, Richard Zhu wrote: > let the driver probe successfully, return zero in imx6_pcie_start_link() > when PCIe link is down. > > Because i.MX PCIe doesn't support hot-plug feature. > In this link down scenario, only start the PCIe link training in resume > when the link is up before system suspend to avoid the long latency in > the link training period. This looks like two changes that should be separate patches: 1) Make driver probe successful even if link is down. 2) Reduce resume time by only starting the link if it was up before suspend. > Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com> > --- > drivers/pci/controller/dwc/pci-imx6.c | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c > index c02748393aac..ac6ec2d691a0 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -67,6 +67,7 @@ struct imx6_pcie { > struct dw_pcie *pci; > int reset_gpio; > bool gpio_active_high; > + bool link_is_up; > struct clk *pcie_bus; > struct clk *pcie_phy; > struct clk *pcie_inbound_axi; > @@ -845,7 +846,9 @@ static int imx6_pcie_start_link(struct dw_pcie *pci) > /* Start LTSSM. */ > imx6_pcie_ltssm_enable(dev); > > - dw_pcie_wait_for_link(pci); > + ret = dw_pcie_wait_for_link(pci); > + if (ret) > + goto err_reset_phy; > > if (pci->link_gen == 2) { > /* Allow Gen2 mode after the link is up. */ > @@ -881,11 +884,14 @@ static int imx6_pcie_start_link(struct dw_pcie *pci) > } > > /* Make sure link training is finished as well! */ > - dw_pcie_wait_for_link(pci); > + ret = dw_pcie_wait_for_link(pci); > + if (ret) > + goto err_reset_phy; > } else { > dev_info(dev, "Link: Gen2 disabled\n"); > } > > + imx6_pcie->link_is_up = true; > tmp = dw_pcie_readw_dbi(pci, offset + PCI_EXP_LNKSTA); > dev_info(dev, "Link up, Gen%i\n", tmp & PCI_EXP_LNKSTA_CLS); > return 0; > @@ -895,7 +901,7 @@ static int imx6_pcie_start_link(struct dw_pcie *pci) > dw_pcie_readl_dbi(pci, PCIE_PORT_DEBUG0), > dw_pcie_readl_dbi(pci, PCIE_PORT_DEBUG1)); > imx6_pcie_reset_phy(imx6_pcie); > - return ret; > + return 0; > } > > static int imx6_pcie_host_init(struct pcie_port *pp) > @@ -1022,10 +1028,8 @@ static int imx6_pcie_resume_noirq(struct device *dev) > imx6_pcie_init_phy(imx6_pcie); > imx6_pcie_deassert_core_reset(imx6_pcie); > dw_pcie_setup_rc(pp); > - > - ret = imx6_pcie_start_link(imx6_pcie->pci); > - if (ret < 0) > - dev_info(dev, "pcie link is down after resume.\n"); > + if (imx6_pcie->link_is_up) > + imx6_pcie_start_link(imx6_pcie->pci); > > return 0; > } > -- > 2.25.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2022-06-13 22:21 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-06-13 8:55 [PATCH v10 0/7] PCI: imx6: refine codes and add the error propagation Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 8:55 ` [PATCH v10 1/7] PCI: imx6: Encapsulate the clock enable into one standalone function Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 8:55 ` [PATCH v10 2/7] PCI: imx6: Add the error propagation from host_init Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 8:55 ` [PATCH v10 3/7] PCI: imx6: Move imx6_pcie_clk_disable() earlier Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 8:55 ` [PATCH v10 4/7] PCI: imx6: Disable iMX6QDL PCIe REF clock when disable PCIe clocks Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 8:55 ` [PATCH v10 5/7] PCI: imx6: Turn off regulator when the system is in suspend mode Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 10:17 ` Francesco Dolcini 2022-06-13 10:17 ` Francesco Dolcini 2022-06-14 0:58 ` Hongxing Zhu 2022-06-14 0:58 ` Hongxing Zhu 2022-06-13 8:55 ` [PATCH v10 6/7] PCI: imx6: Mark the link down as none fatal error Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 22:21 ` Bjorn Helgaas [this message] 2022-06-13 22:21 ` Bjorn Helgaas 2022-06-14 1:02 ` Hongxing Zhu 2022-06-14 1:02 ` Hongxing Zhu 2022-06-13 8:55 ` [PATCH v10 7/7] PCI: imx6: Do not hide phy driver callbacks and refine the error handling Richard Zhu 2022-06-13 8:55 ` Richard Zhu 2022-06-13 20:41 ` [PATCH v10 0/7] PCI: imx6: refine codes and add the error propagation Bjorn Helgaas 2022-06-13 20:41 ` Bjorn Helgaas 2022-06-14 1:00 ` Hongxing Zhu 2022-06-14 1:00 ` Hongxing Zhu
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20220613222119.GA716475@bhelgaas \ --to=helgaas@kernel.org \ --cc=bhelgaas@google.com \ --cc=broonie@kernel.org \ --cc=festevam@gmail.com \ --cc=francesco.dolcini@toradex.com \ --cc=hongxing.zhu@nxp.com \ --cc=kernel@pengutronix.de \ --cc=l.stach@pengutronix.de \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=lorenzo.pieralisi@arm.com \ --cc=robh+dt@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.