SAT3r07: ATA_PASSTHROUGH and transfer length

Curtis Stevens curtis.stevens at wdc.com
Fri Jun 12 10:13:06 PDT 2015


* From the T10 Reflector (t10 at t10.org), posted by:
* Curtis Stevens <curtis.stevens at wdc.com>
*
T_Length should always be set based on T_Type and Byte_Block.  There is
supposed to be no opcode scanning by the pass-through process, so this
setting is mandatory, even for the IDENTIFY DEVICE command.  In the case of
the IDENTIFY DEVICE command, there are a couple of settings...
Byte_Block = 0 and T_Length = TPSIU (0200h).  T_Type is ignored
Byte_Block = 1, T_Type = 0, T_Length = Features or Sector_Count (01h)
I would recommend against using T_Type =1
-------------------------------------------------
Curtis E. Stevens
Director, Standards & Features Technology
3355 Michelson Dr. #100
Office: 1-1041
Irvine, Ca. 92612
Phone: 949-672-7933
Cell: 949-307-5050
E-Mail: Curtis.Stevens at WDC.com
Remember, you may only be blamed for something if you are actually doing
something.
-----Original Message-----
From: owner-t10 at t10.org [mailto:owner-t10 at t10.org] On Behalf Of Hannes
Reinecke
Sent: Friday, June 12, 2015 5:13 AM
To: t10 at t10.org
Subject: SAT3r07: ATA_PASSTHROUGH and transfer length
* From the T10 Reflector (t10 at t10.org), posted by:
* Hannes Reinecke <hare at suse.de>
*
Hi all,
I have been notified that the linux SATL does not set the 't_type'
and 't_length' bits in the ATA PASS-THROUGH command correctly.
Trying to fix this up I've come across this oddity:
As per spec 't_length' specifies the location where the transfer length is
located; this can either be the 'features' field, the 'sector_count' field,
or the TPSIU location.
However, some commands (like IDENTIFY) return a single block, and implicitly
assume a transfer length of 512 bytes without having it specified in any
fields. Currently 't_length' is set to '0', but this runs agains the spec,
which claims this to signal 'No data is transferred'.
Other commands (like TRUSTED RECEIVE) have split location (the lower byte is
in the 'count' field, the high byte is in the low byte of the 'lba' field).
What is the appropriate value of 't_length' in these cases?
Cheers,
Hannes
-- 
Dr. Hannes Reinecke			       zSeries & Storage
hare at suse.de				       +49 911 74053 688
SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton HRB 21284
(AG Nürnberg)
*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org
*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org



More information about the T10 mailing list