linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 v15 0/17] PCI: imx6: refine codes and add the error propagation
Date: Thu, 14 Jul 2022 12:10:12 -0500	[thread overview]
Message-ID: <20220714171012.GA1029546@bhelgaas> (raw)
In-Reply-To: <1657783869-19194-1-git-send-email-hongxing.zhu@nxp.com>

On Thu, Jul 14, 2022 at 03:30:52PM +0800, Richard Zhu wrote:
> This series patches refine pci-imx6 driver and do the following main changes.
> - Encapsulate the clock enable into one standalone function
> - Add the error propagation from host_init and resume
> - Turn off regulator when the system is in suspend mode
> - Let the probe successfully when link never comes up
> - Do not hide the phy driver callbacks in core reset and clk_enable.
> - Keep symmetric as much as possible between suspend and resume callbacks.
> BTW, this series are verified on i.MX8MM EVK board when one NVME is used.
> 
> Main changes from v14 to v15 refer to Lucas' comments and Bjorn's suggestions:
> Only the five patches listed below have changes.
> 10/17
> - Remove regulator_disable() from imx6_pcie_shutdown() and update the commit
>   log accordingly refer to Lucas' comments.
> 11/17
> - Move the regulator enable before the PHY init and core reset assert to
>   avoid introducing more failure cleanup paths refer to Lucas' comments.
> 14/17 has the codes conflictions.
> - Rebase the 14/17 patch because of the codes conflictions introduced by
>   previous 11/17 new changes.
> 16/17
> - Add the missing the IMX8MQ case and drop the default case in
>   imx6_pcie_ltssm_disable() refer to Lucas' comments.
> 17/17
> - Rebase the codes and resolve the codes conflictions introduced by
>   previous 11/17 new changes.
> - Correct one failure cleanup in imx6_pcie_host_init().
> 
> Main changes from v13 to v14 refer to Bjorn's comments:
> - To keep suspend/resume symmetric as much as possible. Create
>   imx6_pcie_stop_link() and imx6_pcie_host_exit() functions, and invoke
>   them in suspend callback.
> - Since the imx6_pcie_clk_disable() is invoked by imx6_pcie_host_exit(),
>   to be symmetric with imx6_pcie_host_exit(), move imx6_pcie_clk_enable()
>   to imx6_pcie_host_init() from imx6_pcie_deassert_core_reset().
> 
> Main changes from v12 to v13:
> - Call imx6_pcie_host_init() instead of duplicating codes in resume.
> - Move the regulator enable out of imx6_pcie_deassert_core_reset().
>   Re-format the error handling in imx6_pcie_deassert_core_reset()
>   and imx6_pcie_host_init() accordingly.
> 
> Main changes from v11 to v12 issued by Bjorn:
> - Add four intro patches to move code around to collect similar things
>   (PHY management, reset management) together.  This makes the first
>   diff to collect clock enables simpler because it's not cluttered with
>   unrelated things that didn't actually change.
> - Factor out ref clock disables so the disable function structure matches
>   the enable structure.
> - Drop unused "ret" from "Reduce resume time ..." to avoid bisection
>   hole, then add it back in "Do not hide phy driver ..." where we start
>   using it again.
> - Add patch to make imx6_pcie_clk_disable() symmetric with
>   imx6_pcie_clk_enable() in terms of enable/disable ordering.
> 
> Main changes from v10 to v11:
> No code changes, just do the following operations refer to Bjorn's comments.
>   - Split #6 patch into two patches.
>   - Rebase to v5.19-rc1 based on for-next branch of Shawn's git.
> 
> Main changes from v9 to v10:
> - Add the "Reviewed-by: Lucas Stach <l.stach@pengutronix.de>" tag into #3
>   and #4 patches.
> - Refer to Bjorn's comments:
>   - refine the commit of the first patch
>   - keep alignment of the message format in the second patch
>   - More specific commit and subject of the #5 and #7 patches.
> - Move the regualtor_disable into suspend, turn off the regulator when bus
>   is powered off and system in suspend mode.
> - Let the driver probe successfully, return zero in imx6_pcie_start_link()
>   when PCIe link is down. 
>   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.
> - Don't hide phy driver callbacks in core reset and clk_enable, and refine
>   the error handling accordingly.
> - Drop the #8 patch of v9 series, since the clocks and powers are not gated
>   off anymore when link is down.
> 
> Main changes from v8 to v9:
> - Don't change pcie-designware codes, and do the error exit process only in
>   pci-imx6 driver internally.
> - Move the phy driver callbacks to the proper places
> 
> Main changes from v7 to v8:
> Regarding Bjorn's review comments.
> - Align the format of the dev_info message and refine commit log of
>   #6/7/8 patches.
> - Rename the err_reset_phy label, since there is no PHY reset in the out
> 
> Main changes from v6 to v7:
> - Keep the regulator usage counter balance in the #5 patch of v6 series.
> 
> Main changes from v5 to v6:
> - Refer to the following discussion with Fabio, fix the dump by his patch.
>   https://patchwork.kernel.org/project/linux-pci/patch/1641368602-20401-6-git-send-email-hongxing.zhu@nxp.com/
>   Refine and rebase this patch-set after Fabio' dump fix patch is merged.
> - Add one new #4 patch to disable i.MX6QDL REF clock too when disable clocks
> - Split the regulator refine codes into one standalone patch #5 in this version.
> 
> Main changes from v4 to v5:
> - Since i.MX8MM PCIe support had been merged. Based on Lorenzo's git repos,
>   resend the patch-set after rebase.
> 
> Main changes from v3 to v4:
> - Regarding Mark's comments, delete the regulator_is_enabled() check.
> - Squash #3 and #6 of v3 patch into #5 patch of v4 set.
> 
> Main changes from v2 to v3:
> - Add "Reviewed-by: Lucas Stach <l.stach@pengutronix.de>" tag into
>   first two patches.
> - Add a Fixes tag into #3 patch.
> - Split the #4 of v2 to two patches, one is clock disable codes move,
>   the other one is the acutal clock unbalance fix.
> - Add a new host_exit() callback into dw_pcie_host_ops, then it could be
>   invoked to handle the unbalance issue in the error handling after
>   host_init() function when link is down.
> - Add a new host_exit() callback for i.MX PCIe driver to handle this case
>   in the error handling after host_init.
> 
> Main changes from v1 to v2:
> Regarding Lucas' comments.
>   - Move the placement of the new imx6_pcie_clk_enable() to avoid the
>     forward declarition.
>   - Seperate the second patch of v1 patch-set to three patches.
>   - Use the module_param to replace the kernel command line.
> Regarding Bjorn's comments:
>   - Use the cover-letter for a multi-patch series.
>   - Correct the subject line, and refine the commit logs. For example,
>     remove the timestamp of the logs.
> 
> Bjorn Helgaas (5):
>   PCI: imx6: Move imx6_pcie_grp_offset(), imx6_pcie_configure_type()
>     earlier
>   PCI: imx6: Move PHY management functions together
>   PCI: imx6: Move imx6_pcie_enable_ref_clk() earlier
>   PCI: imx6: Factor out ref clock disable to match enable
>   PCI: imx6: Disable clocks in reverse order of enable
> 
> Richard Zhu (12):
>   PCI: imx6: Move imx6_pcie_clk_disable() earlier
>   PCI: imx6: Collect clock enables in imx6_pcie_clk_enable()
>   PCI: imx6: Propagate .host_init() errors to caller
>   PCI: imx6: Disable i.MX6QDL clock when disabling ref clocks
>   PCI: imx6: Call host init function directly in resume
>   PCI: imx6: Turn off regulator when system is in suspend mode
>   PCI: imx6: Move regulator enable out of
>     imx6_pcie_deassert_core_reset()
>   PCI: imx6: Mark the link down as non-fatal error
>   PCI: imx6: Reduce resume time by only starting link if it was up
>     before suspend
>   PCI: imx6: Do not hide phy driver callbacks and refine the error
>     handling
>   PCI: imx6: Move the imx6_pcie_ltssm_disable() earlier
>   PCI: imx6: Reformat suspend callback to keep symmetric with resume
> 
> drivers/pci/controller/dwc/pci-imx6.c | 660 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------
> 1 file changed, 357 insertions(+), 303 deletions(-)

Applied to pci/ctrl/imx6 for v5.20, thanks!

      parent reply	other threads:[~2022-07-14 17:10 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-14  7:30 [PATCH v15 0/17] PCI: imx6: refine codes and add the error propagation Richard Zhu
2022-07-14  7:30 ` [PATCH v15 01/17] PCI: imx6: Move imx6_pcie_grp_offset(), imx6_pcie_configure_type() earlier Richard Zhu
2022-07-14  7:30 ` [PATCH v15 02/17] PCI: imx6: Move PHY management functions together Richard Zhu
2022-07-14  7:30 ` [PATCH v15 03/17] PCI: imx6: Move imx6_pcie_enable_ref_clk() earlier Richard Zhu
2022-07-14  7:30 ` [PATCH v15 04/17] PCI: imx6: Move imx6_pcie_clk_disable() earlier Richard Zhu
2022-07-14  7:30 ` [PATCH v15 05/17] PCI: imx6: Factor out ref clock disable to match enable Richard Zhu
2022-07-14  7:30 ` [PATCH v15 06/17] PCI: imx6: Collect clock enables in imx6_pcie_clk_enable() Richard Zhu
2022-07-14  7:30 ` [PATCH v15 07/17] PCI: imx6: Propagate .host_init() errors to caller Richard Zhu
2022-07-14  7:31 ` [PATCH v15 08/17] PCI: imx6: Disable i.MX6QDL clock when disabling ref clocks Richard Zhu
2022-07-14  7:31 ` [PATCH v15 09/17] PCI: imx6: Call host init function directly in resume Richard Zhu
2022-07-14  7:31 ` [PATCH v15 10/17] PCI: imx6: Turn off regulator when system is in suspend mode Richard Zhu
2022-07-14  7:31 ` [PATCH v15 11/17] PCI: imx6: Move regulator enable out of imx6_pcie_deassert_core_reset() Richard Zhu
2022-07-14  7:31 ` [PATCH v15 12/17] PCI: imx6: Mark the link down as non-fatal error Richard Zhu
2022-07-14  7:31 ` [PATCH v15 13/17] PCI: imx6: Reduce resume time by only starting link if it was up before suspend Richard Zhu
2022-07-14  7:31 ` [PATCH v15 14/17] PCI: imx6: Do not hide PHY driver callbacks and refine the error handling Richard Zhu
2022-07-14  7:31 ` [PATCH v15 15/17] PCI: imx6: Disable clocks in reverse order of enable Richard Zhu
2022-07-14  7:31 ` [PATCH v15 16/17] PCI: imx6: Move the imx6_pcie_ltssm_disable() earlier Richard Zhu
2022-07-14  7:31 ` [PATCH v15 17/17] PCI: imx6: Reformat suspend callback to keep symmetric with resume Richard Zhu
2022-07-18 13:19   ` Guenter Roeck
2022-07-19 23:10     ` Bjorn Helgaas
2022-07-14 17:10 ` Bjorn Helgaas [this message]

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=20220714171012.GA1029546@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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).