| APEI output format |
| ~~~~~~~~~~~~~~~~~~ |
| |
| APEI uses printk as hardware error reporting interface, the output |
| format is as follow. |
| |
| <error record> := |
| APEI generic hardware error status |
| severity: <integer>, <severity string> |
| section: <integer>, severity: <integer>, <severity string> |
| flags: <integer> |
| <section flags strings> |
| fru_id: <uuid string> |
| fru_text: <string> |
| section_type: <section type string> |
| <section data> |
| |
| <severity string>* := recoverable | fatal | corrected | info |
| |
| <section flags strings># := |
| [primary][, containment warning][, reset][, threshold exceeded]\ |
| [, resource not accessible][, latent error] |
| |
| <section type string> := generic processor error | memory error | \ |
| PCIe error | unknown, <uuid string> |
| |
| <section data> := |
| <generic processor section data> | <memory section data> | \ |
| <pcie section data> | <null> |
| |
| <generic processor section data> := |
| [processor_type: <integer>, <proc type string>] |
| [processor_isa: <integer>, <proc isa string>] |
| [error_type: <integer> |
| <proc error type strings>] |
| [operation: <integer>, <proc operation string>] |
| [flags: <integer> |
| <proc flags strings>] |
| [level: <integer>] |
| [version_info: <integer>] |
| [processor_id: <integer>] |
| [target_address: <integer>] |
| [requestor_id: <integer>] |
| [responder_id: <integer>] |
| [IP: <integer>] |
| |
| <proc type string>* := IA32/X64 | IA64 |
| |
| <proc isa string>* := IA32 | IA64 | X64 |
| |
| <processor error type strings># := |
| [cache error][, TLB error][, bus error][, micro-architectural error] |
| |
| <proc operation string>* := unknown or generic | data read | data write | \ |
| instruction execution |
| |
| <proc flags strings># := |
| [restartable][, precise IP][, overflow][, corrected] |
| |
| <memory section data> := |
| [error_status: <integer>] |
| [physical_address: <integer>] |
| [physical_address_mask: <integer>] |
| [node: <integer>] |
| [card: <integer>] |
| [module: <integer>] |
| [bank: <integer>] |
| [device: <integer>] |
| [row: <integer>] |
| [column: <integer>] |
| [bit_position: <integer>] |
| [requestor_id: <integer>] |
| [responder_id: <integer>] |
| [target_id: <integer>] |
| [error_type: <integer>, <mem error type string>] |
| |
| <mem error type string>* := |
| unknown | no error | single-bit ECC | multi-bit ECC | \ |
| single-symbol chipkill ECC | multi-symbol chipkill ECC | master abort | \ |
| target abort | parity error | watchdog timeout | invalid address | \ |
| mirror Broken | memory sparing | scrub corrected error | \ |
| scrub uncorrected error |
| |
| <pcie section data> := |
| [port_type: <integer>, <pcie port type string>] |
| [version: <integer>.<integer>] |
| [command: <integer>, status: <integer>] |
| [device_id: <integer>:<integer>:<integer>.<integer> |
| slot: <integer> |
| secondary_bus: <integer> |
| vendor_id: <integer>, device_id: <integer> |
| class_code: <integer>] |
| [serial number: <integer>, <integer>] |
| [bridge: secondary_status: <integer>, control: <integer>] |
| [aer_status: <integer>, aer_mask: <integer> |
| <aer status string> |
| [aer_uncor_severity: <integer>] |
| aer_layer=<aer layer string>, aer_agent=<aer agent string> |
| aer_tlp_header: <integer> <integer> <integer> <integer>] |
| |
| <pcie port type string>* := PCIe end point | legacy PCI end point | \ |
| unknown | unknown | root port | upstream switch port | \ |
| downstream switch port | PCIe to PCI/PCI-X bridge | \ |
| PCI/PCI-X to PCIe bridge | root complex integrated endpoint device | \ |
| root complex event collector |
| |
| if section severity is fatal or recoverable |
| <aer status string># := |
| unknown | unknown | unknown | unknown | Data Link Protocol | \ |
| unknown | unknown | unknown | unknown | unknown | unknown | unknown | \ |
| Poisoned TLP | Flow Control Protocol | Completion Timeout | \ |
| Completer Abort | Unexpected Completion | Receiver Overflow | \ |
| Malformed TLP | ECRC | Unsupported Request |
| else |
| <aer status string># := |
| Receiver Error | unknown | unknown | unknown | unknown | unknown | \ |
| Bad TLP | Bad DLLP | RELAY_NUM Rollover | unknown | unknown | unknown | \ |
| Replay Timer Timeout | Advisory Non-Fatal |
| fi |
| |
| <aer layer string> := |
| Physical Layer | Data Link Layer | Transaction Layer |
| |
| <aer agent string> := |
| Receiver ID | Requester ID | Completer ID | Transmitter ID |
| |
| Where, [] designate corresponding content is optional |
| |
| All <field string> description with * has the following format: |
| |
| field: <integer>, <field string> |
| |
| Where value of <integer> should be the position of "string" in <field |
| string> description. Otherwise, <field string> will be "unknown". |
| |
| All <field strings> description with # has the following format: |
| |
| field: <integer> |
| <field strings> |
| |
| Where each string in <fields strings> corresponding to one set bit of |
| <integer>. The bit position is the position of "string" in <field |
| strings> description. |
| |
| For more detailed explanation of every field, please refer to UEFI |
| specification version 2.3 or later, section Appendix N: Common |
| Platform Error Record. |