• Rafael J. Wysocki's avatar
    PCI PM: Power up devices before restoring their state · 48f67f54
    Rafael J. Wysocki authored
    Devices that have MSI-X enabled before suspend to RAM or hibernation
    and that are in a low power state during resume will not be handled
    correctly by pci_restore_standard_config().  Namely, it first calls
    pci_restore_state() which calls pci_restore_msi_state(), which in turn
    executes __pci_restore_msix_state() that accesses the device's memory
    space to restore the contents of the MSI-X table.  However, if the
    device is in a low power state at this point, it's memory space is
    not accessible.
    
    The easiest way to fix this potential problem is to make
    pci_restore_standard_config() call pci_restore_state() after
    it has put the device into the full power state, D0.  Fortunately,
    all of this is done with interrupts off, so the change of ordering
    should not cause any trouble.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    48f67f54
pci.c 63.3 KB