Re: [PATCH v4 0/2] PCI: Add missing link delays

From: Bjorn Helgaas
Date: Thu Nov 14 2019 - 18:25:38 EST


On Tue, Nov 12, 2019 at 12:16:15PM +0300, Mika Westerberg wrote:
> Hi,
>
> This is fourth version of the reworked PCIe link delay patch posted earlier
> here:
>
> v3: https://www.spinics.net/lists/linux-pci/msg88760.html
> v2: https://lore.kernel.org/linux-pci/20191004123947.11087-1-mika.westerberg@xxxxxxxxxxxxxxx/
> v1: https://patchwork.kernel.org/patch/11106611/
>
> Changes from v3:
>
> * Add tag from Rafael.
> * Hold pci_bus_sem when accessing bus->devices list.
>
> Changes from v2:
>
> * Rebased on top of pci.git/pci/pm.
> * Update references to PCIe 5.0 spec.
> * Take d3cold_delay if child devices into account. This allows ACPI _DSM
> to lower the delay.
> * Check for pci_dev->skip_bus_pm in pci_pm_resume_noirq().
> * Drop comment that mentions pciehp where
> pci_bridge_wait_for_secondary_bus() is called.
> * Use pcie_downstream_port() in pci_bridge_wait_for_secondary_bus().
>
> Based on the discussion around v2 there is a potential issue when restoring
> PCI_EXP_LNKCTL2 (regardless these patches) that we may need to retrain the
> link. This series does not include fix for that since it is not yet clear
> how we solve it. I can do that as a separate patch once we agree on the
> solution.
>
> I'm submitting these two now in hopes that we can get them included for
> v5.5 because there are systems out there that need them in order to
> function properly.
>
> Changes from v1:
>
> * Introduce pcie_wait_for_link_delay() in a separate patch
> * Tidy up changelog, remove some debug output
> * Rename pcie_wait_downstream_accessible() to
> pci_bridge_wait_for_secondary_bus() and make it generic to all PCI
> bridges.
> * Handle Tpvrh + Trhfa for conventional PCI even though we don't do PM
> for them right now.
> * Use pci_dbg() instead of dev_dbg().
> * Dropped check for pm_suspend_no_platform() and only check for D3cold.
> * Drop pcie_get_downstream_delay(), same delay applies equally to all
> devices (it is not entirely clear from the spec).
>
> Mika Westerberg (2):
> PCI: Introduce pcie_wait_for_link_delay()
> PCI: Add missing link delays required by the PCIe spec
>
> drivers/pci/pci-driver.c | 11 ++-
> drivers/pci/pci.c | 148 ++++++++++++++++++++++++++++++++++++---
> drivers/pci/pci.h | 1 +
> 3 files changed, 150 insertions(+), 10 deletions(-)

Applied to pci/pm for v5.5, thanks, Mika!