• Alan Stern's avatar
    USB: try to salvage lost power sessions · 8808f00c
    Alan Stern authored
    This patch (as1073) adds to khubd a way to recover from power-session
    interruption caused by transient connect-change or enable-change
    events.  After the debouncing period, khubd attempts to do a
    USB-Persist-style reset or reset-resume.  If it works, the connection
    will remain unscathed.
    
    The upshot is that we will be more immune to noise caused by EMI.  The
    grace period is on the order of 100 ms, so this won't permit recovery
    from the "accidentally knocked the USB cable out of its socket" type
    of event, but it's a start.
    
    As an added bonus, if a device was suspended when the system goes to
    sleep then we no longer need to check for power-session interruptions
    when the system wakes up.  Khubd will naturally see the status change
    while processing the device's parent hub and will do the right thing.
    
    The remote_wakeup() routine is changed; now it expects the caller to
    acquire the device lock rather than acquiring the lock itself.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    8808f00c
hub.c 94.9 KB