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!