1*deb95169SChangbin Du.. SPDX-License-Identifier: GPL-2.0 2*deb95169SChangbin Du 3*deb95169SChangbin Du================== 4*deb95169SChangbin DuAPEI output format 5*deb95169SChangbin Du================== 6*deb95169SChangbin Du 7*deb95169SChangbin DuAPEI uses printk as hardware error reporting interface, the output 8*deb95169SChangbin Duformat is as follow:: 9*deb95169SChangbin Du 10*deb95169SChangbin Du <error record> := 11*deb95169SChangbin Du APEI generic hardware error status 12*deb95169SChangbin Du severity: <integer>, <severity string> 13*deb95169SChangbin Du section: <integer>, severity: <integer>, <severity string> 14*deb95169SChangbin Du flags: <integer> 15*deb95169SChangbin Du <section flags strings> 16*deb95169SChangbin Du fru_id: <uuid string> 17*deb95169SChangbin Du fru_text: <string> 18*deb95169SChangbin Du section_type: <section type string> 19*deb95169SChangbin Du <section data> 20*deb95169SChangbin Du 21*deb95169SChangbin Du <severity string>* := recoverable | fatal | corrected | info 22*deb95169SChangbin Du 23*deb95169SChangbin Du <section flags strings># := 24*deb95169SChangbin Du [primary][, containment warning][, reset][, threshold exceeded]\ 25*deb95169SChangbin Du [, resource not accessible][, latent error] 26*deb95169SChangbin Du 27*deb95169SChangbin Du <section type string> := generic processor error | memory error | \ 28*deb95169SChangbin Du PCIe error | unknown, <uuid string> 29*deb95169SChangbin Du 30*deb95169SChangbin Du <section data> := 31*deb95169SChangbin Du <generic processor section data> | <memory section data> | \ 32*deb95169SChangbin Du <pcie section data> | <null> 33*deb95169SChangbin Du 34*deb95169SChangbin Du <generic processor section data> := 35*deb95169SChangbin Du [processor_type: <integer>, <proc type string>] 36*deb95169SChangbin Du [processor_isa: <integer>, <proc isa string>] 37*deb95169SChangbin Du [error_type: <integer> 38*deb95169SChangbin Du <proc error type strings>] 39*deb95169SChangbin Du [operation: <integer>, <proc operation string>] 40*deb95169SChangbin Du [flags: <integer> 41*deb95169SChangbin Du <proc flags strings>] 42*deb95169SChangbin Du [level: <integer>] 43*deb95169SChangbin Du [version_info: <integer>] 44*deb95169SChangbin Du [processor_id: <integer>] 45*deb95169SChangbin Du [target_address: <integer>] 46*deb95169SChangbin Du [requestor_id: <integer>] 47*deb95169SChangbin Du [responder_id: <integer>] 48*deb95169SChangbin Du [IP: <integer>] 49*deb95169SChangbin Du 50*deb95169SChangbin Du <proc type string>* := IA32/X64 | IA64 51*deb95169SChangbin Du 52*deb95169SChangbin Du <proc isa string>* := IA32 | IA64 | X64 53*deb95169SChangbin Du 54*deb95169SChangbin Du <processor error type strings># := 55*deb95169SChangbin Du [cache error][, TLB error][, bus error][, micro-architectural error] 56*deb95169SChangbin Du 57*deb95169SChangbin Du <proc operation string>* := unknown or generic | data read | data write | \ 58*deb95169SChangbin Du instruction execution 59*deb95169SChangbin Du 60*deb95169SChangbin Du <proc flags strings># := 61*deb95169SChangbin Du [restartable][, precise IP][, overflow][, corrected] 62*deb95169SChangbin Du 63*deb95169SChangbin Du <memory section data> := 64*deb95169SChangbin Du [error_status: <integer>] 65*deb95169SChangbin Du [physical_address: <integer>] 66*deb95169SChangbin Du [physical_address_mask: <integer>] 67*deb95169SChangbin Du [node: <integer>] 68*deb95169SChangbin Du [card: <integer>] 69*deb95169SChangbin Du [module: <integer>] 70*deb95169SChangbin Du [bank: <integer>] 71*deb95169SChangbin Du [device: <integer>] 72*deb95169SChangbin Du [row: <integer>] 73*deb95169SChangbin Du [column: <integer>] 74*deb95169SChangbin Du [bit_position: <integer>] 75*deb95169SChangbin Du [requestor_id: <integer>] 76*deb95169SChangbin Du [responder_id: <integer>] 77*deb95169SChangbin Du [target_id: <integer>] 78*deb95169SChangbin Du [error_type: <integer>, <mem error type string>] 79*deb95169SChangbin Du 80*deb95169SChangbin Du <mem error type string>* := 81*deb95169SChangbin Du unknown | no error | single-bit ECC | multi-bit ECC | \ 82*deb95169SChangbin Du single-symbol chipkill ECC | multi-symbol chipkill ECC | master abort | \ 83*deb95169SChangbin Du target abort | parity error | watchdog timeout | invalid address | \ 84*deb95169SChangbin Du mirror Broken | memory sparing | scrub corrected error | \ 85*deb95169SChangbin Du scrub uncorrected error 86*deb95169SChangbin Du 87*deb95169SChangbin Du <pcie section data> := 88*deb95169SChangbin Du [port_type: <integer>, <pcie port type string>] 89*deb95169SChangbin Du [version: <integer>.<integer>] 90*deb95169SChangbin Du [command: <integer>, status: <integer>] 91*deb95169SChangbin Du [device_id: <integer>:<integer>:<integer>.<integer> 92*deb95169SChangbin Du slot: <integer> 93*deb95169SChangbin Du secondary_bus: <integer> 94*deb95169SChangbin Du vendor_id: <integer>, device_id: <integer> 95*deb95169SChangbin Du class_code: <integer>] 96*deb95169SChangbin Du [serial number: <integer>, <integer>] 97*deb95169SChangbin Du [bridge: secondary_status: <integer>, control: <integer>] 98*deb95169SChangbin Du [aer_status: <integer>, aer_mask: <integer> 99*deb95169SChangbin Du <aer status string> 100*deb95169SChangbin Du [aer_uncor_severity: <integer>] 101*deb95169SChangbin Du aer_layer=<aer layer string>, aer_agent=<aer agent string> 102*deb95169SChangbin Du aer_tlp_header: <integer> <integer> <integer> <integer>] 103*deb95169SChangbin Du 104*deb95169SChangbin Du <pcie port type string>* := PCIe end point | legacy PCI end point | \ 105*deb95169SChangbin Du unknown | unknown | root port | upstream switch port | \ 106*deb95169SChangbin Du downstream switch port | PCIe to PCI/PCI-X bridge | \ 107*deb95169SChangbin Du PCI/PCI-X to PCIe bridge | root complex integrated endpoint device | \ 108*deb95169SChangbin Du root complex event collector 109*deb95169SChangbin Du 110*deb95169SChangbin Du if section severity is fatal or recoverable 111*deb95169SChangbin Du <aer status string># := 112*deb95169SChangbin Du unknown | unknown | unknown | unknown | Data Link Protocol | \ 113*deb95169SChangbin Du unknown | unknown | unknown | unknown | unknown | unknown | unknown | \ 114*deb95169SChangbin Du Poisoned TLP | Flow Control Protocol | Completion Timeout | \ 115*deb95169SChangbin Du Completer Abort | Unexpected Completion | Receiver Overflow | \ 116*deb95169SChangbin Du Malformed TLP | ECRC | Unsupported Request 117*deb95169SChangbin Du else 118*deb95169SChangbin Du <aer status string># := 119*deb95169SChangbin Du Receiver Error | unknown | unknown | unknown | unknown | unknown | \ 120*deb95169SChangbin Du Bad TLP | Bad DLLP | RELAY_NUM Rollover | unknown | unknown | unknown | \ 121*deb95169SChangbin Du Replay Timer Timeout | Advisory Non-Fatal 122*deb95169SChangbin Du fi 123*deb95169SChangbin Du 124*deb95169SChangbin Du <aer layer string> := 125*deb95169SChangbin Du Physical Layer | Data Link Layer | Transaction Layer 126*deb95169SChangbin Du 127*deb95169SChangbin Du <aer agent string> := 128*deb95169SChangbin Du Receiver ID | Requester ID | Completer ID | Transmitter ID 129*deb95169SChangbin Du 130*deb95169SChangbin DuWhere, [] designate corresponding content is optional 131*deb95169SChangbin Du 132*deb95169SChangbin DuAll <field string> description with * has the following format:: 133*deb95169SChangbin Du 134*deb95169SChangbin Du field: <integer>, <field string> 135*deb95169SChangbin Du 136*deb95169SChangbin DuWhere value of <integer> should be the position of "string" in <field 137*deb95169SChangbin Dustring> description. Otherwise, <field string> will be "unknown". 138*deb95169SChangbin Du 139*deb95169SChangbin DuAll <field strings> description with # has the following format:: 140*deb95169SChangbin Du 141*deb95169SChangbin Du field: <integer> 142*deb95169SChangbin Du <field strings> 143*deb95169SChangbin Du 144*deb95169SChangbin DuWhere each string in <fields strings> corresponding to one set bit of 145*deb95169SChangbin Du<integer>. The bit position is the position of "string" in <field 146*deb95169SChangbin Dustrings> description. 147*deb95169SChangbin Du 148*deb95169SChangbin DuFor more detailed explanation of every field, please refer to UEFI 149*deb95169SChangbin Duspecification version 2.3 or later, section Appendix N: Common 150*deb95169SChangbin DuPlatform Error Record. 151