Western Digital Corporation Physical Layer Model Document X3T9.2/90-103, Rev 2 January 2, 1991 TO : John Lohmeyer, Chairman, X3T9.2 Committee (SCSI) : Membership, X3T9.2 Committee (SCSI) FROM : Doug Pickford, Western Digital Corporation Subject : Proposed Extensions for SCSI-3, Standard Physical Layer Access Date : January 2, 1991 Document: X3T9.2/90-103, Rev 2 File : ANSIDGS4.WRI 8.14 Direct Access Devices, Physical Layer Model Despite the thoroughness of the Logical level interface provided by SCSI, it remains a fact to be dealt with that Direct Access Devices (Rotating Media) are comprised of mechanical components and Analog and Digital Circuitry with pre-established design tolerances. While the SCSI target typically presents consistent data to the initiator, the target may be applying different algorithms on a case by case basis to recover this data. The degree to which these algorithms which may include the Offsetting the Read/Write Head, the Shifting the Data Window, the Application of an ECC or the Use of Retries, must be applied indicates both the stability and the robustness of the design and manufacturing of the physical device. To remove or at least control the use of these algorithms is the purpose of the Diagnostic extensions to SCSI-3. Implementor's Note: The description which follows is traditional in nature and is not meant to provide an all encompassing picture of rigid disk drives. 8.14.1 Physical Geometry The physical device consists of some number of (typically magnetic recording) disks, also called platters, which will be used to store information, possibly including, but not limited to, actual user data, sector identification, system operation parameters and actuator positioning data. For the purposes of disk data, as opposed to positioning data, the smallest addressable entity is called a sector. Sectors are sequentially organized in concentric circles called tracks. Typically, the beginning of a track is indicated by a signal traditionally called INDEX. The DCS extensions shall generically refer to the track start marker as INDEX. The collection of like tracks on all disk platters is called a cylinder. The device reads and writes sectors by means of magnetic heads attached to an actuator, which can be linear or rotary in nature. This motor driven (typically stepper or voice coil motor) actuator is positioned over the correct cylinder and a head (one track) is selected. When the requested sector(s) come under the Read/Write head the data is passed through the read channel to the controller for processing. Some designs utilize multiple actuator systems. The SCSI typically views only the User Area of disk cylinders. In actuality, many more cylinders exist for the entire stroke (length the actuator can travel between the physical ends; its range of movement). The ends of the stroke are typically protected with crash stops to catch runaway actuators. The device may also employ a latch to hold the head-actuator assembly when the media is not spinning. These "other" cylinders can play a large role in system operation as well as be very telling in overall design margin. By means of the MODE SENSE/MODE SELECT mechanism the user may detect and to some degree control the personality of the physical device. For the purpose of reporting the detailed physical characteristics of the drive geometry, the Cylinder and Track/Sector Map Mode pages are provided. 8.14.2 Motion Control, the Servo System As stated above, the actuator is controlled via motor to position the head over the correct data track. But often, positioning information exists on the disks to inform the servo system of the current location. It is vital to the longterm usefulness of the Direct Access Device that this positioning information remain intact. Should this information become corrupted, positioning to that specific track may become impossible. Different types of servo systems include: * Open Loop systems: Controlled by only a Stepper Motor with no feed back information during a seek operation. * Closed Loop systems: Controlled by either a Stepper Motor or a Voice Coil Motor with positioning information located on a dedicated platter or embedded within the data platters. Different types of embedded servo include sector servo systems, whereby the positioning information is located in fixed locations relative to the sector data and wedge servo systems, whereby the positioning information is located in fixed locations relative to Index (for example) and may cause the fracturing of data fields. In order to grade a servo system, which is comprised of seeking; the moving a single and/or multiple cylinders, switching; the changing of Read/Write heads without changing cylinders and settling; the declaring of "ONTRACK" after seek completion, algorithms, various seek type tests should be employed. Possible candidates include: * Random Seek tests: Stresses the multiple cylinder seek portion of the servo system. This typically requires extensive run time to discount the effects of rotational latency. * Sequential Seek tests: Stresses the single cylinder seek portion of the servo system. This typically requires perfect sector ID field sequencing to discount the effects of Defect Management. * Write/Read tests: The above two types of tests should also include be duplicated with Writes and Reads to stress the settling portion of the servo system. Data validity should always be part of the exercise. Note: this test is effected by Read Channel performance and is not strictly a Servo issue. 8.14.3 Data Recording and Recovery The recording and recovering of disk information is typically done via a magnetic head which can induce a magnetic field; the write operation, or detect a magnetic field; the read operation. While the Host System, Initiator and Target Controller view data in terms of bits ('1' or '0'), the Read Channel sees magnetic flux changes. Further, because of the growing need to squeeze more data in smaller area, encoding schemes are employed to get a better than one to one ratio of bits to flux changes. Popular encoding schemes include RLL 1:7 and RLL 2:7. The ability to get at some of the raw Head-Media characteristics is provided by the Diagnostic Erase Track - SEND DIAGNOSTIC and Diagnostic Read Track - SEND DIAGNOSTIC commands. Both processes, reading and writing, are affected by the Motion Control System's ability to center the head over the requested track. The Write process is typically a "blind" operation in that the detection of a "bad" write can only be accomplished via a subsequent read of the same location. Further, the ability to accurately place information on the data disks is influenced by the "noise floor" of the location to be written. This noise floor is the composition of many factors, some of which are media defects, read channel quality, system resonances; characteristic frequencies of the system, and PCB interference. The Read process is likewise affected by the above mentioned items, but is also influenced by the data window. The data window is basically the sliver of time when the Read Channel is expecting to find magnetic information to be interpreted as data. If the Read Channel attempts to read too early or too late, data integrity will be compromised. But, often this window is a moving target if the writing process is also influenced by window shifts (either intentional or otherwise). Controlling window shifts is managed by the use of the R/W Error Recovery Mode (Select) Page. 8.14.4 Data Integrity The bottom line in any data storage and retrieval device is the ability to accurately maintain data. Because of the decreasing size of such devices, the designing in of "tools" to compensate for less than perfect heads and media and/or positioning systems becomes imperative. Some of these tools that can be controlled by the device as well as the interface include: * Data Strobe Offsets (Window Shifts) * Head Offsets * Error Correction Codes * Retries * Peak Detection Thresholds During the certification pass of a Format Unit command, the Direct Access Device may employ several if not all of the above to insure the media can be written and read under all conditions. 8.14.5 The Qualification Process, in General Typically, a lengthy, thorough investigation is done by the high volume buyer of Rigid Disk Drives. During this time, the device is scrutinized in every possible fashion. The ability to use the above mentioned "tools" permits the assessing of * Probability of Errors * Throughness of Design * Quality of the Servo System * Flexibility of the Read Channel * Design Margin of the Product * Believability of the Specifications * Adequacy of the Defect Management To speed this process along, the qualifier may perform limited area "formats" with the Diagnostic Write Track - SEND DIAGNOSTIC commands at specific locations on the media (Outer Diameter and Inner Diameter, for example). The Initiator may wish to erase all information from a limited area of the disk and determine the "noise floor" or control Window Shift, Peak detection thresholds and Head offsets to confirm the replacement of those blocks resident in the Plist. To instruct the qualifier of the general makeup of the device, the Mode Pages for Rigid Disk Drive Geometry, Cylinder Map and Track/Sector Map will lay it all out. To permit limited area are media formats, the Diagnostic Read Track Interleave - SEND DIAGNOSTIC and Diagnostic Write Track - SEND DIAGNOSTIC commands are provided. To convert newly assigned physical addresses (Diagnostic Write Track - SEND DIAGNOSTIC) to Logical Block Addresses, SCSI-2 provided the Translate Address Page - SEND DIAGNOSTIC. To permit the grading of the raw head-media-read channel combination, the Diagnostic Erase Track - SEND DIAGNOSTIC and Diagnostic Read Track - SEND DIAGNOSTIC commands are provided. To control the device algorithms, Mode parameters to manipulate Head Offsets (R/W Error Recovery), Data Strobe Offsets, also referred to as Window Shift (R/W Error Recovery), Peak Detection Thresholds (R/W Control), Read and Write Retries (R/W Error Recovery) and the use and extent of ECC (R/W Error Recovery) are included. The following diagram demonstrates the symmetry of the Diagnostic Extensions for SCSI-3: Diagnostic Extensions to SCSI-3 Cylinder Map MODE page The Cylinder Map page is provided to indicate the layout of cylinders on the physical drive. Table 1 Cylinder Map Mode Page ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | PS | RSVD | Page Code (0Dh) | ------------------------------------------------------------------------| 1 | | ---------- Page Length (xxh) --- | 2 | | ------------------------------------------------------------------------| 3 | CRASH | LATCH | DIRECTION | Reserved | ------------------------------------------------------------------------| 4 | | - - - - - - Cylinder Section Descriptor #1 - - - | 15 | | ------------------------------------------------------------------------| ..... | ------------------------------------------------------------------------| m | | - - - - - - Cylinder Section Descriptor #n - - - | m+11 | | ======================================================================== where m = 4+12n, n being the number of Cylinder Section Descriptors. CRASH: This field is used to indicate the location of the Crash Stop, should one be present. 00b: Does not Apply 01b: Crash Stop is at the Inner Diameter (ID) 10b: Crash Stop is at the Outer Diameter (OD) 11b: Crash Stops exist at both Inner and Outer Diameters LATCH: This field is used to indicate the location of the Latch (location for locked actuator), should one be present. 00b: Does not Apply 01b: Actuator Latch is at the Inner Diameter (ID) 10b: Actuator Latch is at the Outer Diameter (OD) 11b: Reserved DIRECTION: This field is provided to communicate the direction of actuator motion when the Logical Block Address is incremented (discounting Defect Management). 00b: Does Not Apply 01b: Logical Block Address increases as the actuator travels from OD to ID 10b: Logical Block Address decreases as the actuator travels from OD to ID 11b: Reserved Implementor's Note: The above three fields are only reportable during MODE SENSE. Attempts to change these fields in a MODE SELECT shall cause the command to terminate in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Table 2 Cylinder Section Descriptor ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== m | TYPE | ------------------------------------------------------------------------| m+1 | Reserved | ------------------------------------------------------------------------| m+2 | (MSB) | ---------- --- | m+3 | | ---------- Extent Start Cylinder --- | m+4 | | ---------- --- | m+5 | (LSB) | ------------------------------------------------------------------------| m+6 | Extent Start Track | ------------------------------------------------------------------------| m+7 | (MSB) | ---------- --- | m+8 | | ---------- Extent End Cylinder --- | m+9 | | ---------- --- | m+10 | (LSB) | ------------------------------------------------------------------------| m+11 | Extent End Track | ======================================================================== The Cylinder Section Descriptor is provided to describe the purpose of an extent of media tracks as described by TYPE. TYPE: Section Type Descriptor. This field describes the type of cylinders described for this Cylinder Section Descriptor. ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ======================================================================== | VU | ACCESS | DESCRIPTION | ======================================================================== VU: Vendor Unique. This Cylinder Section type is reserved for Vendor Unique purposes. If this bit is set to 1b, the remainder of the TYPE field is undefined by this document. If this bit is reset to 0b, the ACCESS and DESCRIPTION fields are as described below. ACCESS: Cylinder Access Availability. This field indicates the allowable method of access the Initiator has to this Cylinder Section. Table 3a Cylinder TYPE Access ACCESS Meaning 000b No Access. These cylinders cannot be accessed by the Initiator under any conditions. 001b Seek only. The Read/Write heads cannot no be engaged for anything other than positioning purposes while in this Cylinder/Track area. This might only be applicable for dedicated servo type systems. 010b Read Only. These cylinders can be read by the Initiator, but attempts to write these cylinders will terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Write Protected. 011b Read/Write. These cylinders' data fields can be modified by the Write process and recovered by the Read process. 100b-111b Reserved for expansion. DESCRIPTION: Cylinder Section Description. This field provides general usage information about the specific Cylinder section. The following table is a breakdown of existing Cylinder Section Descriptions. Table 3b Cylinder TYPE Descriptions DESCRIPTION Meaning 0000b Logical Block Address Space. These cylinders can be addressed as part of the SCSI Logical Block Address space. 0001b Protection Area. This a safety region of cylinders used to insure drive margins are available. 0010b Calibration Area. These cylinders are used by the Device to determine optimal operating parameters. Such parameters might include certain compensation factors to overcome mechanical and thermal variances. 0011b Diagnostic Area. These cylinders are only used for Diagnostic purposes, such as Power On Self Test and the SEND DIAGNOSTIC command. 0100b System Cylinders. These cylinders are used for the general operation of the device. These might include system parameter information, bad block reallocation information, etc. 0101b Unused Cylinder Area. These cylinders are part of the entire stroke (Crash stop to Crash stop, for instance), but are not used for any purpose. 0111b - 1111b Reserved for expansion. Extent Start Cylinder: The beginning cylinder number of the Cylinder Section. Extent Start Track: The beginning track (head) number of the Cylinder Section. This field provides better resolution so that partial cylinder usage can be described. For purposes of consistency, Track Numbers start at 0 and increase monotonically up to the Number of Heads minus 1. Extent End Cylinder: The ending cylinder number of the Cylinder Section. Extent End Track: The ending track (head) number of the Cylinder Section. This field provides better resolution so that partial cylinder usage can be described. For purposes of consistency, Track Numbers start at 0 and increase monotonically up to the Number of Heads minus 1. Implementor's Note #1: All of the above Extent fields (4) are two's compliment numbers which monotonically increase with the first User Cylinder being assigned the number 0. This permits negative cylinder notation. Implementor's Note #2: The Cylinder sections shall be returned in ascending order, with the most negative (or zero, if not applicable) being returned first. Further, cylinder sections are not permitted to overlap each other, although gaps between sections is permissable. These gaps should be interpreted as TYPE 05h (No Access, Unused). Failure to comply with these rules should negate the validity of the Cylinder Map. Track/Sector Map Mode Page This Mode Page is used to control/report the repeatable contents from sector pulse to sector pulse as well as those components which are not repeatable within a sector, i.e., track components. Table 4 Track/Sector Map Mode Page ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | PS | RSVD | Page Code (0Eh) | ------------------------------------------------------------------------| 1 | Page Length (4n+1) | ------------------------------------------------------------------------| 2 | (MSB) | ---------- Total Physical Sector Length | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) | - - - - - - Track/Sector - - - | 7 | Component Descriptor #1 (LSB) | ------------------------------------------------------------------------| ..... | ------------------------------------------------------------------------| 4n | (MSB) | - - - - - - Track/Sector - - - | 4n+3 | Component Descriptor #n (LSB) | ======================================================================== Total Physical Sector Length: This is a count in bytes from a fixed relative point within a sector time to the next same point in the adjacent sector (e.g., sector pulse to sector pulse). This count field should be the sum of the Component Lengths of the subsequent Sector Component Descriptors. Implementor's Note/WARNING: It is highly probable that the target device can support the changing, i.e., MODE SELECT, of the individual component lengths as long as the sum (Total Physical Sector Length) remains intact. This has highly destructive capacity and should only be used under controlled conditions. Track/Sector Component Descriptor: The pieces which make up a disk track and/or sector. The ordering of the components shall be as follows: (1) All repeatable sector components which are also used in the Diagnostic Read Track Interleave - SEND DIAGNOSTIC command. The ordering of these such components shall be identical to that of the Diagnostic Read Track Interleave - SEND DIAGNOSTIC command. (2) All (non-) repeatable sector components which are not part of the Diagnostic Read Track Interleave - SEND DIAGNOSTIC command. (3) All track components. Ordering here is not implied. Table 5 Track/Sector Component Descriptor ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== m | RTI | TRK | DER | Component Type Code | ------------------------------------------------------------------------| m+1 | Frequency Count | ------------------------------------------------------------------------| m+2 | (MSB) | ---------- Component Length | m+3 | (LSB) | ======================================================================== RTI: Read Track Interleave component. This bit has meaning only for the MODE SENSE command. If this bit is set to 1b, this field will be returned as part of the Read Track Interleave command. If this bit is reset to 0b, this field will not be included in the Read Track Interleave command. Attempts to alter thi bit from its MODE SENSE state for the purposes of MODE SELECT shall cause the MODE SELECT to terminate in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. TRK: Track Component. If this bit is set to 1b, the component returned is part of the Track's personality and is not strictly a part of a sector component. If this bit is reset to 0b, the component returned is part of the repeatable portion of a sector. Implementor's Note: The setting of the both the RTI and TRK bits to 1b is considered an illegal state. DER: DIAGNOSTIC ERASE/READ. If this bit is set to 1b, the track/sector component will be affected by the Diagnostic Erase Track - SEND DIAGNOSTIC and Diagnostic Read Track - SEND DIAGNOSTIC commands. If this bit is reset to 0b, this component will not be affected by either above the above diagnostic commands. Component Type Code: This field defines the basic category into which this sector or track component falls: 00h Post Index 01h Pre Index 02h Pre ID 03h Sector ID (Cylinder Number) 04h Sector ID (Head Number) 05h Sector ID (Sector Number) 06h Sector ID (Flag byte) 07h Sector ID (CRC) 08h Sector ID (ECC) 09h Sector ID (Other) 0Ah Post ID 0Bh User Data Field 0Ch User Data ECC 0Dh User Data CRC 0Eh Post Data 0Fh Absolute Block Address (relative to Disk Start) 10h ServoBurst 11h -- 1Fh Reserved 20h -- FFh Other, Vendor Unique Frequency Count: This field gives a number of occurences count for this component on a track in this zone. If this field is not meaningful or is variable in nature, this field will be retruend as 00h. Implementor's Note #1: The intended purpose of this Mode Page is to assist in the usage of the Diagnostic Erase Track - SEND DIAGNOSTIC, Diagnostic Read Track - SEND DIAGNOSTIC and Diagnostic Read Track Interleave - SEND DIAGNOSTIC commands. For the DET and DRT commands, this page gives an approximation of which track fields comprise which bits. Thus, when a Diagnostic Read Track - SEND DIAGNOSTIC indicates a high probability of error exists at bit n, the initiator can determine which track field is most likely affected. For the RTI command, the initiator can be sure of what fields are being controlled. Implementor's Note #2: To address shifting technologies, the Other, Vendor Unique category should be used in a non-repetitive manner. For example, if the target supports three fields which are not listed in the table above, then three sector component descriptors with codes between 20h and FFh should be used, but they should be unique (e.g., 20h, 21h and 22h). Implementor's Note #3: There may be a need to incorporate this is the Notch Page to cover that class of device. Component Length: This field describes the byte length of the track/sector component. If this field does not apply to this component, the Component Length shall be returned as 0000h. R/W Control Mode Page Table 6 MODE Page 0Fh Read-Write Control Page ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Reserved | Page Code (0Fh) | ------------------------------------------------------------------------| 1 | Page Length (0Dh) | ------------------------------------------------------------------------| 2 | TA | TV | Threshold #1 | ------------------------------------------------------------------------| 3 | TA | TV | Threshold #2 | ------------------------------------------------------------------------| 4 | TA | TV | Threshold #3 | ------------------------------------------------------------------------| 5 | TA | TV | Threshold #4 | ------------------------------------------------------------------------| 6 | TA | TV | Threshold #5 | ------------------------------------------------------------------------| 7 | TA | TV | Threshold #6 | ------------------------------------------------------------------------| 8 | TA | TV | Threshold #7 | ------------------------------------------------------------------------| 9 | TA | TV | Threshold #8 | ------------------------------------------------------------------------| 10 | (MSB) | ---------- Reserved | 15 | (LSB) | ======================================================================== TA: Threshold Active. This bit indicates whether this is the Peak Threshold currently being used by the Read Channel. If this bit is set to 1b, this threshold was used on the most recent disk access. If this bit is reset to 0b, this threshold was not used on the most recent disk access. TV: Threshold Valid. This bit indicates whether the Threshold level in bits 5-0 is valid. If this field is set to 1b, bits 5-0 are a valid threshold value supported by the target. If this bit is reset to 0b, bits 5-0 are Reserved and should be set to zero. Threshold #n: This field indicates a threshold percentage supported by the device. This value has been divided by 2. Thus if a 14h is written into this field, a 40% Peak Threshold Detection is available on this device. Implementor's Note #1: This MODE Page is meaningful for both MODE SELECT and MODE SENSE. But, if the Initiator should attempt to set the threshold values (in MODE SELECT) to something not supportable, the command shall terminate in CHECK CONDITION status. The Sense Key shall be ILLEGAL REQUEST, Invalid Field in Parameter List. The suggested use of this page is as follows: (1) Issue a MODE SENSE for this page to determine the current and supportable Peak Detection Thresholds. (2) Issue a MODE SELECT for this page to change the active threshold. If the selected threshold is not supported (as described by the MODE SENSE) or more than a single TA bit is set to1b, the target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Implementor's Note #2: If the concept of Peak Detection Threshold is not meaningful to the Target, bytes 2 through 9 of the above MODE page should be considered Reserved and set to 00h. Format Status LOG Page This LOG page captures the state of the most recent successful FORMAT UNIT and/or Diagnostic Write Track - SEND DIAGNOSTIC command(s) performed. Table 7 Format Status LOG Page ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Reserved | Page Code (08h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | (MSB) | -------- Page Length (xxxxh) ---- | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) Format | -------- Options ---- | 5 | Parameter Code (0000h) (LSB) | ------------------------------------------------------------------------| 6 | DU | DS | TSD | ETC | TMC | RSVD | LP | ------------------------------------------------------------------------| 7 | Parameter Length (04h) | ------------------------------------------------------------------------| 8 | Byte 1 of Format Unit CDB | -------- ---- | 9 | Byte 1 of Defect List Header | -------- ---- | 10 | Byte 2 of Defect List Header | -------- ---- | 11 | Byte 3 of Defect List Header | ------------------------------------------------------------------------| 12 | (MSB) Grown Defects | -------- during Certification ---- | 13 | Parameter Code (0001h) (LSB) | ------------------------------------------------------------------------| 14 | DU | DS | TSD | ETC | TMC | RSVD | LP | ------------------------------------------------------------------------| 15 | Parameter Length (04h) | ------------------------------------------------------------------------| 16 | (MSB) | - - - - - Event Count (xxxxxxxxh) ---- | 19 | (LSB) | ------------------------------------------------------------------------| 20 | (MSB) Total Blocks | -------- Reallocated ---- | 21 | Parameter Code (0002h) (LSB) | ------------------------------------------------------------------------| 22 | DU | DS | TSD | ETC | TMC | RSVD | LP | ------------------------------------------------------------------------| 23 | Parameter Length (04h) | ------------------------------------------------------------------------| 24 | (MSB) | - - - - - Event Count (xxxxxxxxh) ---- | 27 | (LSB) | ------------------------------------------------------------------------| 28 | (MSB) Spare Blocks | -------- Left Unallocated ---- | 29 | Parameter Code (0003h) (LSB) | ------------------------------------------------------------------------| 30 | DU | DS | TSD | ETC | TMC | RSVD | LP | ------------------------------------------------------------------------| 31 | Parameter Length (04h) | ------------------------------------------------------------------------| 32 | (MSB) | - - - - - Event Count (xxxxxxxxh) ---- | 35 | (LSB) | ------------------------------------------------------------------------| 36 | (MSB) Elapsed Time Since | -------- Successful Format Unit ---- | 37 | Parameter Code (0004h) (LSB) | ------------------------------------------------------------------------| 38 | DU | DS | TSD | ETC | TMC | RSVD | LP | ------------------------------------------------------------------------| 39 | Parameter Length (08h) | ------------------------------------------------------------------------| 40 | (MSB) | - - - - - Event Count ---- | 47 | (in minutes) (LSB) | ------------------------------------------------------------------------| 48 | (MSB) Diagnostic Write | -------- Track Indicator ---- | 49 | Parameter Code (0005h) (LSB) | ------------------------------------------------------------------------| 50 | DU | DS | TSD | ETC | TMC | RSVD | LP | ------------------------------------------------------------------------| 51 | Parameter Length (04h * n) | ------------------------------------------------------------------------| 52 | Valid | (MSB) | -------- ---- | 53 | Diag Write Track | -------- Cylinder Number ---- | 54 | (LSB) | ------------------------------------------------------------------------| 55 | Diag Write Track Number | ======================================================================== Allocation Length: This is a variable count field set to 2Ch + (4n + 4) where n is the number of Diagnostic Write Tracks captured in this Log Page. In the above LOG page, bytes 52 through 55 get repeated for each Diagnostic Write Track command performed. Format Options: This field contains four bytes which capture the set up options employed for the most recent, successful Format Unit operation performed. Byte 1 of Format Unit CDB: This byte includes the FmtData bit (List passed by Initiator during DATA OUT), CmpLst (List passed by Initiator is complete) and Defect List Format bits. Byte 1 of Defect List Header: This byte defines the Defect List options. Bytes 2,3 of Defect List Header: These bytes define the Defect List Length (number of defects in the list). Grown Defects During Certification Event Counter: This is a counter of the number of defects detected as a result of performing Certification which were not already part of the Plist. If a Certification pass was not performed this field shall be returned as 0000h. Blocks Reallocated Event Counter: This is a counter of the total blocks reallocated as a result of the FORMAT UNIT operation and any subsequent operation, (includes Grown defects after FORMAT UNIT). Spares Unallocated Event Counter: This is a counter of the total spare blocks which have yet to be allocated. Elapsed Operating Time Since Successful FORMAT UNIT Event Count: This field represents the number of usage minutes which have elapsed since the most recently successful FORMAT UNIT command. This field provides for approximately 500 years of counting capability. Implementor's Note: The fields which are affected by the FORMAT UNIT command should not be updated until its successful completion. Diagnostic Write Track Indicator: This field exists under the condition a Diagnostic Write Track - SEND DIAGNOSTIC command completes successfully. Note this Event Count may be repeated in the LOG page a number of times. Exhaustion of LOG space is defined within the sections describing LOG SENSE and LOG SELECT. This field is removed from the LOG PAGE upon successful completion of any subsequent FORMAT UNIT command. Parameter Length: This count divided by four is the number of Tracks which have been affected by the Diagnostic Write Track - SEND DIAGNOSTIC command. Valid: This bit indicates whether the specific Diagnostic Write Track - SEND DIAGNOSTIC completed successfully. If this bit is set to 1b, the DWT command completed without error. If this bit is reset to 0b, the Track specified in the Diagnostic Write Track Cylinder and Track numbers completed with error. The state of this track is unknown. Diagnostic Write Track Cylinder Number: This field captures the cylinder number (two's compliment) used in the Diagnostic Write Track - SEND DIAGNOSTIC Page. Diagnostic Write Track Number: This field captures the track number (two's compliment) used in the Diagnostic Write Track - SEND DIAGNOSTIC Page. Implementor's Note: Tracks should be reported in ascending order without repetition. Thus, if a specific track is called out in multiple Diagnostic Write Track - SEND DIAGNOSTIC commands, only the most recent command specifics will be retained (whether the DWT command completed succesful or not.) Diagnostic Erase Track - SEND/RECEIVE DIAGNOSTIC This command is provided for noise measurement and signal distortion detection purposes. This command does not actually imply either DC or AC erase or even the placement of a specific frequency pattern, but must prepare the selected LBA range for relative error probability measurements. If the Target device supports the Diagnostic Erase Track - SEND DIAGNOSTIC command, then the Diagnostic Read Track - SEND DIAGNOSTIC command must also be supported. The Diagnostic Erase Track - SEND DIAGNOSTIC command is an INDEX to INDEX write operation where all fields on the specified tracks (minus the exception of the actuator positioning information which may be embedded on the data tracks) are "erased". A successful erase operation leaves the track(s) in a state of a constant frequency pattern. The reading back of this information will yield a pattern representative of the encoding scheme employed by the Read Channel. Refer to the TRACK/SECTOR Map Mode Page for details about track fields affected by this diagnostic command. Refer to the Diagnostic Read Track - SEND DIAGNOSTIC command for details on the reading back the erased tracks. Table 8 Diagnostic Erase Track - SEND DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (41h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | (MSB) | -------- Page Length (0008h) ---- | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) | -------- ---- | 5 | Starting Cylinder | -------- ---- | 6 | (LSB) | ------------------------------------------------------------------------| 7 | Starting Head | ------------------------------------------------------------------------| 8 | (MSB) | -------- ---- | 9 | | -------- Number of Tracks ---- | 10 | | -------- ---- | 11 | (LSB) | ======================================================================== Starting Cylinder: This is the first physical cylinder, using the two's compliment notation (refer to CYLINDER MAP Mode Page for determining cylinder layout) to be affected by this command. If this field is set to a value outside the addressable range of the device, the Target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Starting Head: This is the first physical head, (refer to CYLINDER MAP Mode Page for determining cylinder layout) to be affected by this command. If this field is set to a value outside the addressable range of the device, the Target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Implementor's Note: Should the Starting Cylinder/Starting Head combination fall into a cylinder section not accessible for this purpose (refer the CYLINDER MAP Mode Page), this command shall terminate in CHECK CONDITION status. the Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Number of Tracks: This is the count of tracks that shall be affected by this command. The counting of tracks is dictated by the SURF bit in the FORMAT DEVICE Mode Page. If the Starting Track (determined by the Starting Cylinder/Starting Head combination) plus the Number of Tracks should extent into a cylinder region not accessible for this purpose or should extend outside the physical limits of the device, this command shall be terminated in CHECK CONDITION status. The Sense Key will be set to ILLEGAL REQUEST, Invalid Field in Parameter List. If the Starting Logical Block plus the Transfer Length should equal a value outside the addressable range of the device, the Target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Should the target experience a write error and be unable to "erase" all the tracks requested, the operation will abort on the first failed track. Table 9 Diagnostic Erase Track - RECEIVE DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (41h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | (MSB) | -------- Page Length (0004h) ---- | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) | -------- ---- | 5 | | -------- Number of Tracks ---- | 6 | | -------- ---- | 7 | (LSB) | ======================================================================== Number of Tracks: This is the count of tracks that were successfully "erased". If this count is the same as the Number of Tracks field in the Diagnostic Erase Track - SEND DIAGNOSTIC command, the entire operation can be assumed successful. Diagnostic Seek - SEND/RECEIVE DIAGNOSTIC This command is provided to permit the Initiator to determine both servo margins and Read Channel - Servo System interactions. The Diagnostic Seek permits the Initiator to request that the Target use an offset from the physical track centerline when attempting to settle. Both seek tests and Read/Write after seek tests are viable using this command. Table 10 Diagnostic Seek - SEND DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (42h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | (MSB) | -------- Page Length (0006h) ---- | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) | -------- ---- | 5 | Seek Cylinder | -------- ---- | 6 | (LSB) | ------------------------------------------------------------------------| 7 | Seek Head | ------------------------------------------------------------------------| 8 | (MSB) | -------- Head Offset ---- | 9 | (LSB) | ======================================================================== Seek Cylinder: The Initiator is requesting that the actuator being positioned over this physical cylinder. For the purposes of consistency, physical cylinder numbers are determined using the CYLINDER MAP Mode Page. If the Seek Cylinder provided is outside the range of cylinders available for seek type access, the command terminates in CHECK CONDITION status. The Sense Key is set to ILLEGAL REQUEST, Invalid Field in Parameter List. Seek Head: Thie Initiator is requesting that the Target select this physical head. If this field is set to a value outside the addressable range of the device, the Target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Implementor's Note: Should the Seek Cylinder/Seek Head combination fall into a cylinder section not accessible for this purpose (refer the CYLINDER MAP Mode Page), this command shall terminate in CHECK CONDITION status. the Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Head Offset: This field is the signed numerator of a 16 bit fraction. This fraction is the percentage offset from the currently used Track Centerline requested for positioning. Essentially, the Initiator is requesting that the Target use a Logical Track Centerline relative to the current Track Centerline. This value does not have to match exactly to one obtainable by the Target. If this value is set to FFFFh, the Initiator is requesting that Physical Track Centerline be used, i.e., this is a Head Offset Reset. For the purposes of consistency, a negative Head Offset requests positioning on the Inner Diameter side of the track, while a positive Head Offset requests positioning on the Outer Diameter side of the track. Table 11 Diagnostic Seek - RECEIVE DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (42h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | (MSB) | -------- Page Length (0002h) ---- | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) | -------- Head Offset ---- | 5 | (LSB) | ======================================================================== Head Offset: This field is the signed numerator of a 16 bit fraction. This fraction is the percentage offset from previous Track Centerline that is currently being used by the Target. This value is the actual value used and may differ from the requested Head Offset value. If this value is returned as FFFFh, the Target is not currently using Head Offsets, i.e., the Physical Track Centerline is being used for positioning purposes. For the purposes of consistency, a negative Head Offset requests positioning on the Inner Diameter side of the track, while a positive Head Offset requests positioning on the Outer Diameter side of the track. Diagnostic Read Track - SEND/RECEIVE DIAGNOSTIC This command is the counterpart to the Diagnostic Erase Track - SEND DIAGNOSTIC. If this Diagnostic Page is supported it is suggested (but not mandatory) that the Diagnostic Erase Track - SEND DIAGNOSTIC Page also be supported. The Diagnostic Read Track - SEND DIAGNOSTIC requests the target to return raw track data, i.e., to bypass the decoding process. Table 12 Diagnostic Read Track - SEND DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (43h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | (MSB) | -------- Page Length (0008h) ---- | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) | -------- ---- | 5 | Starting Cylinder | -------- ---- | 6 | (LSB) | ------------------------------------------------------------------------| 7 | Starting Head | ------------------------------------------------------------------------| 8 | (MSB) | -------- ---- | 9 | | -------- Number of Tracks ---- | 10 | | -------- ---- | 11 | (LSB) | ======================================================================== Starting Cylinder: This is the first physical cylinder, using the two's compliment notation (refer to CYLINDER MAP Mode Page for determining cylinder layout) from which the target shall read. If this field is set to a value outside the addressable range of the device, the Target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Starting Head: This is the first physical head, (refer to CYLINDER MAP Mode Page for determining cylinder layout) from which the target shall read. If this field is set to a value outside the addressable range of the device, the Target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Implementor's Note: Should the Starting Cylinder/Starting Head combination fall into a cylinder section not accessible for this purpose (refer the CYLINDER MAP Mode Page), this command shall terminate in CHECK CONDITION status. the Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Number of Tracks: This is the count of tracks the target shall attemp to read. The counting of tracks is dictated by the SURF bit in the FORMAT DEVICE Mode Page. If the Starting Track (determined by the Starting Cylinder/Starting Head combination) plus the Number of Tracks should extent into a cylinder region not accessible for this purpose or should extend outside the physical limits of the device, this command shall be terminated in CHECK CONDITION status. The Sense Key will be set to ILLEGAL REQUEST, Invalid Field in Parameter List. If the Starting Logical Block plus the Transfer Length should equal a value outside the addressable range of the device, the Target shall terminate the command in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Should the target experience a read error and be unable to return all the tracks requested, the operation will abort on the first failed track. Table 13 Diagnostic Read Track - RECEIVE DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (43h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | (MSB) | -------- Page Length (xxxxh) ---- | 3 | (LSB) | ------------------------------------------------------------------------| 4 | (MSB) | -------- ---- | 5 | | -------- Number of Tracks ---- | 6 | | -------- ---- | 7 | (LSB) | ------------------------------------------------------------------------| 8 | (MSB) | - - - - - First Track Segment ---- | x | (LSB) | ------------------------------------------------------------------------| x+1 | (MSB) | - - - - - Second Track Segment ---- | y | (LSB) | ------------------------------------------------------------------------| ... | ------------------------------------------------------------------------| w+1 | (MSB) | - - - - - Last Track Segment ---- | z | (LSB) | ======================================================================== Number of Tracks: This is the count of tracks that were successfully returned. If this count is the same as the Number of Tracks field in the Diagnostic Read Track - SEND DIAGNOSTIC command, the entire operation can be assumed successful. Track Segment: This is the raw un-decoded track data. The following is a breakdown of a track segment: Table 14 Diagnostic Read Track - Track Segment ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Encode Length | ------------------------------------------------------------------------| 1 | | - - - - - Encode Pattern ---- | x | | ------------------------------------------------------------------------| x+1 | (MSB) | - - - - - Track Length ---- | y | (LSB) | ------------------------------------------------------------------------| y+1 | | - - - - - Track Data ---- | z | | ======================================================================== Encode Length: This field provides the bit count of the encoded pattern in the absence of data. This should be used as the "check" pattern for the rest of the track. Encode Pattern: This is the actual encode pattern utilized by the Read Channel in the absence of data. The number of bytes used for this field will be the next highest multiple of four above the Encode Length (converted to bytes). The bit pattern in the bytes used to make the Encode Pattern field a multiple of four bytes is not meaningful to this command. Track Length: This field provides the bit count of the track data being returned for this track. Track Data: This is the actual track data as seen by the Read Channel. The number of bytes used for this field will be the next highest multiple of four above the Track Length (converted to bytes). The bit pattern in the bytes used to make the Track Data field a multiple of four bytes is not meaningful to this command. Diagnostic Read Track Interleave - SEND/RECEIVE DIAGNOSTIC This command is for use in conjunction with the Diagnostic Write Track - SEND DIAGNOSTIC command. This command returns an entire track's worth of Sector IDs in the order they come under the Read/Write heads starting from Index. Table 15 Diagnostic Read Track Interleave - SEND DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (44h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | | ----------- Page Length (06h) ---- | 3 | | ------------------------------------------------------------------------| 4 | (MSB) | ----------- | 5 | Cylinder | ----------- | 6 | (LSB) | ------------------------------------------------------------------------| 7 | Head | ------------------------------------------------------------------------| 8 | (MSB) | ----------- Allocation Length ---- | 9 | (LSB) | ======================================================================== Cylinder: This field defines the Physical Cylinder to which the actuator shall seek prior to reading the Sector IDs. Should this field be set a value outside the limits of the device (as defined by the Rigid Disk Drive Geometry MODE Page), the command shall be terminated in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Head: This field defines the Physical Head to which the device shall switch prior to reading the Sector IDs. Should this field be set a value outside the limits of the device (as defined by the Rigid Disk Drive Geometry MODE Page), the command shall be terminated in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Allocation Length: This field describes the amount of data the Initiator can receive for the Diagnostic Read Track Interleave - RECEIVE DIAGNOSTIC. This field should be set to a minimum of 4+(m*n), where m is the Sector ID length as defined in the Track/Sector Map Mode Page and n is the number of Sectors per Track on this device. If this field is set to value less than this, the Target may either terminate the command in CHECK CONDITION status, setting the Sense Key to ILLEGAL REQUEST, Invalid Field in Parameter List, or may simply truncate the returned data in the subsequent Diagnostic Read Track Interleave - RECEIVE DIAGNOSTIC. Table 16 Diagnostic Read Track Interleave - RECEIVE DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (44h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | | ----------- Page Length (xxh) ---- | 3 | | ------------------------------------------------------------------------| 4 | (MSB) | ----------- | 5 | Cylinder | ----------- | 6 | (LSB) | ------------------------------------------------------------------------| 7 | Head | ------------------------------------------------------------------------| 8 | (MSB) | - - - - - - - ID Table Entry #1 ---- | 8+(m-1) | (LSB) | ------------------------------------------------------------------------| ..... | ------------------------------------------------------------------------| y | (MSB) | - - - - - - - ID Table Entry #n ---- | y+(m-1) | (LSB) | ======================================================================== where m is the Sector ID Length and n is the number of Sectors per Track this device supports given the Allocation Length in the corresponding SEND DIAGNOSTIC command was large enough to service all of the return data. Implementor's Note: Should anything about this command be technically unsupportable, the device may reject this diagnostic request. In this case, Page 43h should not be reported via the Supported Pages Diagnostic Page. Cylinder: This field defines the Physical Cylinder to which the actuator was positioned prior to reading the Sector IDs. Head: This field defines the Physical Head which was selected prior to reading the Sector IDs. ID Table Entry: This field describes the contents of the Sector ID components of each sector on the specified track. The specific contents are defined by the returned information in the Track/Sector Map Mode Page. Diagnostic Write Track - SEND/RECEIVE DIAGNOSTIC This command permits the Initiator to selectively format (modification of the Sector ID fields) individual tracks on the drive. Implementor's Note: The suggested use of this command is to precede it with a Diagnostic Read Track Interleave - SEND DIAGNOSTIC and then modify the Sector ID fields as appropriate. This method permits the changing of any number of sectors up to the entire track. Table 17 Diagnostic Write Track - SEND DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (45h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | | ----------- Page Length (xxh) ---- | 3 | | ------------------------------------------------------------------------| 4 | (MSB) | ----------- | 5 | Cylinder | ----------- | 6 | (LSB) | ------------------------------------------------------------------------| 7 | Head | ------------------------------------------------------------------------| 8 | (MSB) | - - - - - - - ID Table Entry #1 ---- | 11 | (LSB) | ------------------------------------------------------------------------| ..... | ------------------------------------------------------------------------| m | (MSB) | - - - - - - - ID Table Entry #n ---- | m+3 | (LSB) | ======================================================================== where m is the Sector ID Length and n is the number of Sectors per Track this device supports given the Allocation Length in the corresponding SEND DIAGNOSTIC command was large enough to service all of the return data. The Data fields of the track in question are not controlled by this command. The state of the data after the successful completion of this command is indeterminate. Implementor's Note: Should anything about this command be technically unsupportable, the device may reject this diagnostic request. In this case, Page 44h should not be reported via the Supported Pages Diagnostic Page. Cylinder: This field defines the Physical Cylinder to which the actuator shall seek prior to the format operation occuring. Should this field be set a value outside the limits of the device (as defined by the Rigid Disk Drive Geometry MODE Page), the command shall be terminated in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. Head: This field defines the Physical Head to which the device shall switch prior to the format operation occuring. Should this field be set a value outside the limits of the device (as defined by the Rigid Disk Drive Geometry MODE Page), the command shall be terminated in CHECK CONDITION status. The Sense Key shall be set to ILLEGAL REQUEST, Invalid Field in Parameter List. ID Table Entry: This field describes the contents of the Sector ID components of each sector on the specified track. The specific contents are defined by the returned information in the Track/Sector Map Mode Page. Table 18 Diagnostic Write Track - RECEIVE DIAGNOSTIC ======================================================================== Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Byte | | | | | | | | | ======================================================================== 0 | Page Code (45h) | ------------------------------------------------------------------------| 1 | Reserved | ------------------------------------------------------------------------| 2 | | ----------- Page Length (02h) ---- | 3 | | ------------------------------------------------------------------------| 4 | (MSB) | ----------- Sector ID Count | 5 | (LSB) | ======================================================================== Sector ID Count: This field represents the number of successfully written ID fields on the Initiator specified track (in the SEND DIAGNOSTIC counterpart). Should this count field be less than the Sectors per Track for the specified Track, the ID fields of the remaining sectors on the track (absolute sectors beyond the Sector ID Count) are indeterminate.