Re: System hangs when using USB 3.0 HD with on Ubuntu

Douglas Gilbert
2010-03-26T19:10:41Z

Sarah Sharp wrote:
> On Wed, Mar 24, 2010 at 07:07:58PM +0100, Jonas Schwertfeger wrote:
>> On Wed, Mar 24, 2010 at 4:59 PM, Sarah Sharp
>> <sarah.a.sharp@linux.intel.com> wrote:
>>> Despite the fact that this device probably won't work for 2.6.31 or
>>> 2.6.32, the xHCI driver shouldn't be hanging the system. The reset
>>> device API probably shouldn't be back ported to those kernels, but I can
>>> allow the USB core to disable the device's port instead.
>> In 2.6.31 the drive would show up as /dev/sdb and be mountable. The
>> system froze when I mounted it and then tried to partition it. In
>> 2.6.32 however the drive does not even show up in /dev/. Thus, I
>> cannot reproduce a system hang here.
>
> Hmm, ok, I would rather figure out why 2.6.31 is hanging, since 2.6.32
> does not. Can you compile the latest 2.6.31 stable tree and use
> netconsole to capture the crash with CONFIG_USB_XHCI_HCD_DEBUGGING and
> CONFIG_USB_STORAGE_DEBUG turned on? (I assume you know how to use
> netconsole, but if you don't, I've posted how I setup netconsole at
> http://sarah.thesharps.us/2010-03-26-09-41)
>
>> I configured USB storage debugging and attached another log file. If
>> there is not enough information in it let me know I will proceed with
>> Alan's suggestion of using usbmon.
>
> I think the amount of information is fine, but I'm not sure why the
> device would respond with a stall to this particular command, so I'm
> CC'ing the USB storage list and SCSI list. Does anyone know what the
> third command is? The USB storage driver reports it as an "unknown
> command". I can see from scsi.h that 0x85 is the code for ATA_16, but
> I'm not sure what that command actually does.

ATA commands are being tunnelled through SCSI commands
as defined in section 12.2 of this draft:
http://www.t10.org/cgi-bin/ac.pl?t=f&f=sat2r09.pdf
[The access control page will accept most anything in its
fields.]

In the case of the SCSI ATA PASS-THROUGH 16 (i.e. ATA_16)
command (opcode 85(hex) in the first byte) the tunnelled
ATA command code is the second last byte (e.g. "ec" on
the command that seemed to crash).

Doug Gilbert