• Rafael J. Wysocki's avatar
    PCI / ACPI / PM: Resume all bridges on suspend-to-RAM · 9d64b539
    Rafael J. Wysocki authored
    Commit 26112ddc (PCI / ACPI / PM: Resume bridges w/o drivers on
    suspend-to-RAM) attempted to fix a functional regression resulting
    from commit c62ec461 (PM / core: Fix direct_complete handling
    for devices with no callbacks) by resuming PCI bridges without
    drivers (that is, "parallel PCI" ones) during system-wide suspend if
    the target system state is not ACPI S0 (working state).
    
    That turns out insufficient, however, as it is reported that, at
    least in one case, the platform firmware gets confused if a PCIe
    root port is suspended before entering the ACPI S3 sleep state.
    That issue was exposed by commit 77b3729ca03 (PCI / PM: Use
    SMART_SUSPEND and LEAVE_SUSPENDED flags for PCIe ports) that allowed
    PCIe ports to stay in runtime suspend during system-wide suspend
    (which is OK for suspend-to-idle, but turns out to be problematic
    otherwise).
    
    For this reason, drop the driver check from acpi_pci_need_resume()
    and resume all bridges (including PCIe ports with drivers) during
    system-wide suspend if the target system state is not ACPI S0.
    
    [If the target system state is ACPI S0, it means suspend-to-idle
     and the platform firmware is not going to be invoked to actually
     suspend the system, so there is no need to resume the bridges in
     that case.]
    
    Fixes: 77b3729ca03 (PCI / PM: Use SMART_SUSPEND and LEAVE_SUSPENDED flags for PCIe ports)
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=200675Reported-by: default avatarteika kazura <teika@gmx.com>
    Tested-by: default avatarteika kazura <teika@gmx.com>
    Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Acked-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Cc: 4.16+ <stable@vger.kernel.org> # 4.16+: 26112ddc (PCI / ACPI / PM: Resume bridges ...)
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    9d64b539
pci-acpi.c 22.5 KB