• Lukas Wunner's avatar
    PCI: Avoid unnecessary resume after direct-complete · a0d2a959
    Lukas Wunner authored
    Commit 58a1fbbb ("PM / PCI / ACPI: Kick devices that might have been
    reset by firmware") added a runtime resume for devices that were runtime
    suspended when the system entered sleep.
    
    The motivation was that devices might be in a reset-power-on state after
    waking from system sleep, so their power state as perceived by Linux
    (stored in pci_dev->current_state) would no longer reflect reality.  By
    resuming such devices, we allow them to return to a low-power state via
    autosuspend and also bring their current_state in sync with reality.
    
    However for devices that are *not* in a reset-power-on state, doing an
    unconditional resume wastes energy.  A more refined approach is called for
    which issues a runtime resume only if the power state after direct-complete
    is shallower than it was before. To achieve this, update the device's
    current_state and compare it to its pre-sleep value.
    Signed-off-by: default avatarLukas Wunner <lukas@wunner.de>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Acked-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    a0d2a959
pci-driver.c 35.7 KB