• Rafael J. Wysocki's avatar
    USB: Fix suspend-resume of PCI USB controllers · a15d95a0
    Rafael J. Wysocki authored
    Commit a0d4922d
    (USB: fix up suspend and resume for PCI host controllers) attempted
    to fix the suspend-resume of PCI USB controllers, but unfortunately
    it did that incorrectly and interrupts are left enabled by the USB
    controllers' ->suspend_late() callback as a result.  This leads to
    serious problems during suspend which are very difficult to debug.
    
    Fix the issue by removing the ->suspend_late() callback of PCI
    USB controllers and moving the code from there to the ->suspend()
    callback executed with interrupts enabled.  Additionally, make
    the ->resume() callback of PCI USB controllers execute
    pci_enable_wake(dev, PCI_D0, false) to disable wake-up from the
    full power state (PCI_D0).
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Tested-by: default avatarAndrey Borzenkov <arvidjaar@mail.ru>
    Tested-by: default avatar"Jeff Chua" <jeff.chua.linux@gmail.com>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Christian Borntraeger <borntraeger@de.ibm.com>
    Cc: "Zdenek Kabelac" <zdenek.kabelac@gmail.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    a15d95a0
hcd.h 15.8 KB