xref: /openbmc/linux/Documentation/firmware-guide/acpi/apei/output_format.rst (revision c39f2d9db0fd81ea20bb5cce9b3f082ca63753e2)
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