100% found this document useful (2 votes)
5K views36 pages

LSI SAS Error Codes

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 36

SAS Error Codes (S11079)

Systems Engineering Note


Version 6.0
April 2009

Revision History
Version and Date

Description of Changes

Version 6.0 and April 2009

Updated Table 1, Table 2, and Table 3 with relevant fault codes to reflect the latest version of the firmware.

Version 5.0 and February 2008

Updated Table 1 on page 8.

Version 4.0 and September 2007

Updated Table1, Table2, Table3, and Table4 with relevant fault codes and IOCLogInfo Codes to reflect the latest version of the firmware.

Version 3.0 and March 2007

Added entries to Table4 to reflect the latest version of the firmware.

Version 2.0 and December 2006

Updated SAS Spec references in Sections 3 and 4.


Deleted the text of Section 5, SAS-to-SCSI Error Translation, and replaced it with a reference to the SCSI/ATA Translation (SAT) Revision 8.
Added and modified a number of entries in Table2. Table2 and Table3 to reflect the latest version of the firmware.

Version 1.0 and August 2005

Initial release.

LSI, the LSI logo, and Fusion-MPT are trademarks or registered trademarks of LSI Corporation or its subsidiaries. All other brand and product names may be trademarks of their respective companies.
LSI Corporation reserves the right to make changes to the product(s) or information contained herein at any time without notice. LSI Corporation does not assume any responsibility or liability arising
out of the application or use of any product or service described herein, except as expressly agreed to in writing by LSI Corporation; nor does the purchase, lease, or use of a product or service from
LSI Corporation convey a license under any patent rights, copyrights, trademark rights, or any other of the intellectual property rights of LSI Corporation or of third parties.
Corporate Headquarters
Milpitas, CA
800-372-2447
Document Number: DB05-000143-04
Copyright 2009 LSI Corporation
All Rights Reserved

Email
[email protected]

Website
www.lsi.com

SAS Error Codes System Engineering Note

Document Overview

Systems Engineering Note


SAS Error Codes
This document provides information on the SAS error codes.
1.0 Document Overview

2.0 References

3.0 SAS Protocol Error Handling

This SEN provides the following information relating to SAS error codes:

SAS Protocol Error Handling on page 1

SATA-to-SCSI Error Translation on page 7

SAS Firmware Fault Codes on page 7

MPI Reply Message Codes for SAS on page 23

This following lists the documentation relating to SAS error codes:

Serial Attached SCSI Specification 1.1 Revision 10 (September 21, 2005)

SCSI Primary Commands 3 (SPC-3) Revision 22a

SCSI Block Commands 2 (SBC-2) Revision 16

SCSI Architecture Model 3 (SAM-3) Revision 14

SCSI/ATA Translation (SAT) Revision 8 (January 17, 2006)

AT Attachment with Packet Interface-7 Volume 1, Revision 4b

Fusion-MPT Message Passing Interface Specification, v1.5.6 (September 2007, LSI


Document Number: DB14-000174-09)

This section defines the SAS Protocol Error Handling of LSI SAS controllers. It specifically
addresses initiator mode SSP errors. It does not specifically address SATA, STP, or SSP
target mode error handling; however, in some cases the error handling for those
protocols is the same as SSP.
The LSI SAS firmware is part of the Fusion-MPT device driver architecture. The role of
the SAS firmware is to do an I/O request that is issued from a host driver, and to reply
with a success or failure status. Note that the host driver could be a driver stack in an
operating system (such as the Windows SCSI Port and Miniport drivers), or it could be
RAID firmware running on an LSI controller or on an external IOP. A key part of the
architecture is that the host driver is in control, and the firmware just does what the
driver tells it to do. In this architecture, the host driver stack is responsible for most retry
logic and timeouts for commands it sends. In most cases when an error is detected, the
firmware replies with an error status to the host and allows the host driver stack to
determine if it wants to fail the I/O to the OS, or retry it, or do something else. The

LSI Corporation Confidential | April 2009

Page 1

SAS Protocol Error Handling

SAS Error Codes System Engineering Note

Fusion-MPT architecture is a SCSI Command Set based architecture in which the host
driver passes a message to the firmware that includes a SCSI command, and the
firmware attempts to send the command to a target. Then the firmware replies to the
host driver with a status of success or failure. Failure responses include SCSI Status and
Sense Data from the target, if present.
The entries in this section are listed in alphabetical order.
3.1

ACK/NAK Timeout

Command Frame- (See SAS Spec 9.2.4.2.) The firmware sends a Task Abort to the
target to abort the I/O. Then the I/O is failed to the host and the host can retry it if it
desires. The SAS spec suggests sending a Query Task to determine if the target really
received a command. The controller does not do this because of the additional
complexity required. Instead of sending a Query Task to see if the I/O was received, and
then perhaps resending it, the controller sends a Task Abort. Then if the target did
receive the command, the target aborts the I/O; if the target did not receive the
command, the controller knows for sure that the I/O is cleaned out. After the controller
aborts the command, the controller fails the I/O to the host and expects the host to
retry the I/O. At some point this implementation may be changed so the host uses
Query Task as the spec suggests.
Data Frame- (See SAS Spec 9.2.4.5.) The current firmware sends a Task Abort to the
target to abort the I/O, as specified in SAS 1.0. Future versions of the firmware are
expected to support transport layer retries, as defined in SAS 1.1, in which case the
frame transmission will be retried.
Task Frame- (See SAS Spec 9.2.4.3.) Retry sending the task frame with the Retransmit
bit set.

3.2

Arbitration Wait Timer Maxed

(See SAS Spec 7.12.3.) Fail the I/O back to the host with
MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE.

3.3

Break Received

(See SAS Spec 7.12.5.) When a BREAK is received, the controller responds by sending a
BREAK.
Command Frame- The firmware sends a Task Abort to the target to abort the I/O. Then
the I/O is failed to the host, and the host can retry it if it desires.
Rx Data Frame- If a full frame is not received, the CRC is not correct; therefore, the
controller treats this as if the frame was never received. If the full frame is received, the
frame is processed as normal.
Tx Data Frame- The current firmware sends a Task Abort to the target to abort the I/O,
as specified in SAS 1.0. Future versions of the firmware are expected to support
transport layer retries as defined in SAS 1.1, in which case the frame transmission will
be retried.
Response Frame- If a full frame is not received, the CRC is not correct; therefore, the
controller treats this as if the frame was never received. If the full frame is received, the
frame is processed as normal.

Page 2

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Protocol Error Handling

3.4

Break Timeout

This condition occurs when the controller sent a BREAK, but no BREAK was received
back (which would confirm the BREAK cycle) within 1-ms. SAS 7.12.7 states that the
originating PHY shall assume that the connection request has been aborted if it
receives a BREAK timeout. The originating PHY may perform a link reset, so the
firmware will issue a link reset.

3.5

Close Timeout

This condition occurs when a Close-Timeout occurs during a CLOSE cycle. The
controller sent a CLOSE, but no CLOSE was received back (which would confirm the
CLOSE cycle) within 1-ms. SAS 7.12.6 states that the originating PHY shall attempt to
break the connection if it receives a CLOSE timeout. The hardware automatically sends
a BREAK primitive, and the firmware then lets the upper layer blocks deal with any
errors that may be detected there.

3.6

Coding Errors

The controllers PHY behavior exactly follows the Dword Sync State Machine defined in
the SAS Spec, section 6.9. Basically, SAS is tolerant of a few dword errors. If four dwords
contain errors, the link has lost dword synchronization and it will go down. Then the
controller initiates a link reset sequence to try to bring the link back up.

3.7

CRC Errors

(See SAS Spec 7.2.6.5.) If a frame is received with a CRC error, none of the contents of
the frame can be relied upon, so the hardware sends a NAK (CRC Error) and the frame is
ignored.

3.8

Credit Timeout Condition

(See SAS Spec 7.2.6.3.) DONE (CREDIT_TIMEOUT) is sent when credit is not granted
within 1-ms.

3.9

Data Overrun

Rx Data- The controller never DMAs more data into host memory than what is
specified in the scatter/gather list in the request from the host. The controller DMAs all
the data to the host until it reaches the end of the scatter/gather list, and then it bit
buckets any extra data. Fail I/O to the host with MPI_IOCSTATUS_SCSI_DATA_OVERRUN.
TX Data- The controller never sends more bytes than what is specified in the
scatter/gather list. The controller sends exactly the number of bytes in the
scatter/gather list and then waits for the target to complete the I/O by sending a
response frame. If the target is expecting more data, it does not send a response frame
and the host times out the I/O and goes into error recovery, which most likely involves
sending down a task management request to abort the I/O or reset the drive.

3.10 Data Underrun

Rx Data- When the controller receives a response frame indicating the target has
completed the I/O, it compares the number of bytes it expected with the number of
bytes it actually received. If it received fewer bytes than expected, it fails the I/O to the
host with MPI_IOCSTATUS_SCSI_DATA_UNDERRUN. The host may choose to not
consider this an error if it was on certain commands that specify a maximum buffer size
and the target is allowed to only transfer what it wants, such as Inquiry or Mode Sense.
TX Data- When the controller receives a response frame indicating the target has
completed the I/O, it compares the number of bytes it expected to send with the
number of bytes it actually was able to send. If it sent fewer bytes that expected, it fails
the I/O to the host with MPI_IOCSTATUS_SCSI_DATA_UNDERRUN.

LSI Corporation Confidential | April 2009

Page 3

SAS Protocol Error Handling

SAS Error Codes System Engineering Note

3.11 Disparity Errors

The controllers PHY behavior exactly follows the Dword Sync State Machine defined in
the SAS Spec, section 6.9. Basically, SAS is tolerant of a few dword errors. If four dwords
contain errors, the link has lost dword synchronization and the link will go down. Then
the controller initiates a link reset sequence to try to bring the link back up.

3.12 Done (ACK Timeout)

The SSP state machine (see SAS Spec 7.16.8) timed out waiting for an ACK or NAK, and
the transmitter is going to transmit BREAK in 1-ms unless DONE is received within 1-ms
of transmitting the DONE (ACK/NAK TIMEOUT).

3.13 Done Timeout

(See SAS Spec 7.16.8.5.) This condition occurs when a Done-Timeout occurs during an
SSP connection. The DONE primitive indicates that the transmitter is done sending
frames, in preparation for closing the connection. The hardware automatically sends a
BREAK primitive, and then it lets the upper layer blocks deal with it if any errors are
generated there.

3.14 Hard Reset

(See SAS Spec 4.4.2.) If a HARD_RESET primitive is received, the controller should stop
sending DWORDS on all PHYs within that port. The controller does this by doing a link
reset on all PHYs in the port, including the one on which the HARD_RESET was received.
According to SAM-3, section 6.3.2, if this port is in target mode, a logical unit reset
occurs.
For initiator mode, SAM-3 says: When a SCSI initiator port detects a hard reset
condition, it should terminate all its outstanding Execute Command procedure calls
with a service response of SERVICE DELIVERY OR TARGET FAILURE. A hard reset
condition shall not affect any other SCSI initiator ports in the SCSI initiator device;
however, the logical unit reset condition established in a SCSI target device by a hard
reset may affect tasks that are communicating via other SCSI initiator ports.

3.15 Identify Timeout

The firmware initiates a new link reset sequence.

3.16 Invalid Frame Type

The frame or frame information structure (FIS) type received in the header is not valid.
SAS Spec 9.2.5.2 says, The frame shall be discarded for wrong frame types.

3.17 Invalid Hashed SAS Destination


Address

SAS Spec 9.2.6.2.2.3 says, The frame shall be discarded for wrong hashed destination
or source address.

3.18 Invalid Hashed SAS Source Address

SAS Spec 9.2.6.2.2.3 says, The frame shall be discarded for wrong hashed destination
or source address.

3.19 Invalid Initiator Connection Tag

(See SAS Spec 7.2.5.11.) The controller returns Open Reject (Protocol Not Supported).

3.20 Invalid Link Rate

(See SAS Spec 7.2.5.11.) The controller returns Open Reject (Rate Not Supported).

3.21 Invalid Protocol

(See SAS Spec 7.2.5.11.) The controller returns Open Reject (Protocol Not Supported).

3.22 Invalid Queue Tag

(See SAS Spec 9.2.5.2.) The controller discards a frame received with an invalid queue
tag. It then sends a HARD_RESET to a direct attach device, or does an Smp Phy Control
with SMP_PHY_CONTROl_PHY_OPERATION_HARD_RESET if the device is attached to
an expander.

Page 4

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Protocol Error Handling

3.23 Invalid SAS Destination Address in


Open

(See SAS Spec 7.2.5.11.) If the controller receives an Open with an invalid destination
SAS address, it returns Open Reject (Wrong Destination).

3.24 Invalid SAS Source Address in


Open

If the controller receives an Open with an invalid source SAS address, it returns Open
Reject (Protocol Not Supported).

3.25 NAK Received

Command Frame- (See SAS Spec 9.2.4.2.) The hardware retries a NAKd command
frame a programmable number of times. The number is specified in an MPI config
page. After the retry threshold is reached, the I/O is failed to the host with
MPI_IOCSTATUS_SCSI_PROTOCOL_ERROR.
Data Frame- (See SAS Spec 9.2.4.5.) The current firmware sends a Task Abort to the
target to abort the I/O, as specified in SAS 1.0. Future versions of the firmware are
expected to support transport layer retries as defined in SAS 1.1, in which case the
frame transmission will be retried.
Task Frame- (See SAS Spec 9.2.4.3.) Retry sending the task frame with the Retransmit
bit set.

3.26 Non-Good Response Returned

The firmware replies with an error response to the host driver with the SCSI Status,
Sense or Response Data.

3.27 OOB Sequence/Link Reset During


Transfer

Whenever the link goes down for any reason, including OOB or loss of dword sync, the
controller initiates a new link reset sequence to attempt to bring the link up. The
hardware keeps trying OOB until it is able to bring the link back up.
Outside of a Frame- Nothing in addition to the link reset mentioned above occurs if a
frame is not interrupted when the link goes down.
Command- The firmware sends a Task Abort to the target to abort the I/O. Then the I/O
is failed to the host and the host can retry it if it chooses.
Tx Data- The current firmware sends a Task Abort to the target to abort the I/O, as
specified in SAS 1.0. Future versions of the firmware are expected to support transport
layer retries as defined in SAS 1.1, in which case the frame transmission will be retried.
Rx Data- If the link is reset before the CRC/EOF, the controller does not receive a
complete frame. The controller discards the frame.
Response- If the link is reset before the CRC/EOF, the controller does not receive a
complete frame. The controller discards the frame.

3.28 Open Reject (Bad Destination)


Received

(See SAS Spec 7.2.5.11.)


Command- Fail I/O to host with MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE.
Tx Data- Since the command has already been sent to the target, the controller does a
task management abort to abort the I/O at the target, and then fails the I/O to the host.

3.29 Open Reject (No Destination)


Received

(See SAS Spec 7.2.5.11.) Retry connection attempt.

3.30 Open Reject (Pathway Blocked)


Received

(See SAS Spec 7.2.5.11.) Retry connection attempt.

LSI Corporation Confidential | April 2009

Page 5

SAS Protocol Error Handling

3.31 Open Reject (Protocol Not


Supported) Received

SAS Error Codes System Engineering Note

(See SAS Spec 7.2.5.11.)


Command- Fail I/O to host with MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE.
Tx Data- Since the command has already been sent to the target, the controller does a
task management abort to abort the I/O at the target, and then fails the I/O to the host.

3.32 Open Reject (Rate Not Supported)


Received

(See SAS Spec 7.2.5.11). If the connection rate is not 1.5-Gb, lower the rate. Then retry
the connection attempt.

3.33 Open Reject (Retry) Received

(See SAS Spec 7.2.5.11.) Retry the connection attempt.

3.34 Open Reject (STP Resources Busy)


Received

(See SAS Spec 7.2.5.11.) Retry the connection attempt.

3.35 Open Reject (Wrong Destination)


Received

(See SAS Spec 7.2.5.11.)


Command- Fail I/O to host with MPI_IOCSTATUS_SCSI_DEVICE_NOT_THERE.
Tx Data- Since the command has already been sent to the target, the controller does a
task management abort to abort the I/O at the target, and then fails the I/O to the host.

3.36 Open Timeout

(See SAS Spec 7.12.2.1.) Send out a BREAK, and then retry the open request in a new
connection.

3.37 Protocol Mismatch

(See SAS Spec 9.2.5.2.) There is a protocol mismatch for the frame or Frame Information
Structure (FIS) receivedfor example, if a FIS with Xfer_Rdy frame type is received for a
STP connection. Discard the frame.

3.38 Queue Full

If Queue Full handling is enabled via an MPI config page, the firmware handles Queue
Full. In that case the firmware pends I/Os until more I/Os complete, and then it resumes
sending them. When Queue Full handling is enabled, the firmware does not return I/Os
that get Queue Full status to the host, but instead retries them. If Queue Full handling is
disabled, the firmware fails the I/O back to the host with a SCSI Status of Queue Full.

3.39 Reserved Bits Set

Currently the controller does not check to see if any reserved bits are set.

3.40 Retransmit Bit Set in


Data/XFER_RDY Frames

SAS 1.1 transport layer retries will be addressed in a future version of this document.

3.41 Retransmit Field Set in Response


Frame

(See SAS Spec 9.2.4.6.) The target sets this bit if it has previously sent a response frame
but did not receive an ACK or NAK. If this bit is set and the controller has already
received a response frame for that I_T_L_Q nexus, the controller discards the extra
response frame. Otherwise, the controller treats this as a valid response.

3.42 Wrong Data Amount in XFER_RDY

Xfer Rdy Specifies Too Little Data- The I/O is failed to host with
MPI_IOCSTATUS_SCSI_DATA_UNDERRUN, since less data was transferred than
expected.
Xfer Rdy Specifies Too Much Data- The controller never sends more bytes than are
specified in the scatter/gather list. The I/O will have transferred exactly the number of
bytes requested, so it will complete successfully.

Page 6

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SATA-to-SCSI Error Translation

3.43 Wrong Data Offset

SAS Spec 9.2.5.2 states that the controller shall abort the command if it receives an
XFER_RDY with a requested offset that is not expected. If the controller receives a data
frame with a data offset that was not expected, it discards the frame and any other data
frame for that command, and then it aborts the command. SAS Spec 10.2.2 gives
detailed information on the error response.

3.44 Wrong Frame Length

SAS Spec 9.2.6.2.2.3 and 10.2.2 gives detailed information on the error response.
Discard the frame and abort the I/O by sending a Task Abort.

3.45 XFER_RDY Sent For Non-Write


Command

SAS Spec 9.2.5.2 says to discard the frame and abort the I/O. The controller sends a
target reset.

3.46 Zero Length Data Frame Received

SAS Spec 9.2.5.2 says to discard the frame and abort the I/O, so the controller sends a
Task Abort for that I/O.

3.47 Zero Length Xfer Rdy

SAS Spec 9.2.5.2 says to discard the frame and abort the I/O, so the controller sends a
Task Abort for that I/O.

4.0 SATA-to-SCSI Error


Translation

For information about SATA-to-SCSI error translation, refer to SCSI/ATA Translation (SAT)
Revision 8 (January 17, 2006).

5.0 SAS Firmware Fault Codes

This section has information about firmware fault codes that may be generated by the
1064/1068 firmware. The fault code may be determined either via the System Doorbell
register or via the Heartbeat LED. The fault codes and their interpretations are also
given.
When the firmware detects an unrecoverable error, it writes the fault code to the
System Doorbell register on the I/O Unit. It also outputs the fault code to the Heartbeat
LED via a coded series of flashes, as explained in Heartbeat LED on page 7.
When the firmware has entered fault state, the host driver must use a Hard Reset to
attempt to recover.

5.1

Obtaining the Fault Code

This section explains how to obtain the fault code from the System Doorbell register or
from the flash sequence on the Heartbeat LED.

5.1.1

Doorbell

The process of obtaining the fault code from the System Doorbell register is explained
in Section 1.3.3 (IOC States) of the Fusion-MPT Message Passing Interface Specification,
v1.5.3. When the firmware detects a fault, each System Doorbell register is written with
the fault code. The presence of a fault code may be determined if the State Nibble
(upper 4-bits) of the System Doorbell register = 0b0100. The rest of the System
Doorbell register indicates the fault code.

5.1.2

Heartbeat LED

The firmware also outputs the fault code on the Heartbeat LED. To determine the fault
code value, you first need to look for the flash sequence that indicates the start of the
value. The synchronization sequence is:

LSI Corporation Confidential | April 2009

10 rapid flashes (1/10 second each)

2 seconds off

Page 7

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Following this sequence, the length of the next 17 flashes indicates each bit of the fault
code. A long flash (1 second) = 1 and a short flash (1/4 second) = 0. There is a 2.5-second
delay between each flash.
When you write down a sequence, you will come up with something like this:
L SSSL SSLS SSLL SLSS
The above sequence indicates a fault code of 0x00011234 (15 leading 0 bits added).
5.2

The following shows the format of the fault code:

Fault Code Interpretation

31

16 15
Reserved

Ch

Fault Value

Ch

16
The channel where the fault was detected.

Fault Value

[15:0]
A value indicating the fault that the firmware has detected
(see Table1).

5.3

The following table lists and describes the current fault values.

Fault Values and Descriptions

Table 1: Fault Values and Descriptions


Value

Fault

Builds

Description

0x0100

IFAULT_IOP_FREE_INVALID_FRAME

Debug
only

Attempt to free internal frame that is


out-of-range.

0x0200

IFAULT_IOP_SHARED_MEM_PARITY

All

Internal memory parity error detected.

0x0300

IFAULT_IOP_EXT_MEM_PARITY

All

External memory parity error detected.

0x0301

IFAULT_IOP_EXT_MEM_INSUFFICIENT

IR
PSBRAM

Either NVRAM or PSBRAM memory region is


too large to fit.

0x0400

IFAULT_IOP_SYS_DOORBELL_FAIL

All

Firmware attempted to write doorbell to host,


but host has not yet read the previous
doorbell.

0x0500

IFAULT_IOP_INVALID_FRAME_STATE_FREE

Debug

Attempt to free internal frame that was already


free.

0x0501

IFAULT_IOP_INVALID_FRAME_STATE_REQ_FREE

Debug

Attempt to place internal frame on request


free queue, but it was already there.

0x0600

IFAULT_IOP_SCSIO_MSG_INVALID_CHAIN

Debug

Obsolete.

0x0601

IFAULT_IOP_SCSIO_MSG_INVALID_CHAIN_OFF

Debug

SCSI I/O Chain offset field contained non-zero


value, but the DataLength field was zero.

0x0602

IFAULT_IOP_SCSIO_MSG_INVALID_SGE_RESERVED

Debug

SCSI I/O SGE present for non-zero DataLength.

0x0603

IFAULT_IOP_SCSIO_MSG_INVALID_CHAIN2

Debug

SCSI I/O SG List contained chain pointer to


non-chain element.

0x0604

IFAULT_IOP_SCSIO_MSG_INVALID_CHAIN3

Debug

SCSI I/O SG List contained non-local chain


pointer.

Page 8

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Firmware Fault Codes

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x0605

IFAULT_IOP_SCSIO_MSG_INVALID_LE

Debug

SCSI I/O SG List must contain exactly 1 Simple


element with Last Element Flag in the Message
Frame or Chain Segment.

0x0606

IFAULT_IOP_SCSIO_MSG_INVALID_ELEM_TYPE

Debug

SCSI I/O SG List Invalid Element Type found.

0x0607

IFAULT_IOP_SCSIO_MSG_INVALID_LOCAL_ADDR

Debug

SCSI I/O SG List Host SGL cannot contain Local


Element Flag in SGL.

0x0608

IFAULT_IOP_SCSIO_MSG_INVALID_NUM_CHAINS

Debug

SCSI I/O SG List Number of chains found in SGL


does not match number found when
traversing chains.

0x0609

IFAULT_IOP_SCSIO_MSG_INVALID_CDB_LEN

Debug

SCSI I/O CDB Length field was zero.

0x060A

IFAULT_IOP_SCSIO_MSG_INVALID_RSVD

Debug

SCSI I/O Reserved Field non-zero.

0x060B

IFAULT_IOP_SCSIO_MSG_INVALID_MSGFLAGS

Debug

SCSI I/O MsgFlag field had undefined bits set.

0x060C

IFAULT_IOP_SCSIO_MSG_INVALID_PTRMSG

Debug

Invalid SCSI IO Message.

0x0700

IFAULT_IOP_FLASH_VALIDATION_FAILED

All

Unrecoverable Flash Persistent Configuration


failure.

0x0701

IFAULT_IOP_FLASH_CONFIGPAGE_BUILD_PERSISTSTORAGE_REVAL_FAIL

All

Error building persistent config pages on


FLASH.

0x0702

IFAULT_IOP_FLASH_CONFIGPAGE_BUILD_MIGRATION_VALIDATE_FAIL

All

Migration of persistent config pages failed.

0x0703

IFAULT_IOP_FLASH_DETECT_VALIDATE_FAIL

All

Flash support is enabled, but Flash was not


detected.

0x0704

IFAULT_IOP_FLASH_PERSISTSTORAGE_REVAL_FAIL

All

Error building persistent config pages on


SEEPROM.

0x0705

IFAULT_IOP_FLASH_SEEPROM_MIGRATION_VALIDATE_FAIL

All

Migration of persistent config pages failed.

0x0706

IFAULT_IOP_FLASH_PERSIST_TO_CURPAGE_UPDATE_FAIL

All

Failure to copy the data from the Persistent


Page to the Current Page.

0x0707

IFAULT_IOP_FLASH_ALLOCUNITS_SIZE_CHANGE_VALIDATE_FAIL

All

Unable to find a NVDATA element in the


persistent pages.

0x0708

IFAULT_IOP_FLASH_LOGADD_PERSISTSTORAGE_MIGRATION_VALIDATE
_FAIL

All

Migration of persistent config pages failed.

0x0709

IFAULT_IOP_FLASH_LOGHDR_PERSISTSTORAGE_MIGRATION_VALIDATE
_FAIL

All

Migration of persistent config pages failed.

0x070A

IFAULT_IOP_FLASH_PERSIST_READ_VALIDATE_FAIL

All

Failed reading the persistent storage.

0x0800

IFAULT_IOP_AHB_BUS_FAULT

All

Internal AHB Bus Fault detected.

0x0900

IFAULT_IOP_STACK_OVERFLOW

All

Processor Stack overflow detected.

0x0901

IFAULT_IOP_FIQ_STACK_OVERFLOW

All

Processor FIQ stack overflow detected.

0x0A00

IFAULT_IOP_NO_IOP_RESOURCE_FRAMES

None

Not used.

0x0A01

IFAULT_IOP_NO_IOP_RESOURCE_FRAMES_MFG_5

None

Not used.

0x0A02

IFAULT_IOP_NO_IOP_RESOURCE_FRAMES_DOORBELL

All

Doorbell Handshake was unable to allocate an


internal message frame.

0x0B00

IFAULT_IOP_NO_IOP_CRITICAL_FRAMES_AVAIL

All

IOP Critical Frame is not available at that


particular index.
[7:6] = Subsystem
[5:0] = Index

0x0C00

IFAULT_IOP_INVALID_FRAME_SIZE

Debug

MPI Message exceeded Frame Size.

LSI Corporation Confidential | April 2009

Page 9

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x0D00

IFAULT_IOP_UNKNOWN_FIQ

All

A Fatal Interrupt occurred for an unknown


reason.

0x0E00

IFAULT_IOP_RING_BUFFER_ERROR

None

Unused.

0x0F00

IFAULT_IOP_INVALID_MAX_DEVICES

All

IocInit MaxDevices must be power-of-2 if


MaxBusses is not 1.

0x1000

IFAULT_IOP_INVALID_SAS_ADDRESS

All

SAS Address not specified.

0x1100

IFAULT_IOP_INVALID_FLASH_IMAGE

None

Not used.

0x1200

IFAULT_IOP_TASK_MGMT

All

Task Management Coding Error.

0x1201

IFAULT_IOP_TASK_MGMT_UNKNOWN_SOURCE

All

Task Management source unknown.

0x1202

IFAULT_IOP_TASK_MGMT_NOT_FOUND_ON_QUEUE

All

Task Management Request not found in the


queue.

0x1300

IFAULT_IOP_NO_NVDATA

All

NVDATA image not found.

0x1301

IFAULT_IOP_NVDATA_MISMATCH_PERSISTENT_PAGES

All

When building Persistent Config Pages, the


F/W detected that the attached NVDATA is
missing a Config Page(s). This indicates that
the attached NVDATA does not match that
which the F/W expects.

0x1302

IFAULT_IOP_NVDATA_MISMATCH_CURRENT_PAGES

All

When building Current Config Pages, the F/W


detected that the attached NVDATA is missing
a Config Page(s). This indicates that the
attached NVDATA does not match that which
the F/W expects.

0x1303

IFAULT_IOP_NVDATA_MISMATCH_CONFIG_ROUTE_TABLE

All

Mismatch between the Config Routing Table


and the NVDATA.

0x130A

IFAULT_IOP_NVDATA_HEADER_SIGNATURE_MISMATCH

All

Mismatch in NVDATA header signature

0x1400

IFAULT_IOP_REV_ID_MISMATCH

All

Firmware does not support this hardware


revision.

0x1500

IFAULT_IOP_SCHEDULER_ERROR

None

Not used.

0x1600

IFAULT_IOP_MID_OUT_OF_RANGE_FREE_FRAME

All

An invalid Message Index was detected.

0x1601

IFAULT_IOP_MID_OUT_OF_RANGE_SCSIIO_COMP

All

An invalid Message Index was detected in


SCSIIOComplete function.

0x1602

IFAULT_IOP_MID_OUT_OF_RANGE_SCSIIO_COMP_ERR

All

An invalid Message Index was detected in


SCSIIOCompleteError function.

0x1603

IFAULT_IOP_MID_OUT_OF_RANGE_SCSIIO_START

All

An invalid Message Index was detected in


StartScsiIo function.

0x1604

IFAULT_IOP_MID_OUT_OF_RANGE_MSG_COMP

All

An invalid Message Index was detected in


MsgComplete function.

0x1702

IFAULT_IOP_PCI_PARITY_ERROR

All

PCI Parity Error detected.

0x1800

IFAULT_IOP_SELFTEST_FAILED_RSRC_BUF

IR

Resource Buffer Initialization Failure.

0x1801

IFAULT_IOP_SELFTEST_FAILED_IOPFLAGS

All

IOPFlag Selftest Failure.

0x1802

IFAULT_IOP_SELFTEST_FAILED_CACHE_INIT

All

Cache Initialization Failure.

0x1803

IFAULT_IOP_SELFTEST_FAILED_TRANS_TABLE

All

Memory Translation Table Failure.

0x1804

IFAULT_IOP_SELFTEST_FAILED_TIMER

All

Timer Failure.

0x1805

IFAULT_IOP_SELFTEST_FAILED_SYSIF

All

System Interface Queue Initialization Failure.

Page 10

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Firmware Fault Codes

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x1806

IFAULT_IOP_SELFTEST_FAILED_DIVIDER

All

Processor Divide Routine Failure.

0x1900

IFAULT_IOP_INVALID_REPLY

Debug

The A bit was set in the MessageContext Field


when the I/O was received.

0x1901

IFAULT_IOP_INVALID_REPLY_MSG_LOOPBACK

All

Invalid reply message in loopback.

0x1902

IFAULT_IOP_INVALID_REPLY_MSG_NON_SCSIIO

All

Invalid SCSI I/O reply message.

0x1903

IFAULT_IOP_INVALID_REPLY_MSG_SUCCESSFUL_HOSTIO

All

Invalid source of the SCSI I/O message.

0x1904

IFAULT_IOP_INVALID_REPLY_MSG_UNSUCCESSFUL_HOSTIO

All

Invalid source of the SCSI I/O message.

0x1A00

IFAULT_IOP_UNHANDLED_HI_PRI_DB_INTERRUPT

All

HiPriDoorbell interrupt set with no Doorbell or


HighPri Interrupt pending.

0x1B00

IFAULT_IOP_UNHANDLED_QUAD_CPLT_INTERRUPT

All

Quad Completion interrupt with no Quad


complete pending.

0x1C00

IFAULT_IOP_UNHANDLED_QUAD_INT_INTERRUPT

0x1D00

IFAULT_IOP_UNHANDLED_EVENT

All

Coding Error Event sent with no


corresponding handler present.

0x1E00

IFAULT_SRW_BUS_FAULT_ERROR

All

PCI Bus Fault detected during PCI transfer.

0x1F00

IFAULT_SRW_PARITY_ERROR

All

PCI Error detected during PCI transfer.

0x2000

IFAULT_IOP_PCI_BUS_FAULT_ERROR

All

PCI Bus Fault detected during PCI transfer.

0x2100

IFAULT_IOP_MESSAGING_QUEUE_OVERFLOW

All

One of the messaging queues detected


overflow conditions.

0x2200

IFAULT_INVALID_RUNTIME_CONFIGURATION

All

Persistent config pages are specifying an


invalid Runtime Configuration.

0x2300

IFAULT_IOP_NO_THREAD_TIMER

IR

No Timer available for Integrated RAID usage.

0x2400

IFAULT_INSUFFICIENT_HOST_BUFFER

1064 A2

IOCInit message did not supply sufficient


HostPageBuffer for operation.

0x2500

IFAULT_IOP_RETARGET

All

A C library function __rt_raise was called. This


function may be called, for example, by the
division library being requested to divide by
zero.

0x2600

IFAULT_IOP_SDRAM_UNCORRECTABLE_ECC_ERROR

1078

ECC error detected on external memory.

0x2610

IFAULT_IOP_PLB2AHB_ERROR

1078

The PLB memory bus to AHB memory bus


bridge detected a failure.

0x2620

IFAULT_IOP_PCI_EXPRESS_ERROR

1078

PCI Express bus error detected.

0x2630

IFAULT_IOP_MIRQ_ERROR

1078

MIRQ error detected.

0x2640

IFAULT_IOP_I2O_DMA_ERROR

1078

I20 DMA error detected.

0x2650

IFAULT_DMA_ERROR_PORT1

1078

0x2660

IFAULT_FATAL_INT

0x2670

IFAULT_POWER_LOSS_EXPECTED

1078

Power loss was expected and then fault the


controller and let the host device drivers
restart the controller and the failed I/Os.

0x2700

IFAULT_IOP_INVALID_CRIT_FRAME_REQUEST

All

Index for IOP Critical Frame is outside of valid


range.
[7:6] = Subsystem
[5:0] = Index

LSI Corporation Confidential | April 2009

Quad Interrupt with no Quad Interrupt


pending.

Port 1 DMA error detected.


Not used.

Page 11

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x2800

IFAULT_EXCEPTION_UNDEFINED_INST

None

Undefined Instruction Processor Exception.

0x2801

IFAULT_EXCEPTION_SWI

None

0x2802

IFAULT_EXCEPTION_PREFETCH_ABORT

None

Prefetch Abort Processor Exception.

0x2803

IFAULT_EXCEPTION_DATA_ABORT

None

Data Abort Processor Exception.

0x2810

IFAULT_EXCEPTION_IRQ_UNKNOWN

None

Unknown IRQ Interrupt.

0x3333

IFAULT_IOP_UNKNOWN

All

Fatal condition occurred for an unknown


reason.

0x4000

IFAULT_PL_INVALID_DEVICE_TYPE

None

Unused.

0x4100

IFAULT_PL_UNHANDLED_INTERRUPT

None

Unused.

0x4101

IFAULT_PL_UNHANDLED_INTERRUPT_LINK

All

Unhandled Link Interrupt occurred.

0x4102

IFAULT_PL_UNHANDLED_INTERRUPT_PORT

All

Unhandled Port Interrupt occurred.

0x4103

IFAULT_PL_UNHANDLED_INTERRUPT_QUAD_ERROR

All

Unhandled Quad Error Interrupt occurred.

0x4104

IFAULT_PL_UNHANDLED_INTERRUPT_QUAD_INT

All

Unhandled Quad Interrupt occurred.

0x4105

IFAULT_PL_UNHANDLED_INTERRUPT_INT_TRANS

All

Unhandled Transport Interrupt occurred.

0x4106

IFAULT_PL_UNHANDLED_INTERRUPT_ERR_TRANS

All

Unhandled Transport Error Interrupt occurred.

0x4200

IFAULT_PL_INVALID_CALLBACK_STATE

All

An unknown callback state was encountered.

0x4201

IFAULT_PL_INVALID_CALLBACK

All

A callback was called, but was not expecting to


be called.

0x4202

IFAULT_PL_CALLBACK_STACK_OVERFLOW

All

Attempt was made to push more callbacks on


an already full stack.

0x4203

IFAULT_PL_CALLBACK_STACK_UNDERFLOW

All

Attempt was made to pop off a callback that


does not exist.

0x4204

IFAULT_PL_CALLBACK_STACK_INVALID_DEVH

All

Attempted to invoke callback on an invalid


device handle.

0x4300

IFAULT_PL_INVALID_PHY_NUM

All

Port Layer Error with no corresponding Phy


Error.

0x4400

IFAULT_PL_PHY_TABLE_FULL

All

Too many phys detected.

0x4500

IFAULT_PL_DEVICE_TABLE_FULL

All

Too many devices detected.

0x4600

IFAULT_PL_NO_START_SMP_FLAG_SET

Debug

Invalid SMP Flag during HW cleanup.

0x4800

IFAULT_PL_FREED_UNUSED_HWDEVINDEX

All

Attempt to free already free HW device index.

0x4900

IFAULT_PL_INVALID_MID

All

Tag received in a response frame for an I/O that


was not outstanding.

0x4A00

IFAULT_PL_INITIATOR_TABLE_FULL

All

Attempting to add an initiator device and no


slots available.

0x4B00

IFAULT_PL_UNUSED

None

Unused.

0x4C00

IFAULT_PL_SATA_ENGINE_RAM_PARITY_ERROR

All

Parity Error detected by SATA Engine. (Include


0x4C00 through 0x4C07).

0x4C1F

IFAULT_PL_SATA_PR_OUT_INVALID_PHYTABLE

0x4D00

IFAULT_PL_ATAPI_UNEXPECTED_FIS

All

Received SATA FIS for ATAPI device that was


not expected.

0x4E01

IFAULT_PL_NO_IOP_RESOURCE_FRAMES_EVENT

All

No internal frames available to send MPI Event.

Page 12

Not used.

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Firmware Fault Codes

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x4E02

IFAULT_PL_NO_IOP_RESOURCE_FRAMES_CONFIG

All

No internal frames available to send internal


Config request.

0x4E03

IFAULT_PL_NO_IOP_RESOURCE_FRAMES_SENSE

All

No internal frames available to send SCSI


Sense Data.

0x4E04

IFAULT_PL_NO_IOP_RESOURCE_FRAMES_TASK_MGMT

All

No internal frames available to send Task


Management Request.

0x4E05

IFAULT_PL_NO_IOP_RESOURCE_FRAMES_SATA_INIT

All

No internal frames available to send SATA


Initialization commands.

0x4F00

IFAULT_PL_LINK_TIMER_FAILED

All

Unable to create internal timer for Link Reset


Sequence.

0x5000

IFAULT_PL_LINK_RESET_SEQUENCE_FAILURE

All

Unhandled Link Reset Sequence.

0x50F0

IFAULT_PL_LINK_RESET_STOP_FAILURE

None

0x50F1

IFAULT_PL_LINK_RESET_SPINUP_STOP_NOPHYS

None

0x50F2

IFAULT_PL_LINK_RESET_TOTAL_DRIVES_PHYS_SPINUP_NOTSAME

None

0x50F3

IFAULT_PL_LINK_RESET_QUADSPINUP_MAXPHYS_MISMATCH

All

Exceeded the maximum number of phys that


can be granted spinup per quad.

0x50F4

IFAULT_PL_LINK_RESET_TOTALDRIVES_MAXPHYS_SPINUP_MISMATCH

All

Exceeded the maximum number of drives that


can be granted spinup.

0x5100

IFAULT_PL_QUEUE_MGR_FATAL_ERROR

All

Unhandled Queue Manager Error.

0x5101

IFAULT_PL_COMPQ_PARITY

All

Queue Manager detected a Completion


Queue parity error.

0x5102

IFAULT_PL_QUEUE_DMAQ_PARITY

All

Queue Manager detected a DMA Transmission


Queue parity error.

0x5103

IFAULT_PL_QUEUE_DMAQ_OVERFLOWIOP

All

Queue Manager detected a DMA Transmission


Queue Overflow when IOP attempted to add
an entry.

0x5104

IFAULT_PL_QUEUE_DMAQ_OVERFLOWRXFM

All

Queue Manager detected a DMA Transmission


Queue Overflow when RX Frame Manager
attempted to add an entry.

0x5105

IFAULT_PL_QUEUE_IQRAM_PARITY

All

Queue Manager detected an Initiator Queue


RAM parity error when IOP attempted to read
IQ memory.

0x5106

IFAULT_PL_QUEUE_MGR_IQRAM_PARITY

All

Queue Manager detected an Initiator Queue


RAM parity error when Queue Manager
attempted to read IQ memory.

0x5107

IFAULT_PL_QUEUE_RXFMSCHED_PARITY

All

RX Frame Manager detected a parity error.

0x5200

IFAULT_PL_DMA_ENGINE_RAM_PARITY_ERROR

All

DMA Engine Parity Error Detected.

0x5300

IFAULT_PL_TX_FM_ERROR

All

Unhandled TX Frame Manager Error.

0x5400

IFAULT_PL_PHYLINK_TABLE_PARITY_ERROR

All

Phylink Parity Error Detected.

0x5500

IFAULT_PL_HW_CLEANUP_SE_TASK_FILE_BITS

All

Unexpected Task File Error during SATA Engine


Cleanup.

0x5600

IFAULT_PL_ENTRY_NOT_FOUND_GENERIC

All

SMP Phy Control was attempted to be sent to


an unknown expander.

0x5700

IFAULT_PL_PASS_THRU_SEND_REENTRY

All

An overlapping PASS Through request was


attempted.

LSI Corporation Confidential | April 2009

Page 13

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x6000

IFAULT_PL_TASK_MGMT_HW_CLEANUP_FAILURE

All

Unable to clean up hardware or firmware


correctly. (0x6000 ~ 0x61ff are TM specific fault
codes).

0x6001

IFAULT_PL_TASK_MGMT_OUTSTD_IOS_ON_DEV_RST

All

Task Management detected that upon


completion of a Target Reset, firmware still had
a record of I/Os still outstanding.

0x6002

IFAULT_PL_TASK_MGMT_TX_FRAME_NOT_CLEAN

All

Task Management detected that TX Frame


manager was not completely cleaned up.

0x6003

IFAULT_PL_TASK_MGMT_ABORT_LIST_CORRUPTION

All

Task Management detected a corruption of


the TM Abort List.

0x6004

IFAULT_PL_TASK_MGMT_IO_COUNT_CORRUPTION

All

Task Management detected corruption of a


devices outstanding I/O count.

0x6005

IFAULT_PL_TASK_MGMT_INVALID_MID_TM_START

All

Task Management detected a request to start a


TM on an invalid MID.

0x6006

IFAULT_PL_TASK_MGMT_INVALID_MID_ABT_MATCH

All

Task Management detected an invalid MID in


the AbortMatch function.

0x6007

IFAULT_PL_TASK_MGMT_INVALID_MID_ABT_TRANSQ

All

Task Management detected an invalid MID


when cleaning up the DMA Transmission
Queue.

0x6008

IFAULT_PL_TASK_MGMT_INVALID_MID_ABT_MID

All

Task Management detected an invalid MID


being added to the Abort List.

0x6009

IFAULT_PL_TASK_MGMT_INVALID_MID_ABT_TXTRANS

All

Task Management detected an invalid MID in


the TX Transport.

0x600A

IFAULT_PL_TASK_MGMT_INVALID_MID_CLEANUP

All

Task Management detected an invalid MID in


the TM Cleanup state.

0x600B

IFAULT_PL_TASK_MGMT_INVALID_MID_TM_TRAP

All

Task Management detected an invalid MID


during trapping of new I/O starts.

0x600C

IFAULT_PL_TASK_MGMT_INVALID_MID_CMP_ABT_IO

All

Task Management detected an invalid MID


when attempting to complete aborted I/Os.

0x600D

IFAULT_PL_TASK_MGMT_INVALID_MID_ABT_TM

All

Task Management detected an invalid MID


when attempting to abort other Task
Management requests.

0x600E

IFAULT_PL_TASK_MGMT_INVALID_DEVH_TM_START

All

Task Management detected an invalid


DevHandle when starting a Task Management.

0x600F

IFAULT_PL_TASK_MGMT_INVALID_HWDI

All

Task Management detected an invalid


hardware Device Index when cleaning up TX
Frame Manager.

0x6010

IFAULT_PL_TASK_MGMT_INVALID_DEVH

All

Task Management detected an invalid


DevHandle when reading the DevHandle from
the TM Message.

0x6011

IFAULT_PL_TASK_MGMT_INVALID_HWDI_TXFM_CLNUP

All

Task Management detected an invalid


hardware Device Index during TX Frame
Cleanup.

0x6013

IFAULT_PL_INVALID_DEVHANDLE_TXFM_CLEANUP

All

Invalid device handle detected when doing


Transmission Frame Manager cleanup.

0x6014

IFAULT_PL_TASK_MGMT_CRIT_FR_2_NOT_FREED

Debug

TM critical frame not freed.

0x6015

IFAULT_PL_TASK_MGMT_CORRUPTED_SMP_REQUEST_LIST

All

Corrupted SMP request list during TM.

Page 14

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Firmware Fault Codes

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x6016

IFAULT_PL_TASK_MGMT_CRIT_FR_1_NOT_FREED

None

Not used.

0x6100

IFAULT_PL_TASK_MGMT_UNEXPECTED_ABORT

All

Task Management attempt to cleanup I/Os


encountered unexpected MPI Function.
(0x6100 - 0x61ff, 0x61xx where xx is the
function number).

0x620A

IFAULT_PL_SCSI_IO_INVALID_MID

All

Invalid MID detected when starting SCSI I/O.

0x620B

IFAULT_PL_RESTART_SCSI_IO_INVALID_MID

None

Not used.

0x620C

IFAULT_PL_TX_FM_CLEANUP_INVALID_MID

All

Invalid MID detected when cleaning up the


Match or Mismatch Frame Manager.

0x620D

IFAULT_PL_RESTART_SCSI_IO_BAD_IOCOUNT_DEC

None

Not used.

0x620E

IFAULT_PL_PEND_SCSI_IO_BAD_IOCOUNT_DEC

Debug
only

Bad I/O count detected when adding a ScsiIO


on to the devices start pending list.

0x620F

IFAULT_PL_SCSI_IO_CMPLT_BAD_IOCOUNT_DEC

Debug
only

Bad I/O count detected when completing a


ScsiIO.

0x6210

IFAULT_PL_PUSH_INVALID_MID

All

Invalid MID detected when pushing the I/O to


the list.

0x6211

IFAULT_PL_QUEUE_INVALID_MID

All

Invalid MID detected when adding a SCSI I/O


to the tail of a queue.

0x6212

IFAULT_PL_TX_FM_CLEANUP_INVALID_STP_MID

All

Mismatch in the MID and QTAG lookup MID.

0x6301

IFAULT_PL_SCSI_IO_INVALID_DEVHANDLE

All

An invalid DevHandle usage was attempted.

0x6303

IFAULT_PL_PORT_ERR_INVALID_DEVHANDLE

None

Not used.

0x6400

IFAULT_PL_INVALID_HWDI_LINK_LAYER

All

An invalid Hardware Device Index usage was


attempted.

0x6402

IFAULT_PL_INVALID_HWDI_SATA_ENG_ABRT_TAG

All

An invalid Hardware Device Index usage was


attempted.

0x6403

IFAULT_PL_INVALID_HWDI_NON_AUTO_DMA_COMP

All

An invalid Hardware Device Index usage was


attempted.

0x6404

IFAULT_PL_INVALID_HWDI_NON_AUTO_FRAME

Debug
only

An invalid Hardware Device Index usage was


attempted.

0x6405

IFAULT_PL_INVALID_HWDI_ADD_TO_DMA_TRANS_Q

All

An invalid Hardware Device Index usage was


attempted.

0x6406

IFAULT_PL_INVALID_HWDI_FIS_W_ERR_BIT

All

An invalid Hardware Device Index usage was


attempted.

0x6407

IFAULT_PL_INVALID_HWDI_SATA_TAG_INVALID

All

An invalid Hardware Device Index usage was


attempted.

0x6409

IFAULT_PL_INVALID_HWDI_RX_DMA_ERR

All

An invalid Hardware Device Index usage was


attempted.

0x640A

IFAULT_PL_INVALID_HWDI_RX_FM_ERR

None

Not used.

0x640B

IFAULT_PL_INVALID_HWDI_TX_CTX_ERR

All

An invalid Hardware Device Index usage was


attempted.

0x640C

IFAULT_PL_INVALID_HWDI_TX_DMA_ERR

All

An invalid Hardware Device Index usage was


attempted.

0x640D

IFAULT_PL_INVALID_HWDI_RX_CTX_ERR

None

Not used.

LSI Corporation Confidential | April 2009

Page 15

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

0x640E

IFAULT_PL_INVALID_HWDI_TX_FM_ERR

All

An invalid Hardware Device Index usage was


attempted.

0x640F

IFAULT_PL_INVALID_HWDI_ABORT_TX_TRANS

All

An invalid Hardware Device Index usage was


attempted.

0x6410

IFAULT_PL_INVALID_HWDI_NON_PT_WKWD_START

All

An invalid Hardware Device Index usage was


attempted.

0x6411

IFAULT_PL_INVALID_HWDI_PORT_ERR

All

An invalid Hardware Device Index usage was


attempted.

0x6412

IFAULT_PL_INVALID_HWDI_TX_FM_CLEANUP_HW

All

An invalid Hardware Device Index usage was


attempted.

0x6413

IFAULT_PL_INVALID_HWDI_PORT_TXDMA_ERR

All

An invalid Hardware Device Index usage was


attempted.

0x6414

IFAULT_PL_INVALID_HWDI_PORT_ERR_2

All

An invalid Hardware Device Index usage was


attempted.

0x6500

IFAULT_PL_PORT_ERR_INVALID_TXIDENTIFIER

All

An invalid TX Identifier was received from the


Port Layer.

0x6501

IFAULT_PL_PORT_ERR_INVALID_TXIDEN_AND_ERR

All

Invalid port layer error.

0x6600

IFAULT_PL_INVALID_HWDI_TX_CTX_CLEANUP

All

An invalid Hardware Device Index usage was


attempted.

0x6700

IFAULT_PL_CLEARED_RX_CTX_W_O_INTERRUPT

Debug

RX Context cleared without interrupt.

0x6701

IFAULT_PL_CLEAR_RX_CTX_INVALID_TRANS_NUM

Debug

Attempted to clear RX Context on invalid


TransNum detected.

0x6801

IFAULT_PL_INIT_Q_NOT_DISBLD_QUAD_ERR_PL_2

All

Initiator Queue not disabled when quad error


occurs in port layer.

0x6802

IFAULT_PL_INIT_Q_NOT_DISBLD_TM_ABT_TX_FM_1

All

Initiator Queue not disabled when cleaning up


Transmission Frame Manager.

0x6803

IFAULT_PL_INIT_Q_NOT_DISBLD_TM_ABT_TX_FM_2

All

Initiator Queue not disabled when cleaning up


Transmission Frame Manager.

0x7000

IFAULT_PL_UNEXPECTED_SMP_ABORT_BUG

All

Attempt to abort SMP command failed.

0x7001

IFAULT_PL_UNEXPECTED_INIT_FRAME_BUG

All

An unhandled Initiator-mode Frame


corruption was detected.

0x7002

IFAULT_PL_UNEXPECTED_TARG_FRAME_BUG

All

An unhandled Target-mode Frame corruption


was detected.

0x7003

IFAULT_PL_PORT_SATA_HOT_PLUG_BUG

All

An unhandled SATA Hot Plug error was


detected.

0x7004

IFAULT_PL_RX_CTX_WORKAROUND_BUG

All

An unhandled RX Context Workaround error


was detected.

0x7005

IFAULT_PL_NON_DWORD_ALIGNED_QUAD_MEMCPY

All

A non-aligned memcpy was attempted.

0x7006

IFAULT_PL_INVALID_HWDI_TXFM_CLEANUP

All

An invalid Hardware Device Index was


detected during TxFrame cleanup.

0x7008

IFAULT_PL_STARTING_IO_WHEN_IQ_DISABLED

All

Attempt to add entry to Device Start Queue


when it was disabled.

0x7009

IFAULT_PL_HOST_BUF_DMA_UNEXPECTED_LOCAL

None

Not used.

0x700a

IFAULT_PL_HOST_BUF_DMA_UNEXPECTED_MID

All

Invalid MID detected when attempting host


bus DMA.

Page 16

Builds

Description

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Firmware Fault Codes

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x700b

IFAULT_PL_HOST_BUF_DMA_UNEXPECTED_FLAGS

All

Invalid flags on SGE detected when


attempting host bus DMA.

0x700c

IFAULT_PL_HOST_BUF_DMA_UNEXPECTED_ORDER

None

Not used.

0x7100

IFAULT_PL_DEVICE_SIZE_ERR

1078
Debug

Incorrect structure size detected.

0x7101

IFAULT_PL_TARGET_CONTEXT_INFO_SIZE_ERR

1078
Debug

Incorrect structure size detected.

0x7102

IFAULT_PL_DEVICE_DETAILS_SIZE_ERR

None

Not used.

0x7200

IFAULT_PL_SEP_BUFFER_SIZE_ERR

All

Error detected in Enclosure Management.

0x7201

IFAULT_PL_SEP_CMD_QUEUE_ERR

All

Enclosure management message not found in


the enclosure management queue.

0x7202

IFAULT_PL_SEP_CONTROL_BITS_ERROR

All

SCSI message does not have the control bit set.

0x7203

IFAULT_PL_SEP_INVALID_STATE_IN_SEP_DETECTION

All

Invalid state in SEP detection.

0x720A

IFAULT_PL_ENCL_MGMT_SLOT_NUM_ERROR

All

Invalid slot number received during enclosure


management with starting slot mode enabled.

0x720B

IFAULT_PL_ENCL_MGMT_BUS_ID_CONVERT_ERROR

All

SEP message not converted to EnclHandle/Slot


form.

0x7300

IFAULT_PL_PORT_LAYER_ERR

None

Not used.

0x7400

IFAULT_PL_START_SMP_INVALID_DEVHANDLE

Debug

Invalid device handle detected when sending


SMP.

0x7501

IFAULT_PL_SLD_OUT_OF_RESOURCES

All

SLD Error detected.

0x7502

IFAULT_PL_SLD_INVALID_DEV_HANDLE

All

Invalid device handle detected.

0x7503

IFAULT_PL_SLD_INVALID_ENTRY

None

Not used.

0x7504

IFAULT_PL_SLD_CLEAR_AFFILIATION_ERROR

All

Unable to find the device we sent the SMP to.

0x7505

IFAULT_PL_SLD_INVALID_DEVH

All

Invalid device handle detected.

0x7506

IFAULT_PL_SLD_SWAP_ACROSS_QUADS

All

Device swap detected across Quads.

0x7600

IFAULT_PL_INVALID_PHY_TO_PORTNUM

All

Unable to find corresponding port number for


the phy number.

0x7700

IFAULT_PL_RXBUFFER_FAILEDMIDS_NOT_IN_SYNC

Debug

Failed MID detected that had to be completed


before with error reply.

0x7701

IFAULT_PL_RXBUFFER_DEVLOOKUP_FAILED_1

Debug

Unable to find the device in the PHY table.

0x7702

IFAULT_PL_RXBUFFER_NO_FAILEDIOSMISMATCH

RxBuffer
Debug

Mismatch in the number of failed I/Os.

0x7703

IFAULT_PL_RXBUFFER_RXFRAMESCHED_NOT_IN_SYNC

RxBuffer
Debug

Failed MID marked as valid in Rx Frame


Scheduler Message Valid MID Entry register.

0x7704

IFAULT_PL_RXBUFFER_INVALID_HWDI

All

Invalid Hardware Device Index detected.

0x7705

IFAULT_PL_RXBUFFER_INVALID_DEVHANDLE

All

Invalid device handle detected.

0x7706

IFAULT_PL_RXBUFFER_DEVLOOKUP_FAILED_2

Debug

Unable to find the device in the PHY table.

0x7707

IFAULT_PL_RXBUFFER_INVALID_QUAD_1

Debug

Invalid Quad number detected.

0x7708

IFAULT_PL_RXBUFFER_INVALID_QUAD_2

Debug

Invalid Quad number detected.

0x7709

IFAULT_PL_RXBUFFER_INVALID_PROTOCOL

RxBuffer
Debug

Invalid protocol detected.

LSI Corporation Confidential | April 2009

Page 17

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x770A

IFAULT_PL_RXBUFFER_TIMER_EXPIRED

All

Timeout occurred before nonauto firmware


initialization could start.

0x770B

IFAULT_PL_RXBUFFER_INVALID_FRAME_TYPE

All

Invalid frame type detected.

0x770C

IFAULT_PL_RXBUFFER_IO_LIST_CORRUPTION

Debug

Pending I/O list corrupted for the device.

0x770D

IFAULT_PL_RXBUFFER_ABORT_LIST_CORRUPTION

Debug

Abort I/O list corrupted for the device.

0x770E

IFAULT_PL_RXBUFFER_DMA_OVERFLOW_TIMEOUT

All

Timeout occurred before checking rxdma


overrun error.

0x770F

IFAULT_PL_RXBUFFER_TIMER_EXPIRED_RESETTING

All

Timeout occurred before clearing the valid


context in the current transport of the HW.

0x7710

IFAULT_PL_RXBUFFER_INVALID_TARGET_FRAME

All

Invalid frame received in target mode.

0x7711

IFAULT_PL_RXBUFFER_TIME_EXP_RX_FLUSHING

All

Timeout occurred before clearing the valid


context in the current transport of the HW.

0x7800

IFAULT_PL_RX_DMA_ENGINE_ERROR

0x7900

IFAULT_PL_TX_DMA_IDLE_TIMEOUT

All

The Transmission DMA Engine did not return


to the IDLE state in the timeout interval.

0x7901

IFAULT_PL_2ND_OPEN_DATA_STRUCT_CORRUPT

All

Corrupt Second Open Device Tracker data


structure.

0x7902

IFAULT_PL_TXDMA_STALL_WRKARND_INVALID_HWDI

All

Invalid hardware device index detected.

0x7903

IFAULT_PL_TXDMA_STALL_WRKARND_INVALID_DEVH

All

Invalid device handle detected.

0x7A00

IFAULT_PL_TXFM_DMA_IDLE_TIMEOUT

None

Not used.

0x7A01

IFAULT_PL_LINK_CONN_DMA_IDLE_TIMEOUT

None

Not used.

0x7A02

IFAULT_PL_RXFM_DMA_IDLE_TIMEOUT

None

Not used.

0x7A03

IFAULT_PL_INVALID_HWDI_DMA_TQ_DISABLE_ENABLE

All

Invalid HWDI usage detected during HW


cleanup.

0x7A04

IFAULT_PL_DA_SEP_INT_RESET_INVALID_TIMERS

All

Invalid number of SEP devices.

0x7A05

IFAULT_PL_TXDMA_WA_BAD_HWDI_OR_DEVH

None

Not used.

0x7B00

IFAULT_PERTURBED_CREDIT_BREAK_TIMEOUT

All

Perturbed HW credit when issuing BREAK.

Not used.

0x7B01

IFAULT_PERTURBED_CREDIT_CREDIT_FIX_TIMEOUT

All

Waiting for RxDMA to settle failed.

0x7B02

IFAULT_PERTURBED_CREDIT_SATA_IDLE_DONE_TO

None

Not used.

0x7B03

IFAULT_PERTURBED_CREDIT_INVALID_DEVH

All

Invalid device handle usage detected.

0x7B04

IFAULT_PERTURBED_CREDIT_TEST_RXBBCREDIT_4

Debug

Credit mismatch on the Phy which got


disconnected.

0x7B05

IFAULT_PERTURBED_CREDIT_TEST_RXBBCREDIT_4_OTHER_PHY

Debug

Credit mismatch on the Phys which were not


connected.

0x7C00

IFAULT_BAD_CRC_IN_RX_BUFFERS_INV_DEVH

All

Invalid device handle usage detected.

0x7F00

IFAULT_PL_NO_SAS_PLL_LOCK

1078

No SAS PLL Lock detected.

0x7F01

IFAULT_PL_PARAMS_NOT_SET

1078

The PL Parameter Structure is not populated


correctly.

0x8000

IFAULT_IR_SHARED_CONFIG_PAGE

IR Debug

Config Page is shared in recursive manner.

0x8001

IFAULT_IR_NO_FREE_PAGE_BUFFER

IR Debug

Could not allocate free page buffer.

0x8002

IFAULT_IR_PURE_VIRTUAL

IR

An attempt to reference an object that has no


associated memory.

Page 18

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Firmware Fault Codes

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x8003

IFAULT_IR_INVALID_INT_IO

None

Not used.

0x8004

IFAULT_IR_RETARGET

IR

A call was made to a library routine that should


not be used.

0x8005

IFAULT_IR_INVALID_IO_STATE

IR

An internal I/O caused an unknown state to be


processed.

0x8006

IFAULT_IR_START_SCSI_IO

None

Not used.

0x8007

IFAULT_IR_NOT_BOUND

IR

A physical I/O component of a virtual I/O was


completed without a valid parent virtual I/O.

0x8008

IFAULT_IR_NO_IO_BUFFER

IR

Occurs when the internal I/O buffer has not


been released (typically caused by memory
leak).

0x8009

IFAULT_IR_RESYNC_TASK_NO_TIMER

IR

Unable to allocate a timer for resync.

0x800A

IFAULT_IR_RESYNC_INVALID_ENTRY

IR

The probable reason is that all the entries are


full.

0x800B

IFAULT_IR_NO_CRIT_FRAMES_AVAILABLE

IR

IR could not allocate IOP Critical Frame.

0x800C

IFAULT_IR_INVALID_MEMORY_MOVE

IR

Data transfer to/from on-chip memory failed.

0x800D

IFAULT_IR_CONST_VIOLATION

IR

An attempt was made to write a non-writable


config page.

0x800E

IFAULT_IR_NO_NVSRAM

IR

IR could not detect NVSRAM.

0x800F

IFAULT_IR_CRIT_NEW

IR

A guaranteed allocation failed.

0x8010

IFAULT_IR_64BIT_MATH_SUBTRACT_ERROR

IR Debug

64 bit math subtraction error encountered.

0x8011

IFAULT_IR_BAD_NVSRAM

IR

NVSRAM is not functioning in the expected


manner.

0x8012

IFAULT_IR_IO_EXCEEDED_VOL_SIZE

IR Debug

Attempted to perform I/O on an LBA greater


than Virtual Disk size.

0x8013

IFAULT_IR_DEFERRED_ENGINE_NULL

IR Debug

Pointer to deferred I/O engine is NULL.

0x8014

IFAULT_IR_NON_ZERO_IO_COUNT

IR

A task management completed with I/Os still


being reported as outstanding.

0x8015

IFAULT_IR_INVALID_DEVICE_HANDLE

IR

An attempt was made to use an invalid device


handle.

0x8016

IFAULT_IR_RELOCATE_FAILURE

IR

Unable to move a physical device to another


location.

0x8017

IFAULT_IR_BAD_RAID_MAP

IR

A RAID 1 volume was asked to segment an I/O.

0x8018

IFAULT_IR_INVALID_PTR_PHYS_DISK

None

Not used.

0x8019

IFAULT_IR_MAX_VOLUMES

IR

Too many active volumes detected.

0x801A

IFAULT_IR_INVALID_VOLUME

IR

A volume was detected in a slot that should


not have a volume.

0x801B

IFAULT_IR_DEVICE_INVALID

IR

Volume was assigned a bad device


handle/number.

0x801C

IFAULT_IR_REMOVE_CONFIG_PAGE_ERROR

IR

An attempt was made to remove a page that


did not exist.

0x801D

IFAULT_IR_DIVIDE_BY_ZERO_ERROR

IR Debug

Divide by zero error in the overloaded C++


operator.

LSI Corporation Confidential | April 2009

Page 19

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x801E

IFAULT_IR_801E

None

Not used.

0x801F

IFAULT_IR_ERROR_RETRIEVE_EVENT_DATA

IR

A required call to get a config page


unexpectedly failed.

0x8020

IFAULT_IR_DEVICE_CONSTRUCT_FAILURE

IR

C_IR_Device was constructed with a bad SCSI


address.

0x8021

IFAULT_IR_DEVICE_PROTOCOL_INVALID

IR

Unable to determine the protocol of a physical


device.

0x8022

IFAULT_IR_DEVICE_COMPATIBLE_ERROR

IR

Unexpectedly not able to determine if a device


was compatible.

0x8023

IFAULT_IR_8023

None

Not used.

0x8024

IFAULT_IR_QUEUE_IO_COUNT_ERROR

IR

An attempt was made to dequeue an I/O that


does not exist.

0x8025

IFAULT_IR_ABORT_VIRT_IO_ERROR

IR

Attempt to abort a non-existent virtual I/O.

0x8026

IFAULT_IR_LDF_DELETE_PHYS_DISK_ERROR

None

Not used.

0x8027

IFAULT_IR_LDF_DELETE_VIRT_DISK_ERROR

None

Not used.

0x8028

IFAULT_IR_DISK_SET_MEMBER_OF_VOLUME_ERROR

IR

Attempted to associate a physical disk to


multiple volumes.

0x8029

IFAULT_IR_DISK_LOAD_BALANCE_ERROR

IR

Load balancing unable to find a valid column.

0x802A

IFAULT_IR_INVALID_RAID_VOLUME_TYPE

IR

Unhandled attempt to create an undefined


MPI volume type.

0x802B

IFAULT_IR_SEND_EVENT_ERROR

IR

Could not determine what event was


supposed to be sent to host.

0x802C

IFAULT_IR_INIT_SENSE_BUFFER_ERROR

None

Not used.

0x802D

IFAULT_IR_ADD_RESYNCH_ENTRY_ERROR

IR

Unable to add a re-sync entry.

0x802E

IFAULT_IR_RESYNC_MAP_IO_ERROR

IR

Invalid volume pointer was used when


attempting to map a re-sync I/O.

0x802F

IFAULT_IR_NEXT_RESYNC_ENTRY_ERROR

IR

Re-sync entry LBA is not within a legal range.

0x8030

IFAULT_IR_RESYNC_IO_ENGINE_ERROR

IR

Re-sync was attempted with host I/Os


in-progress.

0x8031

IFAULT_IR_TIMER_HANDLER_ERROR

IR

Attempt to schedule a non-existent task.

0x8032

IFAULT_IR_GET_LBA_ERROR

IR

Attempt made to extract an LBA from an


unsupported CDB.

0x8033

IFAULT_IR_START_IO_ERROR

None

Not used.

0x8034

IFAULT_IR_NEW_WJ_ENTRY_ERROR

IR

Free write-journal entry had non-zero length


implying an entry was not processed.

0x8035

IFAULT_IR_NEW_DELETE_ERROR

None

Not used.

0x8036

IFAULT_IR_DEVICE_EVENT_DISCOVERY_ERROR

None

Not used.

0x8037

IFAULT_IR_MAX_INTERNAL_DEVICES_ERROR

IR

Unable to find an unused phys disk slot in the


active configuration.

0x8038

IFAULT_IR_8038

None

Not used.

0x8039

IFAULT_IR_UNKNOWN_RPDP1

IR

Failed to get RPD1 that should exist.

0x803A

IFAULT_IR_803A

None

Not used.

Page 20

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

SAS Firmware Fault Codes

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x803B

IFAULT_IR_803B

None

Not used.

0x803C

IFAULT_IR_LDF_SECTION_READ_WO_HEADER_OPEN

IR

Attempt to read metadata without an open


header.

0x803D

IFAULT_IR_HEAP_CORRUPTION_SIZE_0

IR

Heap entry of size zero (not legal, indicates


heap corruption).

0x803E

IFAULT_IR_LDF_VD_DEV_NUM_INVALID

None

Not used.

0x803F

IFAULT_IR_LDF_PD_REF_PDE_SEARCH

IR

Unable to find PD reference in metadata


structure that should exist.

0x8040

IFAULT_IR_LDF_GUID_VDE_SEARCH

IR

Unable to find a VD GUID in the virtual disk


records.

0x8041

IFAULT_IR_IO_BUFFER_USAGE_ERROR

IR

I/O buffer was reduced while heap allocations


exist.

0x8042

IFAULT_IR_LDF_SECTION_WRITE_WO_HEADER_OPEN

IR

Attempt to write metadata without header


open.

0x8043

IFAULT_IR_CONFIG_PAGE_ERROR

None

Not used.

0x8044

IFAULT_IR_LDF_NO_FREE_VD_ELEMENT

None

Not used.

0x8045

IFAULT_IR_LDF_VD_ELEMENT_BAD_VD_NUM

IR

SCSI address invalid and a VD number could


not be generated.

0x8046

IFAULT_IR_LDF_UPDATE_BUFFER_TOO_SMALL

IR

Could not allocate enough memory to write


metadata to disk.

0x8047

IFAULT_IR_LDF_ILLEGAL_CONFIG_ASSIGMENT

IR

Attempted to copy a configuration with


pending updates.

0x8048

IFAULT_IR_LDF_CONFIGURATION_NOT_FOUND

IR

Attempt to lookup a configuration that doesnt


exist.

0x8049

IFAULT_IR_IO_BUFFER_NEW_FAILURE

IR

I/O buffer was constructed and could not


allocate enough memory.

0x804A

IFAULT_IR_LDF_SECTION_CLOSE_WO_HEADER_OPEN

IR

Attempt to close a header that wasnt open.

0x804B

IFAULT_IR_LDF_SEQUENCE_ROLLOVER

IR

Metadata sequence number changed from


0xfffffff to 0.

0x804C

IFAULT_IR_LDF_PD_REFRESH

None

Not used.

0x804D

IFAULT_IR_LDF_INVALID_CONFIG_NUMBER

IR

Couldnt find an unused configuration number


to assign to the metadata config.

0x804E

IFAULT_IR_LDF_PDREF_TO_PDN_CONVERSION

IR

Conversion from PD ref to PDN was not found.

0x804F

IFAULT_IR_LDF_PDN_TO_PDREF_CONVERSION

IR

Unable to convert from a PDN to a PD ref.

0x8050

IFAULT_IR_LDF_NO_SECTION_BUFFER

None

Not used.

0x8051

IFAULT_IR_LDF_PDE_LOOKUP

None

Not used.

0x8052

IFAULT_IR_LDF_VDE_LOOKUP

None

Not used.

0x8053

IFAULT_IR_LDF_INCORECT_STRUCTURE_SIZE

IR

A metadata structure was defined such that its


size is not consistent with the expected size.

0x8054

IFAULT_IR_SATA_NO_48BIT_LBA_SUPPORT

None

Not used.

0x8055

IFAULT_IR_DUPLICATE_PD_REFERENCE_FOUND

IR

Found duplicate Physical Disk reference.

0x8056

IFAULT_IR_VD_NOT_FOUND

IR

Could not find Virtual Disk referenced in


Config Page.

LSI Corporation Confidential | April 2009

Page 21

SAS Firmware Fault Codes

SAS Error Codes System Engineering Note

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0x8057

IFAULT_IR_VD_ELM_NOT_FOUND

IR

Could not find element in Virtual Disk.

0x8058

IFAULT_IR_VD_ELM_NOT_FOUND_CONST

IR

Could not find element in Virtual Disk.

0x8059

IFAULT_IR_PD_ELM_NOT_FOUND

IR

Could not find element in Physical Disk.

0x805A

IFAULT_IR_PD_ELM_NOT_FOUND_CONST

IR

Could not find element in Physical Disk.

0x805B

IFAULT_IR_VD_ELM_LOCALITY_EMPTY

IR

Could not compute location of RAID Physical


Disk from Config Page.

0x805C

IFAULT_IR_SET_INVALID_DEVICE_HANDLE

IR

Could not get valid Device Handle.

0x805D

IFAULT_IR_INVALID_SCSI_MAP

IR Debug

IR Device for which SCSI Map is to be obtained


not valid.

0x805E

IFAULT_IR_LDF_HEADER_OPEN_READ_ONLY

IR

LDF Header flag is marked open read write.

0x805F

IFAULT_IR_INVALID_CDB_LENGTH

IR

Invalid CDB length in SCSI I/O Request.

0x8060

IFAULT_IR_FAILED_TO_MODIFY_DEV_MISSING_TO

None

Not used.

0x8061

IFAULT_IR_TASK_STACK_OVERFLOW

IR

Stack overflow detected in IR Task Scheduler.

0x8062

IFAULT_IR_LDF_NO_UPDATES_COMPLETED

IR

No update was completed on any disk.

0x8063

IFAULT_IR_INVALID_METADATA_SIZE

IR

Invalid metadata size detected.

0x8064

IFAULT_IR_NON_IR_DISK_AT_VOL_ID

IR

Non IR device is overlapping a Virtual Volume


ID.

0x8065

IFAULT_IR_NO_VALID_PATHS_IN_PD_LDF

None

Not used.

0x8066

IFAULT_IR_ACTIVE_PATH_NOT_IN_RPD0

IR Debug

The failing path is not pointed by


RaidPhysDisk0.

0x8067

IFAULT_IR_SEND_EVENT_ERROR_1

IR Debug

Invalid Reason Code in the Event Reply to the


host.

0x8068

IFAULT_IR_SEND_EVENT_ERROR_2

IR Debug

Invalid Reason Code in the Event Reply to the


host.

0x8069

IFAULT_IR_SEND_EVENT_ERROR_3

IR Debug

Invalid Reason Code in the Event Reply to the


host.

0x806A

IFAULT_IR_ACTIVE_PATH_INDEX_INVALID

IR Debug

Invalid active path index.

0x806B

IFAULT_IR_INACTIVE_PATH_INDEX_INVALID

None

Not used.

0x806C

IFAULT_IR_FAIL_MANPG4_WRITE

IR Debug

Failed to update MFG Page3.

0xC000

IFAULT_TARG_UNDEFINED_FAULT

Target

Fault in Target Mode.

0xC001

IFAULT_TARG_NO_MSG_FRAMES_ERR_RSP

Target

Could not allocate message frame.

0xC002

IFAULT_TARG_UNUSED

None

Not used.

0xC003

IFAULT_TARG_TQ_PENDING_NOT_VALID

Target

Target Queue pending not valid.

0xC004

IFAULT_TARG_NON_AUTO_CMPLT_ERR_LCL_MID

Target

Local MID mismatch with Target Port Transfer


Tag.

0xC005

IFAULT_TARG_MISMATCH_MID_IOINDEX_ERROR

Target

Mismatch detected between MID and I/O


Index.

0xC006

IFAULT_TARG_BAD_MID_ON_COMPLETION_ERROR

None

Not used.

0xC007

IFAULT_TARG_UNUSED1

None

Not used.

0xC008

IFAULT_TARG_NO_MSG_FRAMES_STATUS_SEND

None

Not used.

0xC009

IFAULT_TARG_NON_AUTO_CMPLT_ERR_SYS_MID

Target

Non auto completion MID error detected.

Page 22

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

MPI Reply Message Codes for SAS

Table 1: Fault Values and Descriptions (Continued)


Value

Fault

Builds

Description

0xC00A

IFAULT_TARG_NON_AUTO_CMPLT_ERROR

Target

Local MID mismatch with Target Port Transfer


Tag.

0xC00B

IFAULT_TARG_MISSING_CMD_BUFFS

Target

No Command Buffer received.

0xC00C

IFAULT_TARG_COMPLETE_UNKNOWN_STATUS

Target

Unknown status for Status Send AutoStatus.

0xC00D

IFAULT_TARG_NO_MSG_FRAMES_CMD_BUFF_POST_ERR_RPLY

Target

Could not get Message Frame in


CmdBuffPostErrReply function.

0xC00E

IFAULT_TARG_UNPOSTED_INFO_MISMATCH

Target

Mismatch detected in Command Buffers


unposted info.

0xC00F

IFAULT_TARG_NO_FRAMES_FOR_RESET_EVENT

Target

Could not send Reset Event.

0xC100

IFAULT_TARG_INVALID_DEV_HANDLE

None

Not used.

0xC101

IFAULT_TARG_INVALID_DEV_HANDLE_TARGET_ASSIST

None

Not used.

0xC102

IFAULT_TARG_INVALID_DEV_HANDLE_TARGET_STATUS_SEND

None

Not used.

0xC103

IFAULT_TARG_UNEXPECTED_STATUS_SEND

Target

Attempting to send status even when it was


already done.

0xC200

IFAULT_TARG_MUL_INIT_INVALID_ADD_INITIATOR

Target

Attempting to add initiator in multiinitiator


setup.

0xC201

IFAULT_TARG_MUL_INIT_INVALID_NON_AUTO_HANDLE

Target

Could not find device handle in


Non-AutoDmaCompletion function.

0xCAFE

IFAULT_IOP_HOST_INTENTIONAL_FAULT_SPECIAL_VALUE

All

Allow the host to intentionally fault the IOP by


writing a special value to the doorbell register.

0xFFFF

IFAULT_PL_ADD_TO_DMA_TXR_QUEUE_FAIL

All

Unable to add an entry to the DMA


transmission queue.

6.0 MPI Reply Message Codes


for SAS

Every MPI message has a Request Message and a Reply Message, which are
documented in the Fusion-MPT Message Passing Interface Specification, v1.5.3. The 32-bit
IOCLogInfo field in the Reply message is used to relay information back to the host. The
information can be error codes when an error occurs, or just information about the
message.
The IOCLogInfo field of the Reply Message has the following subfields:

LSI Corporation Confidential | April 2009

[31:28]

MPI_IOCLOGINFO_TYPE_SAS (3)

[27:24]

IOC_LOGINFO_ORIGINATOR: 0 = IOP, 1 = PL, 2 = IR

[23:16]

LOGINFO_CODE

[15:0]

LOGINFO_CODE Specific

Page 23

MPI Reply Message Codes for SAS

SAS Error Codes System Engineering Note

The following table lists IOCLogInfo codes for IOC_LOGINFO_ORIGINATOR = 0 (IOP


code segment). The message code names are generally self-explanatory. Additional
explanation is provided for some of the codes.
Table 2: MPI IOCLogInfo Codes for IOP Code Segment
Bits [23:0]

Message Code

Explanation

0x00010000

IOP_LOGINFO_CODE_INVALID_SAS_ADDRESS

Invalid SAS Address detected in Manufacturing Page 5.

0x00020000

IOP_LOGINFO_CODE_NOT_USED2

Not used.

0x00030000

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE

Not used.

0x00030100

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_RT

Route table entry not found.

0x00030200

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PN

Invalid page number.

0x00030300

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_FORM

Invalid FORM.

0x00030400

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PT

Invalid page type.

0x00030500

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DNM

Device not mapped.

0x00030600

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_PERSIST

Persistent page not found.

0x00030700

IOP_LOGINFO_CODE_CONFIG_INVALID_PAGE_DEFAULT

Default page not found.

0x0003E000

IOP_LOGINFO_CODE_FWUPLOAD_NO_FLASH_AVAILABLE

Tried to upload from flash, but there is none.

0x0003E001

IOP_LOGINFO_CODE_FWUPLOAD_UNKNOWN_IMAGE_TYPE

ImageType field contents were invalid.

0x0003E002

IOP_LOGINFO_CODE_FWUPLOAD_WRONG_IMAGE_SIZE

ImageSize field in TCSGE was bad/offset in MfgPg 4 was


wrong.

0x0003E003

IOP_LOGINFO_CODE_FWUPLOAD_ENTIRE_FLASH_UPLOAD_FAILED

Error occurred while attempting to upload the entire flash.

0x0003E004

IOP_LOGINFO_CODE_FWUPLOAD_REGION_UPLOAD_FAILED

Error occurred while attempting to upload single flash


region.

0x0003E005

IOP_LOGINFO_CODE_FWUPLOAD_DMA_FAILURE

Problem occurred while DMAing FW to host memory.

0x00040000

IOP_LOGINFO_CODE_DIAG_MSG_ERROR

Diagnostic Buffer error detected.

0x00050000

IOP_LOGINFO_CODE_TASK_TERMINATED

I/O has been terminated as a result of Task Management.


This Task Management can also be generated internally by
the firmware.

0x00060001

IOP_LOGINFO_CODE_ENCL_MGMT_READ_ACTION_ERROR

Read action not supported for SEP message.

0x00060002

IOP_LOGINFO_CODE_ENCL_MGMT_INVALID_BUS_ID_ERROR

Invalid Bus ID in SEP message.

0x00070001

IOP_LOGINFO_CODE_TARGET_ASSIST_TERMINATED

Target Assist is terminated, e.g., due to bus reset occurring


just as this command came in.

0x00070002

IOP_LOGINFO_CODE_TARGET_STATUS_SEND_TERMINATED

Target Status Send is terminated, e.g., due to bus reset


occurring just as this command came in.

0x00070003

IOP_LOGINFO_CODE_TARGET_MODE_ABORT_ALL_IO

Target Mode Abort for all I/Os due to Task Management


command from host.

0x00070004

IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO

Target Mode Abort for specific I/Os due to Task


Management command from host.

0x00070005

IOP_LOGINFO_CODE_TARGET_MODE_ABORT_EXACT_IO_REQ

Target Mode Abort for Target Assist or Target Status Send


due to Task Management command from host.

0x00080000

IOP_LOGINFO_CODE_LOG_TIMESTAMP_EVENT

Page 24

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

MPI Reply Message Codes for SAS

The following table lists IOCLogInfo codes for IOC_LOGINFO_ORIGINATOR = 1 (PL code
segment). The message code names are generally self-explanatory. Additional
explanation is provided for most of the codes.
Table 3: MPI IOCLogInfo Codes for PL Code Segment
Bits [23:0]

Message Code

Explanation

0x00010000

PL_LOGINFO_CODE_OPEN_FAILURE

Failed to open connection to device. Low order byte


contains the reason code and could be one of the following:
0x01 No destination timeout
0x02 Pathway blocked
0x03 Reserved Continue 0
0x04 Reserved Continue 1
0x05 Reserved Initialize 0
0x06 Reserved Initialize 1
0x07 Reserved Stop 0
0x08 Reserved Stop 1
0x09 Retry
0x0A Break
0x0B Unused
0x0C Timeout expired
0x0D Unused
0x0E Device Table access failed
0x0F 0x10: Unused
0x11 Bad destination
0x12 Rate not supported
0x13 Protocol not supported
0x14 Reserved Abandon 0
0x15 Reserved Abandon 1
0x16 Reserved Abandon 2
0x17 Reserved Abandon 3
0x18 STP Resource busy
0x19 Wrong destination
0x1B Pathway blocked, retry timeout
0x1C Arbitration Wait Timer maxed

0x00020000

PL_LOGINFO_CODE_INVALID_SGL

Not used.

0x00030000

PL_LOGINFO_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH

Not used.

0x00040000

PL_LOGINFO_CODE_FRAME_XFER_ERROR

Error detected during frame transfer. See subcode for more


detail.

0x00050000

PL_LOGINFO_CODE_TX_FM_CONNECTED_LOW

Not used.

0x00060000

PL_LOGINFO_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET

Error detected on SATA non-NCQ drive automated read


writes. Failing the command to host, do some hardware
cleanup: issue target reset using internal task management.
Note: Since this is a non-NCQ drive, hardware should only
be using tag 0 for the device, and I/O to the device should
be single-threaded.

0x00070000

PL_LOGINFO_CODE_SATA_READ_LOG_RECEIVE_DATA_ERR

Not used.

LSI Corporation Confidential | April 2009

Page 25

MPI Reply Message Codes for SAS

SAS Error Codes System Engineering Note

Table 3: MPI IOCLogInfo Codes for PL Code Segment (Continued)


Bits [23:0]

Message Code

Explanation

0x00080000

PL_LOGINFO_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR

An error occurred on a SATA NCQ drive; Finishing all of the


outstanding I/Os to the device, the drive will abort the
outstanding I/Os.

0x00090000

PL_LOGINFO_CODE_SATA_ERR_IN_RCV_SET_DEV_BIT_FIS

Not used.

0x000A0000 PL_LOGINFO_CODE_RX_FM_INVALID_MESSAGE
0x000B0000

Not used.

PL_LOGINFO_CODE_RX_CTX_MESSAGE_VALID_ERROR

Not used.

0x000C0000 PL_LOGINFO_CODE_RX_FM_CURRENT_FRAME_ERROR

Not used.

0x000D0000 PL_LOGINFO_CODE_SATA_LINK_DOWN

Not used.

0x000E0000

Not used.

PL_LOGINFO_CODE_DISCOVERY_SATA_INIT_W_IOS

0x000F0000

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE

Not used.

0x000F0001

PL_LOGINFO_CODE_CONFIG_PL_NOT_INITIALIZED

Error reading the Config Page: it is not initialized.

0x000F0100

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_PT

Invalid page type.

0x000F0200

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NUM_PHYS

Invalid number of phys.

0x000F0300

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NOT_IMP

Case not handled.

0x000F0400

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NO_DEV

No device found.

0x000F0500

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_FORM

Invalid FORM.

0x000F0600

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_PHY

Invalid Phy.

0x000F0700

PL_LOGINFO_CODE_CONFIG_INVALID_PAGE_NO_OWNER

No owner found.

0x00100000

PL_LOGINFO_CODE_DSCVRY_SATA_INIT_TIMEOUT

Not used.

0x00110000

PL_LOGINFO_CODE_RESET

Internal Task Management issued to reset the device. See


subcode for more detail.

0x00120000

PL_LOGINFO_CODE_ABORT

Abort the command. See subcode for more detail.

0x00130000

PL_LOGINFO_CODE_IO_NOT_YET_EXECUTED

I/O Aborted (host issued task management) before sent to


target.

0x00140000

PL_LOGINFO_CODE_IO_EXECUTED

I/O Aborted (host issued task management) after sent to


target.

0x00150000

PL_LOGINFO_CODE_PERS_RESV_OUT_NOT_AFFIL_OWNER

Finished persistent reserve out command, but there is


already an outstanding affiliation.

0x00160000

PL_LOGINFO_CODE_OPEN_TXDMA_ABORT

0x00170000

PL_LOGINFO_CODE_IO_DEVICE_MISSING_DELAY_RETRY

Device is missing and device missing delay timer option is


enabled. When the timer starts, an internal task
management is sent to clean up the pending I/Os, the I/Os
are returned with this log info, and the host should retry
these I/Os. This log info is also sent when the I/O reply timer
expires.

0x00180000

PL_LOGINFO_CODE_IO_CANCELLED_DUE_TO_R_ERR

I/O cancelled due to CRC error.

0x00181000

PL_LOGINFO_CODE_IO_CANCELLED_DUE_TO_CRC_ERR

I/O cancelled due to CRC error.

0x00190000

PL_LOGINFO_CODE_IO_CANCELLED_DUE_TO_BREAK

I/O cancelled due to link broken.

0x00000100

PL_LOGINFO_SUB_CODE_OPEN_FAILURE

Failed to open connection for reasons other than the ones


mentioned by the subcodes below.

0x00000101

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_NO_DEST_TIMEOUT

Failed to open connection with error Open Reject (No


Destination). Retried for 50 milliseconds.

Page 26

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

MPI Reply Message Codes for SAS

Table 3: MPI IOCLogInfo Codes for PL Code Segment (Continued)


Bits [23:0]

Message Code

Explanation

0x00000102

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_SATA_NEG_RATE_2HI

Failed to open connection due to negotiated rate on link is


higher than the SATA device. Retried for 50 milliseconds.

0x00000103

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_RATE_NOT_SUPPORTED

Failed to open connection due to rate not supported.


Retried for 50 milliseconds.

0x00000104

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_BREAK_RECEIVED

Failed to open connection due to break received. Retried for


50 milliseconds.

0x00000114

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ZONE_VIOLATION

Failed to open connection due to Zone violation, used in


SAS2 firmware.
Failed to open connection used in SAS1 firmware.

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON0
0x00000115

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON1

Failed to open connection. yet to assign a specific name and


currently it is reserved.

0x00000116

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON2

Failed to open connection. yet to assign a specific name and


currently it is reserved.

0x00000117

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ABANDON3

Failed to open connection. yet to assign a specific name and


currently it is reserved.

0x0000011A PL_LOGINFO_SUB_CODE_OPEN_FAILURE_ORR_TIMEOUT

Failed to open connection with error.


Open Reject Retry, and retry count exceeded. Retried for
1.25 seconds.

0x0000011B

Failed to open connection, retry count for pathway blocked


exceeded. Retried for 50 milliseconds.

PL_LOGINFO_SUB_CODE_OPEN_FAILURE_PATHWAY_BLOCKED

0x0000011C PL_LOGINFO_SUB_CODE_OPEN_FAILURE_AWT_MAXED

Failed to open connection, arbitration wait timer exceeded.


Retried for 50 milliseconds.

0x00000120

PL_LOGINFO_SUB_CODE_TARGET_BUS_RESET

Target mode aborting I/O after receiving hard reset. This can
also be due to open fail no destination or open reject retry
and retry count has been exceeded (1.25 seconds).

0x00000130

PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER

Target mode aborts the I/O due to bad DMA detected in


receive operation (for example: Invalid SGL).

0x00000131

PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER_1

Target mode aborts the I/O due to frame transfer error or


wrong relative offset detected.

0x00000132

PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER_2

Target mode aborts the I/O due to bad DMA detected in


send operation (for example: Invalid SGL).

0x00000133

PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER_3

Target mode aborts the I/O after receiving frame with


wrong frame length, wrong relative offset, or zero write data
length in XFER_RDY.

0x00000134

PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER_4

Target mode detected open connection and received


BREAK. Aborting the I/O.

0x00000135

PL_LOGINFO_SUB_CODE_TRANSPORT_LAYER_5

Target mode aborted the I/O due to either of the following:


Received XFER_RDY or response frame before the data
transfer has completed.
Retry count has been exceeded.

0x00000140

PL_LOGINFO_SUB_CODE_PORT_LAYER

Error detected in target mode I/O (non-data transfer).


Aborting the I/O.

0x00000141

PL_LOGINFO_SUB_CODE_PORT_LAYER_1

Error detected in target mode data transfer I/O. Aborting


the I/O.

0x00000142

PL_LOGINFO_SUB_CODE_PORT_LAYER_2

Error detected in transfer ready or response frame. Aborting


the I/O.

LSI Corporation Confidential | April 2009

Page 27

MPI Reply Message Codes for SAS

SAS Error Codes System Engineering Note

Table 3: MPI IOCLogInfo Codes for PL Code Segment (Continued)


Bits [23:0]

Message Code

Explanation

0x00000143

PL_LOGINFO_SUB_CODE_PORT_LAYER_3

Target mode open failure due to no destination, rate not


supported, or break received. Aborting the I/O.

0x00000200

PL_LOGINFO_SUB_CODE_INVALID_SGL

Aborting the command due to invalid SGL detected. This


may be caused by mismatch between amount of data
moved and length requested.

0x00000300

PL_LOGINFO_SUB_CODE_WRONG_REL_OFF_OR_FRAME_LENGTH

Firmware detected unexpected relative offset or wrong


frame length. Aborting the command.

0x00000400

PL_LOGINFO_SUB_CODE_FRAME_XFER_ERROR

Frame transfer error occurred on data frame. This condition


occurs if:
Connected becomes inactive during frame transmission.
NAK is received for a frame transmission.
ACK is not received before Connected goes inactive.
XRDY received to transmit DMA and the command is
queued.
The I/O is then aborted if it is not already in the abort list
with an internal task management. This log info is then sent
to the host.

0x00000500

PL_LOGINFO_SUB_CODE_TX_FM_CONNECTED_LOW

Firmware tries to send query task to determine if the target


actually got the command frame. This may happen if an
open connection from host does not receive ACK/NAK,
possibly due to BREAK received. Upon completion of the
task, the I/O will be aborted if it was not found or will be
permitted to continue if it was found on the target.

0x00000600

PL_LOGINFO_SUB_CODE_SATA_NON_NCQ_RW_ERR_BIT_SET

Not used.

0x00000700

PL_LOGINFO_SUB_CODE_SATA_READ_LOG_RECEIVE_DATA_ERR

SATA Read Log Ext command failed. Following are the


possible causes:
PIO Setup FIS received with SATA EndStatus bit 0 is set
(0x01).
Device to Host register FIS Status field bits 5 and 0 are set
(0x21).
Target will be reset.

0x00000800

PL_LOGINFO_SUB_CODE_SATA_NCQ_FAIL_ALL_CMDS_AFTR_ERR

Not used.

0x00000900

PL_LOGINFO_SUB_CODE_SATA_ERR_IN_RCV_SET_DEV_BIT_FIS

SATA Read Log Ext command arrived in an invalid frame


type, not Device to Host Set Device Bits FIS. Target will be
reset.

0x00000A00 PL_LOGINFO_SUB_CODE_RX_FM_INVALID_MESSAGE

XFER_RDY or RESPONSE received and the Rx Hardware


indicates the tag / MID is not valid. Target will be reset.

0x00000B00

PL_LOGINFO_SUB_CODE_RX_CTX_MESSAGE_VALID_ERROR

DATA frame was received with invalid tag/MID. The SAS


Specification says that the frame shall be discarded, and
firmware aborts the command with that tag. Since firmware
does not recognize the tag and which LUN it is for, the
target will be reset.

0x00000B01

PL_LOGINFO_SUB_CODE_RX_CTX_MESSAGE_INVALID_ERROR

I/O aborted since the valid frame is received and the


corresponding TAG is not validated.

0x00000C00 PL_LOGINFO_SUB_CODE_RX_FM_CURRENT_FRAME_ERROR

Page 28

This can happen if the target sends a Response or XFER_RDY


frame too early, while the data transfer is still in progress. It
can also happen in the ACK/NAK timeout case. Firmware will
reset the device.

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

MPI Reply Message Codes for SAS

Table 3: MPI IOCLogInfo Codes for PL Code Segment (Continued)


Bits [23:0]

Message Code

Explanation

0x00000D00 PL_LOGINFO_SUB_CODE_SATA_LINK_DOWN

Resetting target because SATA link went down.

0x00000E00

PL_LOGINFO_SUB_CODE_DISCOVERY_SATA_INIT_W_IOS

SATA Init aborted outstanding I/Os to the device. This device


may have changed or may have failed SATA Init previously.
Device will be reset.

0x00000E01

PL_LOGINFO_SUB_CODE_DISCOVERY_REMOTE_SEP_RESET

Remote SEP needs to be reset.

0x00000F00

PL_LOGINFO_SUB_CODE_SECOND_OPEN

Not used.

0x00001000

PL_LOGINFO_SUB_CODE_DSCVRY_SATA_INIT_TIMEOUT

Device failed SATA Init command. Aside from device failure,


this can also be due to the link going down during SATA Init.
Internal Task Management will then reset the link and retry
SATA Init.

0x00002000

PL_LOGINFO_SUB_CODE_BREAK_ON_SATA_CONNECTION

Not used.

0x00003000

PL_LOGINFO_SUB_CODE_BREAK_ON_STUCK_LINK

FW sends an internal task management reset to the link, if


connection is already established when the link is stuck.

0x00004000

PL_LOGINFO_SUB_CODE_BREAK_ON_STUCK_LINK_AIP

FW sends an internal task management reset to the link, if


connection has not been established.

0x00005000

PL_LOGINFO_SUB_CODE_BREAK_ON_INCOMPLETE_BREAK_RCVD

0x00006000

PL_LOGINFO_SUB_CODE_BREAK_ON_STUCK_TX_DMA

I/O aborted since this transport has been stalled for 2.5
seconds.

0x00007000

PL_LOGINFO_SUB_CODE_INVALID_SATA_TAG_ERROR

An FIS that contained a tag that did not correspond to one


of the devices outstanding tags.

0x00200000

PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_FAILURE

Cannot get SMP frame.

0x00200010

PL_LOGINFO_CODE_ENCL_MGMT_SMP_READ_ERROR

Error occurred on SMP Read.

0x00200020

PL_LOGINFO_CODE_ENCL_MGMT_SMP_WRITE_ERROR

Error occurred on SMP Write.

0x00200040

PL_LOGINFO_CODE_ENCL_MGMT_NOT_SUPPORTED_ON_ENCL

Enclosure Management services not available for this


WWID.

0x00200050

PL_LOGINFO_CODE_ENCL_MGMT_ADDR_MODE_NOT_SUPPORTED Address Mode not supported.

0x00200060

PL_LOGINFO_CODE_ENCL_MGMT_BAD_SLOT_NUM

Invalid slot number in SEP Message.

0x00200070

PL_LOGINFO_CODE_ENCL_MGMT_SGPIO_NOT_PRESENT

SGPIO not present/enabled.

0x00200080

PL_LOGINFO_CODE_ENCL_MGMT_GPIO_NOT_CONFIGURED

GPIO not configured.

0x00200090

PL_LOGINFO_CODE_ENCL_MGMT_GPIO_FRAME_ERROR

GPIO cannot allocate a frame.

0x002000A0 PL_LOGINFO_CODE_ENCL_MGMT_GPIO_CONFIG_PAGE_ERROR

GPIO failed config page request.

0x002000B0

Cannot get frame for SES command.

PL_LOGINFO_CODE_ENCL_MGMT_SES_FRAME_ALLOC_ERROR

0x002000C0 PL_LOGINFO_CODE_ENCL_MGMT_SES_IO_ERROR

I/O execution error.

0x002000D0 PL_LOGINFO_CODE_ENCL_MGMT_SES_RETRIES_EXHAUSTED

SEP I/O retries exhausted.

0x002000E0

PL_LOGINFO_CODE_ENCL_MGMT_SMP_FRAME_ALLOC_ERROR

Cannot get frame for SMP command.

0x00200100

PL_LOGINFO_DA_SEP_NOT_PRESENT

SEP not present when message was received.

0x00200101

PL_LOGINFO_DA_SEP_SINGLE_THREAD_ERROR

Can only accept one message at a time.

0x00200102

PL_LOGINFO_DA_SEP_ISTWI_INTR_IN_IDLE_STATE

ISTWI interrupt received while in IDLE state.

0x00200103

PL_LOGINFO_DA_SEP_RECEIVED_NACK_FROM_SLAVE

SEP NACKd; it is busy.

0x00200104

PL_LOGINFO_DA_SEP_DID_NOT_RECEIVE_ACK

SEP did not receive. ACK (Last Rcvd Bit = 1).

0x00200105

PL_LOGINFO_DA_SEP_BAD_STATUS_HDR_CHKSUM

SEP stopped or sent bad chksum in Hdr.

LSI Corporation Confidential | April 2009

Page 29

MPI Reply Message Codes for SAS

SAS Error Codes System Engineering Note

Table 3: MPI IOCLogInfo Codes for PL Code Segment (Continued)


Bits [23:0]

Message Code

Explanation

0x00200106

PL_LOGINFO_DA_SEP_STOP_ON_DATA

SEP stopped while transferring data.

0x00200107

PL_LOGINFO_DA_SEP_STOP_ON_SENSE_DATA

SEP stopped while transferring sense data.

0x00200108

PL_LOGINFO_DA_SEP_UNSUPPORTED_SCSI_STATUS_1

SEP returned unknown SCSI status.

0x00200109

PL_LOGINFO_DA_SEP_UNSUPPORTED_SCSI_STATUS_2

SEP returned unknown SCSI status.

0x00200110

PL_LOGINFO_DA_MUX_DID_NOT_ACCEPT_PORT_SETUP

Mux didn't send an Ack (Last Rcvd Bit = 1) since didn't


accept port activated.

0x00200111

PL_LOGINFO_DA_SEP_DID_NOT_SEND_ACK

SEP did not send an Ack.

0x0020010A PL_LOGINFO_DA_SEP_CHKSUM_ERROR_AFTER_STOP

SEP returned bad chksum after STOP.

0x0020010B

SEP returned bad chksum after STOP while getting data.

PL_LOGINFO_DA_SEP_CHKSUM_ERROR_AFTER_STOP_GETDATA

0x0020010C PL_LOGINFO_DA_SEP_UNSUPPORTED_COMMAND

SEP does not support CDB opcode f/w location 1.

0x0020010D PL_LOGINFO_DA_SEP_UNSUPPORTED_COMMAND_2

SEP does not support CDB opcode f/w location 2.

0x0020010E

PL_LOGINFO_DA_SEP_UNSUPPORTED_COMMAND_3

SEP does not support CDB opcode f/w location 3.

0x0020010F

PL_LOGINFO_DA_MUX_DID_NOT_SEND_ACK

Mux didn't send an Ack (Last Rcvd Bit = 1).

The following table lists IOCLogInfo codes for IOC_LOGINFO_ORIGINATOR = 2 (IR code
segment).
Table 4: MPI IOCLogInfo Codes for IR Code Segment
Bits [23:0]
0x00010000

Message Code
IR_LOGINFO_RAID_ACTION_ERROR

Explanation

0x00020000

IR_LOGINFO_CODE_UNUSED2

0x00010001

IR_LOGINFO_VOLUME_CREATE_INVALID_LENGTH

Amount of information passed down for Create


Volume is too large.

0x00010002

IR_LOGINFO_VOLUME_CREATE_DUPLICATE

Creation of duplicate volume attempted (Bus/Target


ID checked).

0x00010003

IR_LOGINFO_VOLUME_CREATE_NO_SLOTS

Creation failed due to maximum number of supported


volumes exceeded.

0x00010004

IR_LOGINFO_VOLUME_CREATE_DMA_ERROR

Creation failed due to DMA error in trying to read from


host.

0x00010005

IR_LOGINFO_VOLUME_CREATE_INVALID_VOLUME_TYPE

Creation failed due to invalid volume type passed


down.

0x00010006

IR_LOGINFO_VOLUME_MFG_PAGE4_ERROR

Creation failed due to error reading MFG Page 4.

0x00010007

IR_LOGINFO_VOLUME_INTERNAL_CONFIG_STRUCTURE_ERROR

Creation failed when trying to create internal


structures.

0x00010010

IR_LOGINFO_VOLUME_ACTIVATING_AN_ACTIVE_VOLUME

Activation failed due to trying to activate an already


active volume.

0x00010011

IR_LOGINFO_VOLUME_ACTIVATING_INVALID_VOLUME_TYPE

Activation failed due to trying to active unsupported


volume type.

0x00010012

IR_LOGINFO_VOLUME_ACTIVATING_TOO_MANY_VOLUMES

Activation failed due to trying to active too many


volumes.

0x00010013

IR_LOGINFO_VOLUME_ACTIVATING_VOLUME_ID_IN_USE

Activation failed due to Volume ID in use already.

Page 30

LSI Corporation Confidential | April 2009

SAS Error Codes System Engineering Note

MPI Reply Message Codes for SAS

Table 4: MPI IOCLogInfo Codes for IR Code Segment (Continued)


Bits [23:0]

Message Code

Explanation

0x00010014

IR_LOGINFO_VOLUME_ACTIVATE_VOLUME_FAILED

Activation failed call to activate Volume returned


failure.

0x00010015

IR_LOGINFO_VOLUME_ACTIVATING_IMPORT_VOLUME_FAILED

Activation failed trying to import the volume.

0x00010016

IR_LOGINFO_VOLUME_ACTIVATING_TOO_MANY_PHYS_DISKS

Activation failed, too many phys disks.

0x00010020

IR_LOGINFO_PHYSDISK_CREATE_TOO_MANY_DISKS

Phys Disk failed, too many phys disks.

0x00010021

IR_LOGINFO_PHYSDISK_CREATE_INVALID_LENGTH

Amount of information passed down for Create Phys


Disk is too large.

0x00010022

IR_LOGINFO_PHYSDISK_CREATE_DMA_ERROR

Creation failed due to DMA error in trying to read from


host.

0x00010023

IR_LOGINFO_PHYSDISK_CREATE_BUS_TID_INVALID

Creation failed due to invalid Bus TargetID passed


down.

0x00010024

IR_LOGINFO_PHYSDISK_CREATE_CONFIG_PAGE_ERROR

Creation failed due to error in creating RAID Phys Disk


Config Page.

0x00010025

IR_LOGINFO_PHYSDISK_CREATE_DUAL_PORT_ERROR

Creation failed due to error in creating dual port.

0x00010026

IR_LOGINFO_PHYSDISK_DUAL_PORT_FAILOVER

Both paths are unavailable for the Dual Pathing


device.

0x00010030

IR_LOGINFO_COMPAT_ERROR_RAID_DISABLED

Compatibility Error: IR Disabled.

0x00010031

IR_LOGINFO_COMPAT_ERROR_INQUIRY_FAILED

Compatibility Error: Inquiry command failed.

0x00010032

IR_LOGINFO_COMPAT_ERROR_NOT_DIRECT_ACCESS

Compatibility Error: Device not direct access device.

0x00010033

IR_LOGINFO_COMPAT_ERROR_REMOVABLE_FOUND

Compatibility Error: Removable device found.

0x00010034

IR_LOGINFO_COMPAT_ERROR_NEED_SCSI_2_OR_HIGHER

Compatibility Error: Device SCSI version not 2 or


higher.

0x00010035

IR_LOGINFO_COMPAT_ERROR_SATA_48BIT_LBA_NOT_SUPPORTED

Compatibility Error: SATA device, 48-bit LBA not


supported.

0x00010036

IR_LOGINFO_COMPAT_ERROR_DEVICE_NOT_512_BYTE_BLOCK

Compatibility Error: Device does not have 512 byte


block sizes.

0x00010037

IR_LOGINFO_COMPAT_ERROR_VOLUME_TYPE_CHECK_FAILED

Compatibility Error: Volume Type check failed.

0x00010038

IR_LOGINFO_COMPAT_ERROR_UNSUPPORTED_VOLUME_TYPE

Compatibility Error: Volume Type is unsupported by


FW.

0x00010039

IR_LOGINFO_COMPAT_ERROR_DISK_TOO_SMALL

Compatibility Error: Disk drive too small for use in


volume.

0x0001003A IR_LOGINFO_COMPAT_ERROR_PHYS_DISK_NOT_FOUND

Compatibility Error: Phys disk for Create Volume not


found.

0x0001003B

Compatibility Error: membership count error, too


many or too few disks for volume type.

IR_LOGINFO_COMPAT_ERROR_MEMBERSHIP_COUNT

0x0001003C IR_LOGINFO_COMPAT_ERROR_NON_64K_STRIPE_SIZE

Compatibility Error: Disk stripe sizes must be 64-KB.

0x0001003D IR_LOGINFO_COMPAT_ERROR_IME_VOL_NOT_CURRENTLY_SUPPORTED Compatibility Error: IME size limited to < 2TB.


0x0001003E

IR_LOGINFO_COMPAT_ERROR_MEDIA_TYPE

The media type of the device is undefined.

0x00010050

IR_LOGINFO_DEV_FW_UPDATE_ERR_DFU_IN_PROGRESS

Device Firmware Update: DFU can only be started


once.

0x00010051

IR_LOGINFO_DEV_FW_UPDATE_ERR_DEVICE_IN_INVALID_STATE

Device Firmware Update: Volume must be


Optimal/Active/non-quiesced.

LSI Corporation Confidential | April 2009

Page 31

MPI Reply Message Codes for SAS

SAS Error Codes System Engineering Note

Table 4: MPI IOCLogInfo Codes for IR Code Segment (Continued)


Bits [23:0]

Message Code

Explanation

0x00010052

IR_LOGINFO_DEV_FW_UPDATE_ERR_INVALID_TIMEOUT

Device Firmware Update: DFU Timeout cannot be


zero.

0x00010053

IR_LOGINFO_DEV_FW_UPDATE_ERR_NO_TIMERS

Device Firmware Update: CREATE TIMER FAILED.

0x00010054

IR_LOGINFO_DEV_FW_UPDATE_ERR_READING_CFG_PAGE

Device Firmware Update: Failed to read


SAS_IO_UNIT_PG_1.

0x00010055

IR_LOGINFO_DEV_FW_UPDATE_ERR_PORT_IO_TIMEOUTS_REQUIRED

Device Firmware Update: Invalid SAS_IO_UNIT_PG_1


value(s).

0x00010056

IR_LOGINFO_DEV_FW_UPDATE_ERR_ALLOC_CFG_PAGE

Device Firmware Update: Unable to allocate memory


for page.

IOC_LOGINFO_PREFIX_IOP ((MPI_IOCLOGINFO_TYPE_SAS << MPI_IOCLOGINFO_TYPE_SHIFT) | IOC_LOGINFO_ORIGINATOR_IOP)


IOC_LOGINFO_PREFIX_PL ((MPI_IOCLOGINFO_TYPE_SAS << MPI_IOCLOGINFO_TYPE_SHIFT) | IOC_LOGINFO_ORIGINATOR_PL)
IOC_LOGINFO_PREFIX_IR ((MPI_IOCLOGINFO_TYPE_SAS << MPI_IOCLOGINFO_TYPE_SHIFT) | IOC_LOGINFO_ORIGINATOR_IR)

0x00040000

Page 32

MPI_IOCSTATUS_INTERNAL_ERROR

I/O aborted due to work around.

LSI Corporation Confidential | April 2009

You might also like