SAT: ATA PASS THROUGH sector count for IDENTIFY DEVICE

Mark Overby MOverby at nvidia.com
Wed Apr 21 07:12:28 PDT 2010


Formatted message: <a href="http://www.t10.org/cgi-bin/ac.pl?t=r&f=r1004210_f.htm">HTML-formatted message</a>

Well, except for a few command that use the non-data protocol of course. But
Jim is quite correct on the DMA and PIO protocols, all of them require data
transfer.
On 4/20/10 6:23 PM, "Jim Hatfield" <James.C.Hatfield at seagate.com> wrote:
For ATA (SATA or PATA), the Count field should NEVER be zero, because neither
interface supports zero-length data transfer for any protocol (dma, pio,
etc).
In ATA, 'N/A' is defined the way it is because there are some ancient
implementations for which there are vendor specific differences.
If a NOTE is needed, perhaps that is beneficial for those not as familiar
with ATA.
Thank You !!!
-----------------------------------------------------------------
Jim Hatfield
Seagate Technology LLC
   e-mail:  James.C.Hatfield at seagate.com
   s-mail:  389 Disc Drive;  Longmont, CO 80503 USA
   voice:  720-684-2120
   fax....: 720-684-2766
On Tue, Apr 20, 2010 at 12:43 PM, Douglas Gilbert <dgilbert at interlog.com>
wrote:
* From the T10 Reflector (t10 at t10.org), posted by:
* Douglas Gilbert <dgilbert at interlog.com>
*
While debugging some USB-3 storage devices (using
the mass storage class rather than UAS **) the
linux community has stumbled across confusion on
the sector_count field in the ATA PASS THROUGH (12)
and (16) commands defined in SAT and SAT-2.
One tool wants to send an ATA IDENTIFY DEVICE command
through the SAT pass-through to a SATA disk inside
an external USB enclosure. The SCSI ATA PASS THROUGH
command fields are set like this to fetch the 512 byte
response from the IDENTIFY DEVICE command:
   PROTOCOL:	4   [PIO DATA-in]
   T_DIR:	1   [data-in]
   BYTE_BLOCK:	1   [transfer unit is 512 bytes]
   T_LENGTH:	2   [use sector_count]
   SECTOR_COUNT: 1 or 0 ??
SAT indicates that SECTOR_COUNT should be 1. However
those familiar with ATA see that SECTOR_COUNT maps
to the COUNT field in the ATA IDENTIFY DEVICE command
and that is marked as "N/A". And they interpret that
to mean 0. According to ACS-2 the "N/A" keyword "has no
defined value and should not be checked by the host or
device". So 1 would seem to be permissible but not
obvious to ATA tools tunnelling through SAT.
The SATL in the USB-3 case failed when sector_count=0
but there seem to be plenty of SATLs out there that
accept it and respond with a block of data.
May I suggest an Annex to SAT-3 to show the encoding
of very common ATA commands like IDENTIFY DEVICE through
the ATA PASS THROUGH commands.
** Folk from Intel recently presented some work on the
    "UASP" transport to Linux community. A suggestion
    that the standard will be called "UAS" seem to fall
    on deaf ears.
Doug Gilbert
*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org
-----------------------------------------------------------------------------
------
This email message is for the sole use of the intended recipient(s) and may
contain
confidential information.  Any unauthorized review, use, disclosure or
distribution
is prohibited.	If you are not the intended recipient, please contact the
sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------
------



More information about the T10 mailing list