Serial ATA CRC Error Reporting
e01133r0
e05133r2
Serial ATA ICRC Reporting
To:T13 Technical committee
From:Brian Dees
Intel Corporation
2111 NE 25th Ave
MS: JF2-53
Hillsboro, OR97124
Phone: (503) 712-7761
Email:
Date:June 22, 2005
1Introduction
In the case of a PIO command that has anSerial ATA interface CRC error, there is not currently a standard defined response detailing the values in the Error field in the returned status from the device. This document intends to define an expected error response from the device when anSATA interface CRC error occurs on a PIO command, essentially handling the error in the same way as if it were a DMA command.
This proposal accommodates the proposed changes in both ATA/7 and in the ATA/8 documents. The ATA/7 changes are proposed as an inclusion into the existing ATA/7 errata being drafted (document e05108rX).
2Proposed ATA/7 Command Set Changes
Insert the following material into the Error Outputs material for all PIO data-out commands including DOWNLOAD MICROCODE, SECURITY DISABLE PASSWORD, SECURITY ERASE UNIT, SECURITY SET PASSWORD, SECURITY UNLOCK, SET MAX SET PASSWORD, SET MAX UNLOCK, SMART WRITE LOG, WRITE BUFFER, WRITE LOG EXT, WRITE MULTIPLE, WRITE MULTIPLE EXT, WRITE MULTIPLE FUA EXT, WRITE SECTOR(S), WRITE SECTOR(S) EXT, WRITE STREAM EXT in section 6:
“The device may return error status if an serial Interface CRC error has occurred.
<NOTE – Additional change to be made in the appropriate table for each command to label the ICRC bit (bit 7) instead of listing it as “na”.>
Error Register –
ICRC may be set to one if a serial interface CRC error has occurred.“
Insert the following material into the Error Outputs material for all PIO data-in commands including IDENTIFY DEVICE, IDENTIFY PACKET DEVICE, READ BUFFER, READ LOG EXT, READ MULTIPLE, READ MULTIPLE EXT, READ SECTOR(S), READ SECTOR(S) EXT, READ STREAM EXT, SMART READ DATA in section 6:
“The device may return error status if an serial Interface CRC error has occurred. Note that there is no defined mechanism for a device to return an ICRC error status that may have occurred during the last data block of a PIO-in data transfer, there may be other mechanisms in which a host can verify that an Interface CRC error occurred in these cases.
<NOTE – Additional change to be made in the appropriate table for each command to label the ICRC bit (bit 7) instead of listing it as “na”.>
Error Register –
ICRC may be set to one if a serial interface CRC error has occurred.”
3Proposed ATA/7 Parallel Transport Changes
Insert the following sentence into sections 11.5 and 11.6 in the ATA/7 Command Set:
“Following a Serial ATA CRC error on a Data FIS, if the device transmits a Register – Device to Host FIS that updates the Status Register it may set the bit 7 (i.e. ICRC bit) to one in the Error Register.”
4Proposed ATA/7 Serial Transport Changes
Insert the following sentence into section 16.5.2.2 (Transmission section which still needs to be added) in the ATA/7 Serial Transport:
“Following a Serial ATA CRC error on a Data FIS, if the device transmits a Register – Device to Host FIS that updates the Status Register it shall set the ERR bit to one and both the BSY bit and DRQ bit cleared to zero in the Status Register, and the ABRT bit set to one in the Error Register. It is recommended for the device to also set the bit 7 (i.e. ICRC bit) to one in the Error Register.”
Insert the following sentence into section 16.5.2.3 (Reception section which still needs to be added) in the ATA/7 Serial Transport:
“There is no Register – Device to Host FIS transmitted after a Serial ATA CRC error on the last Data FIS of a PIO-in command nor following a Serial ATA CRC error on the ATAPI command packet transfer. Thus, there is no mechanism for the device to indicate a Serial ATA CRC error to the host in either of these cases. The host should check the SError register to determine if a Link layer error has occurred in both of these cases.”
52Proposed ATA8-ACS Changes
Insert the following sentence into sections 5.6 and 5.7 in the ATA/8 Command Set (d1699r1c):
“Following anSerial ATA interface CRC error on a the data payloadData FIS, if the device transmits a Device-to-Host FISresponse that updates the Status Register it may set the bit 7 (i.e. the ICRC bit) to one in the Error field.”
Make the following change to section 6.3.6:
“6.3.6 Interface CRC (ICRC)
Interface CRC shall be set to one if an interface CRC error has occurred during an Ultra DMA data transfer. The content of this bit is not applicable to Multiword DMA transfers. [b1]The content of this bit may be applicable to PIO data transfers forthe both Parallel and Serial transports.”
Insert the following material into the Error Outputs material for all PIO data-out commands including DOWNLOAD MICROCODE, SECURITY DISABLE PASSWORD, SECURITY ERASE UNIT, SECURITY SET PASSWORD, SECURITY UNLOCK, SET MAX SET PASSWORD, SET MAX UNLOCK, SMART WRITE LOG, WRITE BUFFER, WRITE LOG EXT, WRITE MULTIPLE, WRITE MULTIPLE EXT, WRITE MULTIPLE FUA EXT, WRITE SECTOR(S), WRITE SECTOR(S) EXT, WRITE STREAM EXT in section 7:
“The device may return error status if an serial Interface CRC error has occurred. See Table TBD.”
Insert the following material into the Error Outputs material for all PIO data-in commands including IDENTIFY DEVICE, IDENTIFY PACKET DEVICE, READ BUFFER, READ LOG EXT, READ MULTIPLE, READ MULTIPLE EXT, READ SECTOR(S), READ SECTOR(S) EXT, READ STREAM EXT, SMART READ DATA in section 7:
“The device may return error status if an serial Interface CRC error has occurred. See Table TBD. Note that there is no defined mechanism for a device to return an ICRC error status that may have occurred during the last data block of a PIO-in data transfer, there may be other mechanisms in which a host can verify that an Interface CRC error occurred in these cases.”
Insert the following table into section 8.3:
Table TBD – PIO Data Interface CRC Error
Word / Name / Description00h / Error
Bit / Description
15:8 / Reserved
7 / Interface CRC - See clause 6.3.6.
6 / N/A
5 / N/A
4 / N/A
3 / N/A
2 / Abort – See clause 6.3.1.
1 / N/A
0 / N/A
01h / Count / Reserved
02h-04h / LBA / Reserved
05h / Status
Bit / Description
15:8 / Reserved
7:6 / Transport Dependent - See clause 6.2.11.
5 / N/A
4 / N/A
3 / Transport Dependent - See clause 6.2.11.
2:1 / N/A
0 / Error – See clause 6.2.3.
63Proposed ATA8-AST Changes
Insert the following sentence into section 7.5.3.3 (Transmission section which still needs to be added) in the ATA/8 Serial Transport (d1697r0b):
“Following a Serial ATA CRC error on a Data FIS, if the device transmits a Device-to-Host FIS that updates the Status Register it shall set the ERR bit to one and both the BSY bit and DRQ bit cleared to zero in the Status field, and the ABRT bit set to one in the Error field. It is recommended for the device to also set the bit 7 (i.e. ICRC bit) to one in the Error field.”
Insert the following sentence into section 7.5.3.4 (Reception section which still needs to be added) in the ATA/8 Serial Transport (d1697r0b):
“There is no Device-to-Host FIS transmitted after a Serial ATA CRC error on the last Data FIS of a PIO-in command nor following a Serial ATA CRC error on the ATAPI command packet transfer. Thus, there is no mechanism for the device to indicate a Serial ATA CRC error to the host in either of these cases. The host should check the SError register to determine if a Link layer error has occurred in both of these cases.”
9/10/20181 of 4
[b1]Do we want to enable use for MWDMA?