• Rafael J. Wysocki's avatar
    PCI: PCIe portdrv: Fix suspend and resume of PCI Express port services · e7ae8848
    Rafael J. Wysocki authored
    There is a problem with the suspend and resume of PCI Express port
    service devices that the ->suspend() and ->resume() routines of each
    service device are called twice in each suspend-resume cycle, which
    is obviously wrong.
    
    The scenario is that first, the PCI Express port driver calls
    suspend and resume routines of each port service driver from its
    pcie_portdrv_suspend() and pcie_portdrv_resume() callbacks,
    respectively (which is correct), and second, the pcie_port_bus_type
    driver calls them from its ->suspend() and ->resume() callbacks
    (which is not correct, because it doesn't happen at the right time).
    
    The solution is to remove the ->suspend() and ->resume() callbacks
    from pcie_port_bus_type and the associated functions.
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    e7ae8848
portdrv_core.c 11.7 KB