• Rafael J. Wysocki's avatar
    PCI PM: make the PM core more careful with drivers using the new PM framework · 5294e256
    Rafael J. Wysocki authored
    Currently, the PM core always attempts to manage devices with drivers
    that use the new PM framework.  In particular, it attempts to disable
    the devices (which is unnecessary), to save their state (which may be
    undesirable if the driver has done that already) and to put them into
    low power states (again, this may be undesirable if the driver has
    already put the device into a low power state).  That need not be
    the right thing to do, so make the core be more careful in this
    respect.
    
    Generally, there are the following categories of devices to consider:
    * bridge devices without drivers
    * non-bridge devices without drivers
    * bridge devices with drivers
    * non-bridge devices with drivers
    and each of them should be handled differently.
    
    For bridge devices without drivers the PCI PM core will save their
    state on suspend and restore it (early) during resume, after putting
    them into D0 if necessary.  It will not attempt to do anything else
    to these devices.
    
    For non-bridge devices without drivers the PCI PM core will disable
    them and save their state on suspend.  During resume, it will put
    them into D0, if necessary, restore their state (early) and reenable
    them.
    
    For bridge devices with drivers the PCI PM core will only save
    their state on suspend if the driver hasn't done that already.
    Still, the core will restore their state (early) during resume,
    after putting them into D0, if necessary.
    
    For non-bridge devices with drivers the PCI PM core will only save
    their state on suspend if the driver hasn't done that already.  Also,
    if the state of the device hasn't been saved by the driver, the core
    will attempt to put the device into a low power state.  During
    resume the core will restore the state of the device (early), after
    putting it into D0, if necessary.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Acked-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    5294e256
pci-driver.c 23.1 KB