• Harry Pan's avatar
    usb: quirk: add no-LPM quirk on SanDisk Ultra Flair device · 2f2dde6b
    Harry Pan authored
    Some lower volume SanDisk Ultra Flair in 16GB, which the VID:PID is
    in 0781:5591, will aggressively request LPM of U1/U2 during runtime,
    when using this thumb drive as the OS installation key we found the
    device will generate failure during U1 exit path making it dropped
    from the USB bus, this causes a corrupted installation in system at
    the end.
    
    i.e.,
    [  166.918296] hub 2-0:1.0: state 7 ports 7 chg 0000 evt 0004
    [  166.918327] usb usb2-port2: link state change
    [  166.918337] usb usb2-port2: do warm reset
    [  166.970039] usb usb2-port2: not warm reset yet, waiting 50ms
    [  167.022040] usb usb2-port2: not warm reset yet, waiting 200ms
    [  167.276043] usb usb2-port2: status 02c0, change 0041, 5.0 Gb/s
    [  167.276050] usb 2-2: USB disconnect, device number 2
    [  167.276058] usb 2-2: unregistering device
    [  167.276060] usb 2-2: unregistering interface 2-2:1.0
    [  167.276170] xhci_hcd 0000:00:15.0: shutdown urb ffffa3c7cc695cc0 ep1in-bulk
    [  167.284055] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
    [  167.284064] sd 0:0:0:0: [sda] tag#0 CDB: Read(10) 28 00 00 33 04 90 00 01 00 00
    ...
    
    Analyzed the USB trace in the link layer we realized it is because
    of the 6-ms timer of tRecoveryConfigurationTimeout which documented
    on the USB 3.2 Revision 1.0, the section 7.5.10.4.2 of "Exit from
    Recovery.Configuration"; device initiates U1 exit -> Recovery.Active
    -> Recovery.Configuration, then the host timer timeout makes the link
    transits to eSS.Inactive -> Rx.Detect follows by a Warm Reset.
    
    Interestingly, the other higher volume of SanDisk Ultra Flair sharing
    the same VID:PID, such as 64GB, would not request LPM during runtime,
    it sticks at U0 always, thus disabling LPM does not affect those thumb
    drives at all.
    
    The same odd occures in SanDisk Ultra Fit 16GB, VID:PID in 0781:5583.
    Signed-off-by: default avatarHarry Pan <harry.pan@intel.com>
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    2f2dde6b
quirks.c 16.3 KB