[trusty, precise/lts-backport-saucy SRU][PATCH 0/1] Fixes to the USB 3.0 detection as 2.0 on AMD platform

Gavin Guo gavin.guo at canonical.com
Mon Jul 28 08:53:21 UTC 2014


BugLink: https://bugs.launchpad.net/bugs/1322409

== SRU Justification ==
As the discussion in http://comments.gmane.org/gmane.linux.usb.general/107011,
I found that [AMD] FCH USB XHCI Controller [1022:7814] the USB 3.0 disk
can't work in SuperSpeed after several times of hotplug. After doing some
experiments and bisection, I found the bug is caused by
41e7e056cdc662f704fa9262e5c6e213b4ab45dd (USB: Allow USB 3.0 ports to be
disabled.). And the bug can be fixed by not executing the
hub_usb3_port_disable() function. I also found that the port status is
already in RxDetect before setting the port to Disabled in
hub_usb3_port_disable() function.

The patch check if the port status is already in RxDetect, if yes, return
without executing the remaining code.

== Fix ==
commit bb86cf569bbd7ad4dce581a37c7fbd748057e9dc
Author: Gavin Guo <gavin.guo at canonical.com>
Date:   Fri Jul 18 01:12:13 2014 +0800

    usb: Check if port status is equal to RxDetect
    
    When using USB 3.0 pen drive with the [AMD] FCH USB XHCI Controller
    [1022:7814], the second hotplugging will experience the USB 3.0 pen
    drive is recognized as high-speed device. After bisecting the kernel,
    I found the commit number 41e7e056cdc662f704fa9262e5c6e213b4ab45dd
    (USB: Allow USB 3.0 ports to be disabled.) causes the bug. After doing
    some experiments, the bug can be fixed by avoiding executing the function
    hub_usb3_port_disable(). Because the port status with [AMD] FCH USB
    XHCI Controlleris [1022:7814] is already in RxDetect
    (I tried printing out the port status before setting to Disabled state),
    it's reasonable to check the port status before really executing
    hub_usb3_port_disable().
    
    Fixes: 41e7e056cdc6 (USB: Allow USB 3.0 ports to be disabled.)
    Signed-off-by: Gavin Guo <gavin.guo at canonical.com>
    Acked-by: Alan Stern <stern at rowland.harvard.edu>
    Cc: <stable at vger.kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>


== Test Case ==
The commit has been tested on the 2 platforms which all use the same AMD
controller [1022:7814]. There are totally 3 ports. And each port has been
tested for 30 times of hot-plugging. All of the results showed the USB 3.0 pen
drive is Superspeed device.

Gavin Guo (1):
  usb: Check if port status is equal to RxDetect

 drivers/usb/core/hub.c |   19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

-- 
1.7.9.5





More information about the kernel-team mailing list