During suspend to mem/freeze, pcieport either take more than 1 second to suspend, or more than 1 second to resume, or even both. analyze_suspend shows that most of the time is spent in acpi_ps_parse_aml.
Created attachment 243421 [details] acpidump output
Hi, Yu, please confirm if the problem is gone with boot option pcie_ports=compat
tested on top of 4.9-rc7, with pcie_ports=compat, the resume time for pcieport(0000:00:1c.5) has not dropped, it's 1131ms.
so this is not a duplicate of bug #99751
According to suspenresume result based on ftrace, it tooks more than 1 second to finish the following process on device: # cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:66/path \_SB_.PCI0.RP06 # cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:66/adr 0x001c0005 pci_pm_resume_noirq->acpi_device_set_power, thus _PS0 under this device has taken more than 1 second to finish. Method (_PS0, 0, Serialized) // _PS0: Power State 0 { If (((OSDW () && NVME) == 0x00)) { GD56 = 0x01 PSTA = 0x00 Local0 = 0x00 While ((\_SB.PCI0.RP06.PSTA != 0x00)) { If ((Local0 > 0x1388)) { Break } Sleep (0x01) Local0++ } Sleep (0x46) L23D = 0x01 Sleep (0x01) Local0 = 0x00 While (L23D) { If ((Local0 > 0x04)) { Break } Sleep (0x01) Local0++ } LEDM = 0x00 Local0 = (Timer + 0x00989680) While ((Timer <= Local0)) { If (((LACT == 0x01) && (\_SB.PCI0.RP06.SSD0.CLAS == 0x01))) { Break } Sleep (0x0A) } } } Furthermore, according to acpi tracer result by appending: acpi.trace_method_name=_SB.PCI0.RP06._PS0 acpi.trace_state=opcode it shows that the third while loop is always running until time out, that is to say, the condition of (LACT == 0x01) && (\_SB.PCI0.RP06.SSD0.CLAS == 0x01) is never met. While LACT and _SB.PCI-.RP06.SSD0.CLAS is located in pci config space, I'd rather regard this issue as a firmware problem.
Created attachment 254211 [details] the opcode log during resumed invoking _PS0