How Errors are Reported
PCI Express includes two methods of reporting errors:
Each reporting mechanism is described below.
Error Messages
As discussed previously, PCI reports errors via the PERR# and SERR# signals. Because PCI Express eliminates theses error-related signals, error messages have been defined to replace these signals by acting as virtual wires. Furthermore, these messages provide additional information that could not be conveyed directly via the PERR# and SERR# signals. This includes identification of the device that detected the error and an indication of the severity of each error.
Figure 10-4 illustrates the format of the error messages. Note that these packets are routed to the Root Complex for handling by system software. The message code defines the type of message being signaled. As one might guess, the specification defines three basic types of error messages shown in Table 10-1.

Table 10-1. Error Message Codes and Description|
30h | ERR_COR | used when a PCI Express device detects a correctable error | 31h | ERR_NONFATAL | used when a device detects a non-fatal, uncorrectable error | 33h | ERR_FATAL | used when a device detects a fatal, uncorrectable error |
Completion Status
PCI Express defines a completion status field within the completion header that enables the transaction completer to report errors back to the requester. Figure 10-5 illustrates the location of the completion field and Table 10-2 defines the completion values. Note that the shaded status entries represent error conditions that can be reported via error messages.

Table 10-2. Completion Code and Description|
000b | Successful Completion (SC) | 001b | Unsupported Request (UR) | 010b | Configuration Request Retry Status (CRS) | 011b | Completer Abort (CA) | 100b - 111b | Reserved |
|