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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sergei Shtylyov wrote:
Hello.

Alan Stern wrote:

Best guess (and it's a guess only) would be that the USB bridge SAT
layer doesn't implement ATA_16 and so fails in interesting ways when it
comes in.  Does the ATA_12 version of IDENTIFY DEVICE succeed?
It does.  And in between the two is an ATA_16 SET FEATURES command
which also (apparently) succeeds.  That is, there is no error
indication from the device -- but goodness knows if it actually carries
out the command.

Incidentally, there's a discussion of this problem with input from an
engineer at the company that makes the bridge chip here:

https://bugs.launchpad.net/ubuntu/+source/linux-fsl-imx51/+bug/431963

See comment #25 and later.  He claims that the ATA pass-through command
contains a SECTOR COUNT field of 0 even though it asks for 512 bytes of
IDENTIFY data.  This invalid parameter combination causes the bridge
chip to get confused, and instead of failing gracefully, it messes up
the USB protocol.

IDENTIFY DEVICE command always returns 512 bytes of data, regardless of any value in the sector count register.

Does anybody know where to find out why hdparm is sending an IDENTIFY command with invalid parameters?

  IDENTIFY DEVICE command has *no* parameters.

Confirming that, what is put in the ATA_16 sector
count field is what the ATA command (IDENTIFY DEVICE)
expects in its count field. And according to ACS-2 (rev 2)
for IDENTIFY DEVICE that is "N/A" which I would
interpret as zero.

Mark Lord is the author of hdparm and I have added
him to the cc list.

Using SAT that IDENTIFY DEVICE response can be obtained
in one of three ways:
  - the SCSI ATA PASS-THROUGH(12) command
  - the SCSI ATA PASS-THROUGH(16) command
  - SCSI ATA Information VPD page (89h)

The latter can be fetched via a SCSI INQUIRY command.
Now vendors can screw up on any or all of the above
ways. I would like to suggest to Mark to have some
way of using the VPD page technique with hdparm.

The idea of SAT is to use the SCSI equivalent command
and then, as a last resort, use the ATA PASS-THROUGH
commands. A really good SAT implementation might
block the pass-through commands (they are optional).

Doug Gilbert



--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux