• Rafael J. Wysocki's avatar
    PCI / PM: Avoid resuming more devices during system suspend · 2cef548a
    Rafael J. Wysocki authored
    Commit bac2a909 (PCI / PM: Avoid resuming PCI devices during
    system suspend) introduced a mechanism by which some PCI devices that
    were runtime-suspended at the system suspend time might be left in
    that state for the duration of the system suspend-resume cycle.
    However, it overlooked devices that were marked as capable of waking
    up the system just because PME support was detected in their PCI
    config space.
    
    Namely, in that case, device_can_wakeup(dev) returns 'true' for the
    device and if the device is not configured for system wakeup,
    device_may_wakeup(dev) returns 'false' and it will be resumed during
    system suspend even though configuring it for system wakeup may not
    really make sense at all.
    
    To avoid this problem, simply disable PME for PCI devices that have
    not been configured for system wakeup and are runtime-suspended at
    the system suspend time for the duration of the suspend-resume cycle.
    
    If the device is in D3cold, its config space is not available and it
    shouldn't be written to, but that's only possible if the device
    has platform PM support and the platform code is responsible for
    checking whether or not the device's configuration is suitable for
    system suspend in that case.
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    2cef548a
pci.c 121 KB