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