• Sarah Sharp's avatar
    xhci: Fix USB 3.0 device restart on resume. · 28d9b0f6
    Sarah Sharp authored
    commit d0cd5d48 upstream.
    
    The xHCI hub port code gets passed a zero-based port number by the USB
    core.  It then adds one to in order to find a device slot by port number
    and device speed by calling xhci_find_slot_id_by_port.  That function
    clearly states it requires a one-based port number.  The xHCI port
    status change event handler was using a zero-based port number that it
    got from find_faked_portnum_from_hw_portnum, not a one-based port
    number.  This lead to the doorbells never being rung for a device after
    a resume, or worse, a different device with the same speed having its
    doorbell rung (which could lead to bad power management in the xHCI host
    controller).
    
    This patch should be backported to kernels as old as 2.6.39.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: default avatarAndiry Xu <andiry.xu@amd.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    28d9b0f6
xhci-ring.c 112 KB